首先,CXF和spring整合需要准备如下jar包文件:
首先在web.xml中添加如下配置:
<!-- 加载Spring容器配置 -->
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<!-- 设置Spring容器加载配置文件路径 -->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath*:applicationContext-server.xml</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.util.IntrospectorCleanupListener</listener-class>
</listener>
<servlet>
<servlet-name>CXFService</servlet-name>
<servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>CXFService</servlet-name>
<url-pattern>/services/*</url-pattern>
</servlet-mapping>
然后在src目录中,新建一个applicationContext-server.xml文件,文件内容如下:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:jaxws="http://cxf.apache.org/jaxws"
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-3.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.0.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"/>
下面开始写服务器端代码,首先定制服务器端的接口,代码如下:
package test.service;
import javax.jws.WebParam;
import javax.jws.WebService;
import javax.jws.soap.SOAPBinding;
import javax.jws.soap.SOAPBinding.Style;
import test.entity.User;
import test.entity.Users;
/**
* <b>function:</b>定制客户端请求WebService所需要的接口
* @file ComplexUserService.java
* @package test.service
* @project CXFWebService
*/
@WebService
@SOAPBinding(style = Style.RPC)
public interface IComplexUserService {
public User getUserByName(@WebParam(name = "name") String name);
public void setUser(User user);
}
下面编写WebService的实现类,服务器端实现代码如下:
package test.service;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import javax.jws.WebParam;
import javax.jws.WebService;
import javax.jws.soap.SOAPBinding;
import javax.jws.soap.SOAPBinding.Style;
import test.entity.User;
import test.entity.Users;
/**
* <b>function:</b> WebService传递复杂对象,如JavaBean、Array、List、Map等
* @file ComplexUserService.java
* @version 1.0
*/
@WebService
@SOAPBinding(style = Style.RPC)
@SuppressWarnings("deprecation")
public class ComplexUserService implements IComplexUserService {
public User getUserByName(@WebParam(name = "name") String name) {
User user = new User();
user.setId(new Date().getSeconds());
user.setName(name);
user.setAddress("china");
return user;
}
public void setUser(User user) {
System.out.println("############Server setUser###########");
System.out.println("setUser:" + user);
}
}
注意的是和Spring集成,这里一定要完成接口实现,如果没有接口的话会有错误的。
下面要在applicationContext-server.xml文件中添加如下配置:
<bean id="userServiceBean" class="test.service.ComplexUserService"/>
<!-- 注意下面的address,这里的address的名称就是访问的WebService的name -->
<jaxws:server id="userService" serviceClass="test.service.IComplexUserService" address="/Users">
<jaxws:serviceBean>
<!-- 要暴露的 bean 的引用 -->
<ref bean="userServiceBean"/>
</jaxws:serviceBean>
</jaxws:server>
下面启动tomcat服务器后,在WebBrowser中请求:
http://localhost:8080/CXFWebService/services/Users?wsdl
如果你能看到wsdl的xml文件的内容,就说明你成功了,注意的是上面地址的Users就是上面xml配置中的address的名称,是一一对应的。
下面编写客户端请求的代码,代码如下:
package test.client;
import org.apache.cxf.jaxws.JaxWsProxyFactoryBean;
import test.entity.User;
import test.service.IComplexUserService;
/**
* <b>function:</b>请求Spring整合CXF的WebService客户端
* @project CXFWebService
* @version 1.0
*/
public class SpringUsersWsClient {
public static void main(String[] args) {
//调用WebService
JaxWsProxyFactoryBean factory = new JaxWsProxyFactoryBean();
factory.setServiceClass(IComplexUserService.class);
factory.setAddress("http://localhost:8080/CXFWebService/services/Users");
IComplexUserService service = (IComplexUserService) factory.create();
System.out.println("#############Client getUserByName##############");
User user = service.getUserByName("tets");
System.out.println(user);
user.setAddress("China-Guangzhou");
service.setUser(user);
}
}
这个server端是通过Spring整合配置的,下面我们将Client端也通过Spring配置完成整合。
首先增加applicationContext-client.xml配置文件,文件内容如下:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:jaxws="http://cxf.apache.org/jaxws"
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-3.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.0.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="test.service.IComplexUserService"
address="http://localhost:8080/CXFWebService/services/Users"/>
</beans>
客户端请求代码如下:
package test.client;
import org.apache.cxf.jaxws.JaxWsProxyFactoryBean;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import test.entity.User;
import test.service.IComplexUserService;
/**
* <b>function:</b>请求Spring整合CXF的WebService客户端
* @file SpringUsersWsClient.java
* @project CXFWebService
* @version 1.0
*/
public class SpringUsersWsClient {
public static void main(String[] args) {
ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext-client.xml");
IComplexUserService service = ctx.getBean("userWsClient", IComplexUserService.class);
System.out.println("#############Client getUserByName##############");
User user = service.getUserByName("test");
System.out.println(user);
user.setAddress("China-Guangzhou");
service.setUser(user);
}
}
相关推荐
总结来说,Spring整合WebService涉及到的主要知识点包括Spring框架的基本概念、WebService的基本原理、相关协议(SOAP、WSDL等)的理解,以及如何在Spring配置文件中配置和管理WebService。理解并掌握这些知识点,将...
接下来,我们将探讨如何将Web Service服务接口与Spring整合: 1. **配置Spring上下文**:在Spring配置文件中,你需要声明一个WebServiceTemplate或Endpoint,这是Spring与Web Service交互的核心组件。例如,对于...
下面我们将详细探讨Spring整合CXF的步骤以及如何在Spring中实现Web服务。 1. **环境准备**: 在开始整合之前,确保已安装JDK,并设置好环境变量。同时,你需要在项目中引入Spring和CXF的依赖库,通常通过Maven或...
2. **Spring整合Xfire**:Spring通过其强大的IoC(Inversion of Control)容器,使得集成Xfire变得简单。它允许开发者在Spring配置中声明Web服务,通过注解来定义服务接口和实现,降低了配置文件的复杂性。 3. **...
### Spring集成WebService详细步骤 #### 一、简介 在现代软件开发中,Web Service作为一种标准的服务接口被广泛应用,尤其在企业级应用中更是不可或缺的一部分。Spring框架作为Java平台上的一个优秀框架,它提供了...
当将CXF与Spring整合时,可以充分利用Spring的管理能力,轻松地部署和管理CXF Web服务。下面我们将详细讨论整合这两个框架的过程及其所需的关键jar文件。 首先,我们需要了解CXF的主要功能。CXF允许开发者通过JAX-...
Spring框架是一个开源的应用框架,它提供了丰富的功能,包括依赖注入(DI)、面向切面编程(AOP)、事务管理、数据访问以及各种类型的集成。Spring框架简化了Java应用程序的开发,通过提供一个统一的容器来管理对象...
在这个"springWebservice:spring整合webservice框架demo"中,我们将探讨Spring如何与WebService框架集成,以及如何通过实际的项目文件来理解这一过程。 首先,Spring框架提供了Spring-WS和Apache CXF等组件来支持...
Web服务(WebService)是一种基于开放标准的互联网协议,允许不同系统之间进行数据交换。...在本案例中,我们关注...通过理解这些核心概念和步骤,你可以轻松地将Spring与WebService整合,实现高效的数据交换和互操作性。
本篇将深入探讨Spring框架中的Web服务实现,即Spring WebService。 **一、Spring WebService简介** Spring WebService是Spring框架的一部分,专门用于构建基于SOAP(Simple Object Access Protocol)协议的Web服务...
在本示例中,我们将探讨如何将Spring MVC与Web服务(特别是SOAP Web服务)进行集成,以便于在Spring MVC应用中调用或暴露Web服务。 **一、Spring MVC简介** Spring MVC是Spring框架的一部分,它提供了MVC(Model-...
【标题】"spring+webserviceClient"涉及到的关键技术是Spring框架与Web服务客户端的整合,主要探讨如何在Spring环境中创建和使用Web Service客户端。Web Service是一种基于SOAP协议的跨平台、跨语言的通信方式,而...
本文将深入探讨如何利用Spring.NET来整合Web服务,从而实现更高效、灵活的服务消费和提供。 首先,理解Spring.NET中的WebServiceTemplate是关键。WebServiceTemplate是Spring.NET提供的一个抽象层,用于简化Web服务...
在本文中,我们将探讨XFire与Spring框架集成以实现WebService客户端的两种开发方式。XFire是一个流行的Java Web服务实现库,而Spring是一个广泛使用的应用程序框架,可以方便地管理和配置Web服务客户端。 ### 方式...
集成Spring和CXF的主要目标是利用Spring的DI和配置管理能力,结合CXF的Web服务功能,构建出高效且易于维护的服务。下面我们将详细探讨这一过程: 1. **配置Spring容器**:首先,我们需要在Spring的配置文件中定义...
综上所述,"WebService验证与Spring整合"涉及到的技术栈广泛,包括Spring框架的核心特性、Web服务的基础概念以及数据验证和安全策略。通过学习和实践这些知识点,开发者能够构建出高效、健壮且易于维护的Web服务应用...
8. **集成测试**:利用Spring Test和CXF的模拟测试工具,可以方便地进行Web服务的单元测试和集成测试。 9. **性能优化**:可以通过调整CXF的配置,例如缓存策略、线程池大小等,优化Web服务的性能。 10. **监控与...
描述中提到的“简单例子:axis2整合spring发布webservice”,意味着我们将学习如何将这两个框架结合,以便通过Spring来管理和控制Web服务的生命周期,同时利用Axis2的Web服务处理能力。此外,“以及session的管理”...
总结来说,Spring整合Flex和WebServices,实现了前后端分离的架构,使服务器端的复杂业务逻辑与客户端的富用户体验完美结合。通过Spring的灵活配置和Flex的动态展示,我们可以构建出高效、健壮且用户友好的企业级...