这几天在弄WebService的东西,是使用XFire+spring的。走了不少的弯路,差点想放弃了。为了日后方便,先记下这几天的收获。
刚开始的时候,不知道xfire还有针对spring的版本,直接将pojo expose成为web service。最后发现竟然不能够使用spring的注入功能。换句话说,即如果这个pojo使用了spring的注入机制,注入了其他bean的话,无法注入。
在看了网上无数篇copy的文章后,发现需要另外整合XFire+spring。先整理如下:
1. 制作web service的service类。这里需要同时具有接口和实现类。
我这里假设有一个ExCommService和他的接口IExCommService。ExCommService中是有使用spring注入了属性的。并通过spring配置其为一个Service,名字为exCommService。
2. 通过myeclipse增加XFire的code library和HTTP Client library。
3. 修改web配置,令符合http://{ip}:{port}/{prjName}/services/*的url才作为web service的方法暴露给用户。
3.1 增加DispatcherServlet。
因为spring与xfire的整合是通过DispatcherServlet完成的,所以必须要配置。
<servlet-name>dipatcher</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<!-- 我的配置文件都是以config_开头的 -->
<param-value>/WEB-INF/config_*.xml</param-value>
</init-param>
<load-on-startup>0</load-on-startup>
</servlet>
3.2 配置mapping
<servlet-mapping>
<servlet-name>dipatcher</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>dipatcher</servlet-name>
<url-pattern>/services/*</url-pattern>
</servlet-mapping>
4. 配置web service对应的配置文件,config_webservice.xml
这个文件一般需要自己来建立。因为你肯定也不希望把所有的配置都放在dipatcher-servlet.xml中吧?
4.1 为spring mvc和xfire做配置设定
这点很重要,没有这句话,在尝试看wsdl文件时会报错:“No adapter for handler [....XFireExporter@60e78]: Does your handler implement a supported interface like Controller? ”
<bean id="controllerHandlerAdapter" class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"/>
4.2 加载xfire为spring定制的一些bean
<import resource="classpath:org/codehaus/xfire/spring/xfire.xml"/>
4.3 定义一个web service的父bean,这样可以节省配置。这些都是死配置,不解释了。
<bean id="baseWebService"
class="org.codehaus.xfire.spring.remoting.XFireExporter" abstract="true">
<property name="serviceFactory" ref="xfire.serviceFactory" />
<property name="xfire" ref="xfire" />
</bean>
4.4 定义web service的相关信息
<bean id="exCommService.xfire" parent="baseWebService">
<property name="serviceBean" ref="exCommService" />
<property name="serviceClass" value="com.wtmec.eccn.ws.IExCommService" />
<property name="namespace" value="http://10.4.1.16:8080/eccn" />
</bean>
其中serviceBean属性代表需要作为web service的bean在spring中定义的名称。参考第1点;
serviceClass属性代表serviceBean所实现的接口的完整路径。
namespace属性代表的是将来service端应该通过哪个链接访问我们的web service。
5. 配置HandlerMapping。spring需要这个配置来将用户的请求转向我们的service Bean中去。
<bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
<property name="urlMap">
<map>
<entry key="/exCommService"><ref bean="exCommService.xfire"/></entry>
</map>
</property>
</bean>
经过上面的配置后,启动tomcat,然后通过:http://10.4.1.16:8080/eccn/services/exCommService?wsdl就可以访问wsdl文件了。
下面来讲客户端调用。===================
1. 加入跟server端一样的library。参考上面的第1点
2. 将serviceClass对应的接口加入客户端中。
3. 书写调用代码: PS:代码太简单,不另外注释了。
private String url = "http://10.4.1.16:8080/eccn/services/exCommService";
public String checkLicenseByOB(String obno) throws Exception{
Service serviceModel = new ObjectServiceFactory().create(IExCommService.class);
IExCommService service = (IExCommService)
new XFireProxyFactory().create(serviceModel, url);
return service.checkLicenseByOB(obno);
}
在生成接口对应的service后,用户就可以像调用本地方法一样调用远程的方法了。
最后要感谢一篇国外的帖子。他解决了我的问题
http://forum.springsource.org/archive/index.php/t-26378.html
分享到:
相关推荐
总结来说,Spring与XFire的结合为Java Web服务开发提供了强大的工具集,通过Spring的管理和配置能力,以及XFire的Web服务实现,我们可以构建出易于维护、高度模块化的服务架构。对于开发者而言,理解和掌握这种整合...
在本教程中,我们将深入探讨如何使用Spring和XFire编写Web服务的完整配置,并通过实际案例来学习这一过程。 首先,我们需要了解Spring和XFire的基础。Spring框架提供了一个名为Spring-WS的模块,专门用于构建Web...
标题 "Spring和XFIRE结合" 暗示了本文将探讨如何在Java应用程序开发中整合Spring框架与XFire服务框架,以实现轻量级、基于XML的Web服务。Spring是Java领域广泛使用的依赖注入(DI)和面向切面编程(AOP)框架,而...
总的来说,通过上述配置,我们可以创建一个使用Spring和XFire的Web服务应用程序,实现服务的发布和调用。这种集成方式既保持了Spring的灵活性,又充分利用了XFire的Web服务特性,为开发高效、可维护的Web服务提供了...
以下是关于"Xfire配置Web Service+Spring+Hibernate详细配置流程"的知识点详解: 1. **Spring框架**: Spring是Java企业级应用开发的首选框架,提供依赖注入(DI)和面向切面编程(AOP)。在Web服务场景中,Spring...
描述中提到的博客链接虽然无法直接访问,但根据常规的博客内容,博主可能详细解释了如何将Spring与Xfire结合,以及如何通过注解的方式来替代传统的XML配置,以实现更加简洁、直观的代码结构。 在使用注解的方式时,...
结合XFire和Spring,我们可以构建一个安全的Web服务环境。首先,Spring Security可以用来实现用户的登录认证,包括存储和验证用户名、密码,以及处理会话超时和并发会话控制。其次,XFire可以配置为只接受经过Spring...
将这两者结合可以利用 Spring 的强大功能来管理和配置 XFire,同时保持代码的简洁和模块化。 ### Spring 集成 XFire 的优势 1. **依赖注入(Dependency Injection)**:Spring 的核心特性之一,通过依赖注入可以...
项目中包含的`Spring+xFire+wss4j配置Helloworld完整版.doc`文档,应该详细阐述了每个步骤,包括项目结构、配置文件的设置以及如何运行服务端和客户端。而`xalan.jar`是一个XSLT处理库,可能在转换XML文档时被用到。...
在提供的"testspringandxfire"压缩包文件中,可能包含了示例代码、配置文件或者测试用例,帮助用户更好地理解和实践Spring与XFire的整合过程。对这些文件进行研究和实践,将有助于深入理解如何在实际项目中运用这种...
Spring+xFire 实现 WebService 是一种在 Java 开发中创建和使用 Web 服务的方式,它结合了 Spring 框架的灵活性和 xFire(现在称为 Apache CXF)的 Web 服务功能。以下是对这个技术栈的详细说明: 1. **环境配置**...
标题 "spring,xfire开发soap接口" 暗示了我们即将探讨的是如何使用Spring框架与XFire库来创建SOAP(简单对象访问协议)服务。SOAP是一种基于XML的协议,常用于Web服务,允许不同系统间交换结构化信息。在这个话题中...
在IT行业中,构建Web服务是常见的任务,而Spring框架与XFire的结合提供了一种高效且灵活的方式来创建和消费Web服务。本篇文章将深入探讨如何使用Spring和XFire来实现Web服务,以及这两个组件的核心功能和它们之间的...
【描述】:这篇博客文章通过一个实际的案例,探讨了如何将Web服务与Spring框架相结合,使用XFire进行开发。XFire是Spring框架早期用于实现Web服务的一个库,它提供了一种简单而高效的方式来创建和消费SOAP服务。虽然...
标题 "spring webService hibernate结合xfire" 描述了一个整合技术的应用,即Spring、Web服务(WebService)和Hibernate框架与Xfire的结合。在这个项目中,开发者可能想要创建一个基于Java的Web服务,该服务能够利用...
首先,我们需要创建一个Spring配置文件(如`applicationContext.xml`),在这个文件中定义Bean来配置我们的服务实现类和XFire相关的配置。例如,我们可以声明一个服务接口的实现类Bean,然后使用Spring的`...
当Spring与XFire结合时,可以提供一个优雅的、面向切面的Web服务解决方案。本文将深入探讨如何使用Spring与XFire集成来实现Web服务。 首先,我们需要理解Spring的核心特性。Spring是一个轻量级的容器,它提供了依赖...