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整合"是企业级Java应用程序中常用的一种技术组合,它结合了Apache CXF(一个用于构建和服务导向架构的开源框架)和Spring框架的优势,以实现高效、灵活的服务开发和管理。在Java世界里,CXF常用于创建Web...
在Java企业级开发中,Apache CXF和Spring框架的整合是常见的实践,它们结合可以创建高效、灵活的服务提供和消费平台。Apache CXF是一个开源的Web服务框架,它支持多种Web服务标准,如SOAP、RESTful等。而Spring框架...
cxf整合springboot项目开发文档实例cxf整合springboot项目开发文档实例cxf整合springboot项目开发文档实例
Apache CXF 和 Spring 整合详解 在 Java 开发领域,Apache CXF 是一个流行的开源框架,用于构建和开发服务导向架构(SOA)的应用程序。它提供了多种方式来实现 Web 服务,包括 JAX-WS 和 JAX-RS。另一方面,Spring ...
这些资源可以帮助读者更直观地理解CXF和Spring的整合过程,包括具体的XML配置、Java代码和可能的测试用例。 总结来说,CXF和Spring的整合使得Web服务开发更加便捷和强大。通过Spring的管理能力,我们可以更好地控制...
这个示例项目为初学者提供了理解SpringBoot和CXF整合的起点,同时也展示了如何在实际项目中实施安全控制。通过学习和实践这个示例,开发者可以掌握如何在SpringBoot环境下构建和使用Web服务,以及如何进行基本的安全...
本案例中,我们将讨论如何将MyBatis、Spring和CXF这三个关键框架整合在一起,以构建一个功能强大的Web服务。首先,让我们逐一了解这些框架的核心概念。 MyBatis是一个轻量级的Java持久层框架,它提供了SQL映射框架...
"Spring + CXF + MyBatis整合"是指将这三个框架结合在一起,创建一个具备完整功能的后端系统,包括业务逻辑处理、Web服务提供和数据库交互。下面将详细介绍这个整合过程中的关键知识点: 1. **Spring配置**:首先,...
**标题:“CXF和Spring整合,并且添加拦截器”** 在Java世界中,Apache CXF是一个流行的开源服务框架,用于创建和消费Web服务。它支持多种Web服务规范,包括SOAP、RESTful API以及WS-*标准。另一方面,Spring框架是...
在IT行业中,CXF和Spring框架的整合是一个常见的任务,特别是在构建基于Web服务的应用程序时。CXF(CXF: The Apache CXF project)是一个开源的Java框架,它支持多种Web服务标准,如SOAP、RESTful API等。而Spring...
这份"CXF+SPRING1"的压缩包很可能包含了以上所有步骤的详细文档、示例代码和配置文件,对于学习和理解CXF与Spring的整合非常有帮助。通过学习和实践这些资料,开发者可以更好地理解和掌握这两个框架的协作方式,从而...
在Java企业级应用开发中,Apache CXF和Spring框架的整合是常见的选择,因为它们能够提供强大的服务调用和管理能力。Apache CXF是一个开源的Web服务框架,它支持多种Web服务标准,如SOAP、RESTful等。而Spring框架则...
【CXF和Spring整合开发的服务端及客户端】 CXF(CXF: Composite eXtensible Services Framework)是一款开源的Java框架,主要用于构建和开发服务导向架构(SOA)中的Web服务。它支持多种协议和标准,如SOAP、...
将CXF与Spring整合,可以充分利用Spring的灵活性和CXF的服务实现能力,简化Web服务的开发流程。 **一、CXF与Spring整合的优势** 1. **依赖注入**:通过Spring的DI(Dependency Injection)特性,可以轻松管理CXF...
在"springMVC+cxf+mybatis整合项目"中,这三个框架通常会以以下方式进行集成: 1. **SpringMVC** 作为前端控制器,负责接收 HTTP 请求,调度业务逻辑,并返回视图。SpringMVC 通过依赖注入(DI)管理 CXF 和 ...
在企业级应用开发中,Apache CXF 和 Spring 框架的整合是非常常见的,因为它们分别提供了强大的服务端和客户端的 Web 服务支持以及灵活的依赖注入和配置管理。本教程将详细介绍如何将 CXF 与 Spring 整合,帮助...
整合CXF和Spring的优点在于,我们可以利用Spring的IOC(Inversion of Control,控制反转)和AOP特性,轻松地管理和控制服务的生命周期,同时保持代码的简洁性。此外,Spring还能帮助我们处理事务、安全等更复杂的...