通过Xfire开发WebService容易上手,而且在性能上也有一定的优越性,现在很多人都在使用它进行WS的开发,由于公司需要,我也参加public class ServiceTest extends AbstractSpringTest了这部分的开发。
由于需要,要进行单元测试,在xfire中提供了一个专门设计的单元测试的基类,org.codehaus.xfire.spring.AbstractSpringTest,我们想进行单元测试的话,用这个基类进行很方便,只需继承这个类即可。
比如,我这里写一个测试类:
其中的createContext()方法是继承自父类的,这个类用来初始化配置,进行服务的初始化工作,同样是在这个类中,我写了一个得到服务接口的方法,也就是可以直接进行调用的接口,实际上这里是得到的服务调用的一个代理类,这个代理类会实现服务接口:
这里要注意了,看我上边方法中有这一句:
XFireProxyFactory factory = new XFireProxyFactory(XFireFactory
.newInstance().getXFire());
好多教程上都会强调这里,这个在启动服务后是要这么用的,但是现在我们用的是本地传输,客户端和服务器是运行在一个JVM中的,这个时候我们一定要把红色部分改为:
getXfire();
另外LOCALURL的格式一定要是"xfire.local://你的服务名称",通过调用getServiceProxyInterface方法,返回接口的一个代理对象,这样便可能过接口来访问这个对象的方法了。网上相关资料也反复强调getXfire()及url格式这一块。