`

Spring整合Webservice

 
阅读更多

首先,CXF和spring整合需要准备如下jar包文件:

image

 

首先在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需要jar包

    总结来说,Spring整合WebService涉及到的主要知识点包括Spring框架的基本概念、WebService的基本原理、相关协议(SOAP、WSDL等)的理解,以及如何在Spring配置文件中配置和管理WebService。理解并掌握这些知识点,将...

    发布webService服务接口与spring整合教程

    接下来,我们将探讨如何将Web Service服务接口与Spring整合: 1. **配置Spring上下文**:在Spring配置文件中,你需要声明一个WebServiceTemplate或Endpoint,这是Spring与Web Service交互的核心组件。例如,对于...

    Spring整合CXF步骤,Spring实现webService,spring整合WebService

    下面我们将详细探讨Spring整合CXF的步骤以及如何在Spring中实现Web服务。 1. **环境准备**: 在开始整合之前,确保已安装JDK,并设置好环境变量。同时,你需要在项目中引入Spring和CXF的依赖库,通常通过Maven或...

    webservice xfire整合spring(webservice配置采用注解)例子

    2. **Spring整合Xfire**:Spring通过其强大的IoC(Inversion of Control)容器,使得集成Xfire变得简单。它允许开发者在Spring配置中声明Web服务,通过注解来定义服务接口和实现,降低了配置文件的复杂性。 3. **...

    spring 集成webservice 详细步骤

    ### Spring集成WebService详细步骤 #### 一、简介 在现代软件开发中,Web Service作为一种标准的服务接口被广泛应用,尤其在企业级应用中更是不可或缺的一部分。Spring框架作为Java平台上的一个优秀框架,它提供了...

    cxf与spring整合webservice所需jar

    当将CXF与Spring整合时,可以充分利用Spring的管理能力,轻松地部署和管理CXF Web服务。下面我们将详细讨论整合这两个框架的过程及其所需的关键jar文件。 首先,我们需要了解CXF的主要功能。CXF允许开发者通过JAX-...

    Spring+webservice例子

    Spring框架是一个开源的应用框架,它提供了丰富的功能,包括依赖注入(DI)、面向切面编程(AOP)、事务管理、数据访问以及各种类型的集成。Spring框架简化了Java应用程序的开发,通过提供一个统一的容器来管理对象...

    springWebservice:spring整合webservice框架demo

    在这个"springWebservice:spring整合webservice框架demo"中,我们将探讨Spring如何与WebService框架集成,以及如何通过实际的项目文件来理解这一过程。 首先,Spring框架提供了Spring-WS和Apache CXF等组件来支持...

    总结的最简化的一套WebService集成Spring的jar包

    Web服务(WebService)是一种基于开放标准的互联网协议,允许不同系统之间进行数据交换。...在本案例中,我们关注...通过理解这些核心概念和步骤,你可以轻松地将Spring与WebService整合,实现高效的数据交换和互操作性。

    Spring_WebService源码

    本篇将深入探讨Spring框架中的Web服务实现,即Spring WebService。 **一、Spring WebService简介** Spring WebService是Spring框架的一部分,专门用于构建基于SOAP(Simple Object Access Protocol)协议的Web服务...

    spring mvc集成webservice

    在本示例中,我们将探讨如何将Spring MVC与Web服务(特别是SOAP Web服务)进行集成,以便于在Spring MVC应用中调用或暴露Web服务。 **一、Spring MVC简介** Spring MVC是Spring框架的一部分,它提供了MVC(Model-...

    spring+webserviceClient

    【标题】"spring+webserviceClient"涉及到的关键技术是Spring框架与Web服务客户端的整合,主要探讨如何在Spring环境中创建和使用Web Service客户端。Web Service是一种基于SOAP协议的跨平台、跨语言的通信方式,而...

    spring.net整合webservice实例

    本文将深入探讨如何利用Spring.NET来整合Web服务,从而实现更高效、灵活的服务消费和提供。 首先,理解Spring.NET中的WebServiceTemplate是关键。WebServiceTemplate是Spring.NET提供的一个抽象层,用于简化Web服务...

    XFire与Spring集成WebService客户端的两种开发方式.pdf

    在本文中,我们将探讨XFire与Spring框架集成以实现WebService客户端的两种开发方式。XFire是一个流行的Java Web服务实现库,而Spring是一个广泛使用的应用程序框架,可以方便地管理和配置Web服务客户端。 ### 方式...

    spring CXF集成,实现webservice(包含https)

    集成Spring和CXF的主要目标是利用Spring的DI和配置管理能力,结合CXF的Web服务功能,构建出高效且易于维护的服务。下面我们将详细探讨这一过程: 1. **配置Spring容器**:首先,我们需要在Spring的配置文件中定义...

    WebService验证与Spring整合

    综上所述,"WebService验证与Spring整合"涉及到的技术栈广泛,包括Spring框架的核心特性、Web服务的基础概念以及数据验证和安全策略。通过学习和实践这些知识点,开发者能够构建出高效、健壮且易于维护的Web服务应用...

    cxf+spring实现webservice

    8. **集成测试**:利用Spring Test和CXF的模拟测试工具,可以方便地进行Web服务的单元测试和集成测试。 9. **性能优化**:可以通过调整CXF的配置,例如缓存策略、线程池大小等,优化Web服务的性能。 10. **监控与...

    axis2+spring webservice

    描述中提到的“简单例子:axis2整合spring发布webservice”,意味着我们将学习如何将这两个框架结合,以便通过Spring来管理和控制Web服务的生命周期,同时利用Axis2的Web服务处理能力。此外,“以及session的管理”...

    spring 整合flex,整合webService

    总结来说,Spring整合Flex和WebServices,实现了前后端分离的架构,使服务器端的复杂业务逻辑与客户端的富用户体验完美结合。通过Spring的灵活配置和Flex的动态展示,我们可以构建出高效、健壮且用户友好的企业级...

Global site tag (gtag.js) - Google Analytics