`

CXF和Sprining整合

 
阅读更多

cxf是webservice的一个框架,这里记录一下Spring和cxf的整合

我这里使用的是maven整合的项目

服务器端代码编写如下:

pom.xml代码如下:

写道
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>cxfTest</groupId>
<artifactId>cxfTest</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>war</packaging>

<properties>
<spring.version>3.0.5.RELEASE</spring.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.encoding>UTF-8</maven.compiler.encoding>
</properties>

<dependencies>

<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-tx</artifactId>
<version>${spring.version}</version>
</dependency>
<!--这部分是cxf所依赖的包 -->
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-rt-frontend-jaxws</artifactId>
<version>2.2.5</version>
</dependency>
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-rt-transports-http</artifactId>
<version>2.2.5</version>
</dependency>
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-rt-ws-rm</artifactId>
<version>2.2.5</version>
</dependency>
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-rt-ws-security</artifactId>
<version>2.2.5</version>
</dependency>
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-rt-ws-addr</artifactId>
<version>2.2.5</version>
</dependency>
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-rt-ws-policy</artifactId>
<version>2.2.5</version>
</dependency>
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-common-utilities</artifactId>
<version>2.2.5</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>3.7</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>3.6</version>
</dependency>

</dependencies>
</project>

 

web.xml配置如下:

写道
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
version="2.5">
<display-name>cxftest</display-name>

<!-- 加载Spring容器配置 -->
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>

<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:spring-config.xml</param-value>
</context-param>

<!-- Filter 定义 -->
<!-- Character Encoding filter -->
<filter>
<filter-name>encodingFilter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
<init-param>
<param-name>forceEncoding</param-name>
<param-value>true</param-value>
</init-param>
</filter>


<listener>
<listener-class>org.springframework.web.util.IntrospectorCleanupListener</listener-class>
</listener>

<servlet>
<servlet-name>CXFServlet</servlet-name>
<servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>

<servlet-mapping>
<servlet-name>CXFServlet</servlet-name>
<url-pattern>/services/*</url-pattern>
</servlet-mapping>

<welcome-file-list>
<welcome-file>index.htm</welcome-file>
<welcome-file>home.html</welcome-file>
</welcome-file-list>

</web-app>

 

其中webservice的主要业务处理类代码如下:

写道
package com.benben.webservice.service;

import javax.jws.WebParam;
import javax.jws.WebService;

import com.benben.bean.User;

@WebService
public interface UserService {
public User getUserByName(@WebParam(name = "name") String name);
public void setUser(User user) ;

}

 

他的实现类如下:

写道
package com.benben.webservice.service.impl;

import javax.jws.WebParam;

import com.benben.bean.User;
import com.benben.webservice.service.UserService;



public class UserServiceImpl implements UserService{
public User getUserByName(@WebParam(name = "name") String name) {
User user = new User();
user.setName(name);

return user;
}

public void setUser(User user) {
System.out.println("############Server setUser###########");
System.out.println("setUser:" + user);
}
}

 

最最关键的是如下的配置文件

spring-config-service.xml文件

写道
<?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="userServiceBean" class="com.benben.webservice.service.impl.UserServiceImpl"/>

<!--<bean id="inMessageInterceptor" class="com.hoo.interceptor.MessageInterceptor">
<constructor-arg value="receive"/>
</bean>-->

<bean id="outLoggingInterceptor" class="org.apache.cxf.interceptor.LoggingOutInterceptor"/>
<!-- 注意下面的address,这里的address的名称就是访问的WebService的name -->
<jaxws:server id="userService" serviceClass="com.benben.webservice.service.UserService" address="/Users">
<jaxws:serviceBean>
<!-- 要暴露的 bean 的引用 -->
<ref bean="userServiceBean"/>
</jaxws:serviceBean>
<!-- <jaxws:inInterceptors>
<ref bean="inMessageInterceptor"/>
</jaxws:inInterceptors>
<jaxws:outInterceptors>
<ref bean="outLoggingInterceptor"/>
</jaxws:outInterceptors>-->
</jaxws:server>



</beans>

 

spring-config.xml

写道
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
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"
default-autowire="byName">

<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" />



<import resource="spring-config-service.xml" />


</beans>

 

这样写完运行tomcat,在ie中输入http://localhost:8080/cxfTest/services/Users?wsdl,能看到wsdl的文件,就说明配置成功

 

下面是客户端代码:

 

同样这里最最重要的还是配置文件:

 

写道
<?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"/>

<jaxws:client id="userWsClient" serviceClass="com.benben.webservice.service.UserService"
address="http://localhost/cxfTest/services/Users"/> <!--这里是webservice的地址,可以修改-->
</beans>

 

 

 

 Test类

写道
package com.benben.test;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import com.benben.webservice.service.User;
import com.benben.webservice.service.UserService;

public class Test {
public static void main(String[] args) {
ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext-client.xml");

UserService service = ctx.getBean("userWsClient", UserService.class);

System.out.println("#############Client getUserByName##############");
User user = service.getUserByName("hoojo");
System.out.println(user);

user.setName("wangcanpei");
service.setUser(user);

}
}

 

其中客户端代码是使用cxf自带的工具生成的

如下:

wsdl2java -p com -d src -all  aa.wsdl

 

 -p  指定其wsdl的命名空间,也就是要生成代码的包名:
-d  指定要产生代码所在目录
-client 生成客户端测试web service的代码
-server 生成服务器启动web  service的代码
-impl 生成web service的实现代码
-ant  生成build.xml文件
-all 生成所有开始端点代码:types,service proxy,,service interface, server mainline, client mainline, implementation object, and an Ant build.xml file.

 

 

分享到:
评论

相关推荐

    cxf+spring整合

    "CXF+Spring整合"是企业级Java应用程序中常用的一种技术组合,它结合了Apache CXF(一个用于构建和服务导向架构的开源框架)和Spring框架的优势,以实现高效、灵活的服务开发和管理。在Java世界里,CXF常用于创建Web...

    CXF和spring整合所需jar包

    在Java企业级开发中,Apache CXF和Spring框架的整合是常见的实践,它们结合可以创建高效、灵活的服务提供和消费平台。Apache CXF是一个开源的Web服务框架,它支持多种Web服务标准,如SOAP、RESTful等。而Spring框架...

    cxf与springboot整合开发文档

    cxf整合springboot项目开发文档实例cxf整合springboot项目开发文档实例cxf整合springboot项目开发文档实例

    cxf和springnvc整合

    Apache CXF 和 Spring 整合详解 在 Java 开发领域,Apache CXF 是一个流行的开源框架,用于构建和开发服务导向架构(SOA)的应用程序。它提供了多种方式来实现 Web 服务,包括 JAX-WS 和 JAX-RS。另一方面,Spring ...

    cxf整合spring

    这些资源可以帮助读者更直观地理解CXF和Spring的整合过程,包括具体的XML配置、Java代码和可能的测试用例。 总结来说,CXF和Spring的整合使得Web服务开发更加便捷和强大。通过Spring的管理能力,我们可以更好地控制...

    springBoot完整整合WebService框架CXF示例

    这个示例项目为初学者提供了理解SpringBoot和CXF整合的起点,同时也展示了如何在实际项目中实施安全控制。通过学习和实践这个示例,开发者可以掌握如何在SpringBoot环境下构建和使用Web服务,以及如何进行基本的安全...

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

    本案例中,我们将讨论如何将MyBatis、Spring和CXF这三个关键框架整合在一起,以构建一个功能强大的Web服务。首先,让我们逐一了解这些框架的核心概念。 MyBatis是一个轻量级的Java持久层框架,它提供了SQL映射框架...

    spring + cxf + mybatis整合

    "Spring + CXF + MyBatis整合"是指将这三个框架结合在一起,创建一个具备完整功能的后端系统,包括业务逻辑处理、Web服务提供和数据库交互。下面将详细介绍这个整合过程中的关键知识点: 1. **Spring配置**:首先,...

    CXF和Spring整合,并且添加拦截器

    **标题:“CXF和Spring整合,并且添加拦截器”** 在Java世界中,Apache CXF是一个流行的开源服务框架,用于创建和消费Web服务。它支持多种Web服务规范,包括SOAP、RESTful API以及WS-*标准。另一方面,Spring框架是...

    cxf和spring整合

    在IT行业中,CXF和Spring框架的整合是一个常见的任务,特别是在构建基于Web服务的应用程序时。CXF(CXF: The Apache CXF project)是一个开源的Java框架,它支持多种Web服务标准,如SOAP、RESTful API等。而Spring...

    CXF+Spring整合资料

    这份"CXF+SPRING1"的压缩包很可能包含了以上所有步骤的详细文档、示例代码和配置文件,对于学习和理解CXF与Spring的整合非常有帮助。通过学习和实践这些资料,开发者可以更好地理解和掌握这两个框架的协作方式,从而...

    CXF与Spring整合需要的完整jar文件

    在Java企业级应用开发中,Apache CXF和Spring框架的整合是常见的选择,因为它们能够提供强大的服务调用和管理能力。Apache CXF是一个开源的Web服务框架,它支持多种Web服务标准,如SOAP、RESTful等。而Spring框架则...

    CXF和Spring整合开发的服务端及客户端

    【CXF和Spring整合开发的服务端及客户端】 CXF(CXF: Composite eXtensible Services Framework)是一款开源的Java框架,主要用于构建和开发服务导向架构(SOA)中的Web服务。它支持多种协议和标准,如SOAP、...

    cxf与spring整合

    将CXF与Spring整合,可以充分利用Spring的灵活性和CXF的服务实现能力,简化Web服务的开发流程。 **一、CXF与Spring整合的优势** 1. **依赖注入**:通过Spring的DI(Dependency Injection)特性,可以轻松管理CXF...

    springMVC+cxf+mybatis整合项目

    在"springMVC+cxf+mybatis整合项目"中,这三个框架通常会以以下方式进行集成: 1. **SpringMVC** 作为前端控制器,负责接收 HTTP 请求,调度业务逻辑,并返回视图。SpringMVC 通过依赖注入(DI)管理 CXF 和 ...

    CXF整合Spring步骤

    在企业级应用开发中,Apache CXF 和 Spring 框架的整合是非常常见的,因为它们分别提供了强大的服务端和客户端的 Web 服务支持以及灵活的依赖注入和配置管理。本教程将详细介绍如何将 CXF 与 Spring 整合,帮助...

    CXF与Spring整合实例

    整合CXF和Spring的优点在于,我们可以利用Spring的IOC(Inversion of Control,控制反转)和AOP特性,轻松地管理和控制服务的生命周期,同时保持代码的简洁性。此外,Spring还能帮助我们处理事务、安全等更复杂的...

Global site tag (gtag.js) - Google Analytics