xfire本地调试方法(不必启动服务器)
2009-05-05 20:38
274 查看
通过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格式这一块。
由于需要,要进行单元测试,在xfire中提供了一个专门设计的单元测试的基类,org.codehaus.xfire.spring.AbstractSpringTest,我们想进行单元测试的话,用这个基类进行很方便,只需继承这个类即可。
比如,我这里写一个测试类:
import org.apache.xbean.spring.context.ClassPathXmlApplicationContext; import org.apache.xbean.spring.context.FileSystemXmlApplicationContext; import org.codehaus.xfire.spring.AbstractXFireSpringTest; import org.springframework.context.ApplicationContext; public class ServiceTest extends AbstractXFireSpringTest { @Override protected ApplicationContext createContext() { // TODO Auto-generated method stub // return new // ClassPathXmlApplicationContext("classpath:applicatiFonContext.xml"); return new FileSystemXmlApplicationContext("/WEB-INF/applicationContext.xml"); } }
其中的createContext()方法是继承自父类的,这个类用来初始化配置,进行服务的初始化工作,同样是在这个类中,我写了一个得到服务接口的方法,也就是可以直接进行调用的接口,实际上这里是得到的服务调用的一个代理类,这个代理类会实现服务接口:
import org.apache.xbean.spring.context.ClassPathXmlApplicationContext; import org.apache.xbean.spring.context.FileSystemXmlApplicationContext; import org.codehaus.xfire.spring.AbstractXFireSpringTest; import org.springframework.context.ApplicationContext; public class ServiceTest extends AbstractXFireSpringTest { private String LOCALURL = "xfire.local://IHelloWorld"; @Override protected ApplicationContext createContext() { // TODO Auto-generated method stub // return new // ClassPathXmlApplicationContext("classpath:applicatiFonContext.xml"); return new FileSystemXmlApplicationContext("/WEB-INF/applicationContext.xml"); } /** * 传入一个API的接口,生成这个接口的服务调用代理类 * * @param service * @return */ public Object getServiceProxyInterface(Class service) { Service serviceModel = new ObjectServiceFactory().create(service); XFireProxyFactory factory = new XFireProxyFactory(XFireFactory .newInstance().getXFire()); try { return factory.create(serviceModel, LOCALURL); } catch (MalformedURLException e) { // TODO Auto-generated catch block e.printStackTrace(); } return null; } }
这里要注意了,看我上边方法中有这一句:
XFireProxyFactory factory = new XFireProxyFactory(XFireFactory
.newInstance().getXFire());
好多教程上都会强调这里,这个在启动服务后是要这么用的,但是现在我们用的是本地传输,客户端和服务器是运行在一个JVM中的,这个时候我们一定要把红色部分改为:
getXfire();
另外LOCALURL的格式一定要是"xfire.local://你的服务名称",通过调用getServiceProxyInterface方法,返回接口的一个代理对象,这样便可能过接口来访问这个对象的方法了。网上相关资料也反复强调getXfire()及url格式这一块。
相关文章推荐
- 无法在WEB服务器上启动调试"解决方法大全
- 无法在Web服务器上启动调试,未将项目配置为进行调试的解决方法
- 使用sublime server启动本地服务器进行调试
- “无法在Web服务器上启动调试.你不具备调试此程序的权限,此项目的URL位于Internet区域”的解决方法
- VS2003的调试症状:“试图运行项目时出错:无法在web服务器上启动调试。”的解决方法
- 访问 IIS 元数据库失败 或 W3SVC 的访问权问题解决方法 或 无法在Web服务器上启动调试
- vs2008“无法在web服务器上启动调试”解决方法
- vs2015启动网站调试提示 HTTP 错误 403.14 - Forbidden Web 服务器被配置为不列出此目录的内容。 解决方法
- 无法在web服务器上启动调试,web服务器配置不正确的解决方法————转载在百度
- webservice Server Error in '/' Application 本地调试没错,服务器上就错误的解决方法
- VS2010中WCF配置web服务器上无法启动调试解决方法
- Visual Studio提示“无法启动IIS Express Web服务器”的解决方法 vs调试显示无法显示此页面 ,vs调试浏览器白页
- vs2015启动网站调试提示 HTTP 错误 403.14 - Forbidden Web 服务器被配置为不列出此目录的内容。 解决方法
- 解决在myeclipse中启动服务器就进入调试模式的方法
- 【转】"无法在web服务器上启动调试"的解决方法(VS2008 + IIS + Windows XP SP3)
- "无法在web服务器上启动调试,未将项目配置为进行调试"解决方法
- vs 2005调试程序是出现无法在web服务器上启动调试,调试失败的解决方法。
- Visual Studio提示“无法启动IIS Express Web服务器”的解决方法 vs调试显示无法显示此页面 ,vs调试浏览器白页
- 微信支付证书问题C#使用Https访问加载SSL证书本地调试正常服务器IIS内部错误解决方法
- 无法在 Web 服务器上启动调试。与 Web 服务器通信时出现身份验证错误,解决方法!