`
getclass
  • 浏览: 44391 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Spring + CXF 集成, 解决 Spring 注入 bean 为空的问题

阅读更多

 

要把项目里的业务层,用 WebService 有选择的发布出来.

碰到调用 WebService 发布的服务时,业务层中 Spring 注入的 Bean 都为空的情况.(用JUnit调用服务是正常的)

好是一顿折腾,这个问题很普遍,不知道为什么网上好的解答并不多,所以把解决过程和大家分享.


问题分析, 业务层 Bean 使用的 Spring 容器和调用 WebService 服务中使用的不是同一个 Spring 容器. 

所以,在 WebService 中获得不到已经注入的业务 Bean.


为了解决这个问题,先后用到 Axis1,Axis2 和 xfire. 

最后经过徐培成(传智播客授业恩师)的指导,发现最新发布的 CXF(xfire改后的名), 解决这个问题很干脆. 

 

 

 

1.  apache-cxf-2.4.1 需要导入的包. 和其他框架集成的时候,注意去掉同名的包.

 

 

commons-logging-1.1.1.jar
cxf-2.4.1.jar
geronimo-activation_1.1_spec-1.1.jar
geronimo-annotation_1.0_spec-1.1.1.jar
geronimo-javamail_1.4_spec-1.7.1.jar
geronimo-servlet_3.0_spec-1.0.jar
geronimo-ws-metadata_2.0_spec-1.1.3.jar
jaxb-api-2.2.1.jar
jaxb-impl-2.2.1.1.jar
jaxb-xjc-2.2.1.1.jar
jetty-server-7.4.2.v20110526.jar
jetty-util-7.4.2.v20110526.jar
neethi-3.0.0.jar
saaj-api-1.3.jar
saaj-impl-1.3.2.jar
wsdl4j-1.6.2.jar
wss4j-1.6.1.jar
xmlbeans-2.4.0.jar
xmlschema-core-2.0.jar

 

 

2.  web.xml

 

 

  <!-- WebService.CXF -->
  <servlet>
        <servlet-name>CXFServlet</servlet-name>
        <servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class>
  </servlet>
  <servlet-mapping>
        <servlet-name>CXFServlet</servlet-name>
        <url-pattern>/services/*</url-pattern>
  </servlet-mapping>

 

 

  注意:这里要是用到了 struts 等,要看一下过滤器或 servlet.

 

 

3. 在 Spring 的配置文件中配置. 这个是解决问题的关键.

 

 

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:jaxws="http://cxf.apache.org/jaxws"
	xsi:schemaLocation="
	http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
	http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd">

	<import resource="classpath:META-INF/cxf/cxf.xml" />
	<import resource="classpath:META-INF/cxf/cxf-extension-soap.xml" />
	<import resource="classpath:META-INF/cxf/cxf-servlet.xml" />

 	<bean id="grupCustService" class="com.test.service.impl.GrupCustService"/>
 	
	<jaxws:endpoint id="grupCustServiceweb" address="/GrupCustServiceWeb"
		implementorClass="com.test.service.impl.GrupCustService">
		<jaxws:implementor ref="grupCustService"/>
	</jaxws:endpoint>

</beans>
  

 

解决 Spring 注入 Bean 为空的情况,这个文件的配置是关键.

<jaxws:implementor ref="grupCustService"/>中, grupCustService 是需要发布的实现类,在 Spring 容器中注入的名.

只有加上这句, 就可以很顺利的获得业务 Bean.



 

 

 4. Java 类

 接口类
 @WebService (必须要有)
public interface HelloWorld {
    String sayHello(@WebParam(name="text") String text);
}
 
实现类
括号里的参数可以不写,这个和自动生成的客户端的包有关系,建议写上.
@WebService(endpointInterface = "com.test.service.HelloWorld", serviceName = "HelloWorld")
public class HelloWorldImpl implements HelloWorld {
 
    public String sayHello(String text) {
        return "Hello " + text;
    }
}
 
5. 获得 wsdl

在 IE 中访问 http://localhost:8080/项目名/services/GrupCustServiceWeb?wsdl
 

 

分享到:
评论

相关推荐

    myBatis+spring+cxf 框架简单整合(包jar)

    Spring框架则是一个全面的企业级应用开发框架,它提供了一种依赖注入(DI)和面向切面编程(AOP)的解决方案,简化了Java应用的开发。Spring还包含了对事务管理、数据访问/集成、MVC、Web服务等多种功能的支持。 ...

    spring+cxf 集成

    这个类可以是普通的Java类,也可以是Spring的bean,这样可以利用Spring的依赖注入和其他特性。 4. **配置服务**:在Spring配置文件中,使用`&lt;jaxws:endpoint&gt;`标签来声明CXF服务。在这个标签中,你需要指定服务接口...

    Spring+CXF+tomcat开发webservice

    在IT行业中,构建Web服务是常见的任务,Spring、CXF和Tomcat的组合是一个流行的解决方案。这个项目"Spring+CXF+tomcat开发webservice"旨在教你如何利用这些技术搭建一个完整的Web服务环境,包括服务端和服务端客户端...

    Spring+cxf请求webService

    在Java开发领域,Spring框架以其强大的依赖注入和面向切面编程能力被广泛应用,而CXF则是一个优秀的开源服务开发框架,支持SOAP和RESTful服务。当Spring与CXF结合使用时,可以方便地创建和消费Web服务。本篇文章将...

    CXF2.1.3+spring3.0+struts2.3.4

    【标题】"CXF2.1.3+spring3.0+struts2.3.4" 描述了集成这三大框架实现Web服务的场景。CXF是一个开源的服务框架,它允许开发人员创建和消费各种Web服务。Spring是Java企业级应用的核心框架,提供了依赖注入和面向切面...

    Spring+cxf配置接口+mybatis配置

    在Spring中集成CXF,可以通过Spring的CXFEndpoint或JAXWS-RI的EndpointPublisher来暴露服务。同时,可以利用CXF的ClientProxyFactoryBean创建服务消费者,以便于调用远程接口。 MyBatis的配置主要包括数据源、...

    spring+cxf小demo

    【Spring+CXF小Demo】是基于Java开发的一个入门级示例,主要展示了如何结合Spring框架与CXF库来创建和消费Web服务。...通过实践这个Demo,开发者可以深入理解Spring和CXF的集成,为以后的项目开发打下坚实的基础。

    Spring+cxf=webservice 的jar包1

    【Spring+cxf=WebService】是将Spring框架与Apache CXF集成来实现Web服务的一种常见方式。Spring是一个强大的Java企业级应用开发框架,它提供了一种模块化和灵活的方式来组织和管理应用程序的组件。而CXF则是一个...

    spring+srpingmvc+mybatis+cxf

    1. **Spring**:Spring 是一个全面的Java应用开发框架,它提供了依赖注入(DI)和面向切面编程(AOP)等功能,以简化应用的开发和管理。在SSM中,Spring作为基础框架,负责管理整个系统的组件,包括数据库操作、业务...

    Spring+CXF+MyBatis整合客户端代码

    Spring可以与CXF集成,通过Spring的JAX-WS或JAX-RS支持,轻松创建并管理CXF客户端。这样,客户端只需通过接口调用,即可透明地调用远程Web服务。 3. **MyBatis框架**:MyBatis允许开发者编写自定义的SQL,存储过程...

    spring+cxf的webservice

    总的来说,Spring+CXF的组合提供了一种强大且灵活的方式来开发和部署Web服务,它结合了Spring的易用性和CXF的Web服务功能,使得企业级应用能够轻松地与其他系统进行集成。通过提供的文档和JAR包,开发者可以深入学习...

    spring + cxf + restful

    本篇文章将深入解析这些技术,并结合"spring + cxf + restful"的实践项目"taiping-accountserver-demo",探讨如何将它们融合在一起,为初学者提供快速上手的指导。 首先,Spring是一个开源的Java应用框架,以其依赖...

    Spring+CXF 全注解版

    Apache CXF是一个开源的服务框架,它允许开发者创建和消费各种Web服务,而Spring框架则是一个广泛使用的依赖注入(DI)和面向切面编程(AOP)工具,两者结合可以提供一个高效、灵活的服务实现环境。 **1. Spring...

    maven+spring+cxf webservice demo

    Maven是项目管理和构建工具,Spring提供了强大的依赖注入和面向切面编程支持,而CXF则是一个用于构建和集成Web服务的开源框架。 【描述】"maven+spring+cxf 的webservice开发源码,欢迎大家指点,谢谢"表明这个项目...

    spring+cxf编写简单的webservice接口

    4. **配置Spring**:接下来,我们需要在Spring配置文件中声明CXF的bean,包括Servlet或JAX-WS的Endpoint。这些配置将告诉Spring如何启动和管理Web服务。通常,我们需要配置服务的地址、接口类以及其实现类。 5. **...

    webservice=maven+spring+cxf

    【标题】"webservice=...通过研究这两个项目,你可以学习到如何在 Maven 项目中集成 Spring 和 CXF,如何编写和发布 Web 服务,以及如何在 Java 客户端中消费这些服务。这将有助于提升你在 Web 服务开发领域的技能。

    Spring+CXF 发布WebService服务

    这个过程中,Spring负责管理和依赖注入,而CXF则负责处理Web服务的通信细节,两者结合提供了一种强大且灵活的解决方案。在实际开发中,可以根据项目的具体需求,对这些步骤进行调整和优化,以达到最佳的效果。

    Spring + CXF + 注解方式(webService)

    在实践中,理解并调试CXF和Spring的源码可以帮助我们更好地解决问题,优化性能,以及定制化服务行为。 至于“工具”标签,这可能指的是开发者可能会用到的一些辅助工具,例如IDE(如IntelliJ IDEA或Eclipse)、构建...

    spring4+cxf3

    通过Spring的依赖注入和管理能力,可以轻松地集成其他服务或组件,实现服务间的协同工作。 总的来说,"spring4+cxf3"的整合是现代企业级应用开发中的常见实践,它结合了Spring的强大功能和CXF的Web服务处理能力,为...

    Apache CXF2+Spring2.5轻松实现WebService

    Apache CXF和Spring提供了丰富的扩展点,可以集成如Spring Security来控制访问权限,使用Spring AOP来处理事务,以及通过CXF的拦截器机制来实现自定义的日志、验证等功能。 总结来说,Apache CXF 2与Spring 2.5的...

Global site tag (gtag.js) - Google Analytics