`

WebService应用之CXF集成spring详解

阅读更多
一. CXF与spring集成
1.简介:
CXF是基于JAX-WS实现的,JAX-WS规范是一组XML web services的JAVA API,它使用户无需编写复杂的SOAP ENV,WSDL。在 JAX-WS中,一个远程调用可以转换为一个基于XML的协议例如SOAP。在使用JAX-WS过程中,开发者不需要编写任何生成和处理SOAP消息的代码。JAX-WS的运行时实现会将这些API的调用转换成为对于SOAP消息。
在服务器端,用户只需要通过Java语言定义远程调用所需要实现的接口SEI (service endpoint interface),并提供相关的实现,通过调用JAX-WS的服务发布接口就可以将其发布为WebService接口。
在客户端,用户可以通过JAX-WS的API创建一个代理(用本地对象来替代远程的服务)来实现对于远程服务器端的调用。
2.实现过程:
a) 为CXF设置编译和开发环境
在http://cxf.apache.org/download.html 下载相应的CXF包,/lib目录下的jar 文件引入工程
b) 新建工程,cxfspring,包含WebRoot/WEB-INF目录
c) 编写服务
首先写一个服务接口,例子中的HelloWorld.java。我们要注意的是这个例子使用了JSR181规范中的声明“@WebService”。
package demo.spring;
 
import javax.jws.WebService;
 
@WebService
public interface HelloWorld {
    String sayHi(String text);
}

下一步实现这个服务接口,例子中的HelloWorldImpl.java。这个例子代码中的“@WebService”标签只包含一个endpointInterface的属性,这个属性让CXF知道根据哪个接口生成WSDL文件。这里有点和我们第一个例子不同,没有包含ServiceName属性。这是因为这个属性会在Spring的配置文件中声明,请参考下面的beans.xml这个配置文件。
package demo.spring;
 
import javax.jws.WebService;
/**
 * javaDoc:http://download.oracle.com/javase/6/docs/api/overview-summary.html
 * 
 * @WebService
 * - <wsdl:service name="HelloWorldImplService">
 * - <wsdl:port binding="tns:HelloWorldImplServiceSoapBinding"  name="HelloWorldImplServicePort">
 * 	 - <soap:address location="http://localhost:8081/TestWebservice/HelloWorld" />
 * - </wsdl:port>
 * - </wsdl:service> 
 * targetNamespace: 命名空间,对应tns的定义;没写,默认是“http://”+包(package)反过来写。
 * 					加了这个属性,则参数的定义会用<wsdl:import location="http://localhost:8081/TestWebservice/HelloWorldService?wsdl=HelloWorldService.wsdl" ..>,
 * 					没加,参数定义就写在同一个wsdl文档
 * serviceName:对应wsdl文档,对应:<wsdl:service name="HelloWorldServieImplService">的name;不写,默认是"类名+Service";
 * portName:对应<wsdl:port binding="tns:HelloWorldServieImplServiceSoapBinding" name="HelloWorldServieImplPort">的name;不写,默认是"类名+ServicePort";
 * wsdlLocation: 对应映射的wsdl的物理地址
 * endpointInterface: 实现的接口
 * 
 * @Features:调用时,将请求和响应的SOAP信息打印出来
 */ 

@WebService(name="HelloWorldImpl",
//			targetNamespace="http://spring.demo",
			serviceName="HelloWorldImplService",
			portName="HelloWorldImplServicePort",
//			wsdlLocation = "file:/e:/healthEventRegistration.wsdl",
			endpointInterface="demo.spring.HelloWorld")
//@Features(features = "org.apache.cxf.feature.LoggingFeature")
public class HelloWorldImpl implements HelloWorld {
 
    public String sayHi(String text) {
        return "Hello " + text;
    }
}

d) 在spring中声明服务的Bean
CXF中包含对Spring2.0很好的支持。对于JAX-WS这一类配置,我们有<jaxws:endpoint>bean作为服务端节点的配置说明。
创建一个”beans.xml”文件在我们项目的WEB-INF路径下,注意这个文件的例子可以在“D:\cxf\samples\java_first_spring_support\”中找到。
<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:endpoint 
        id="helloWorld" 
        implementor="demo.spring.HelloWorldImpl" 
        address="/HelloWorld" />
        
</beans>

<jaxws:endpoint>有三个属性id, implementor和address。
“id”指定这个Bean在Spring上下文中唯一的标识。
“implementor”指定了这个Web Service的实现类。
“address”指定了服务在Web服务器上发布的地址。这个地址可以包含ip和端口的完整地址,也可以是只包含相对路径的地址。

e) 配置web.xml
配置的过程中需要在web.xml中添加如下两项:
第一个是Spring的ContextLoaderListerp类会在启动时加载上面配置beans.xml文件。我们需要设定context-param节点;第二个是增加一个CXF Servlet。配置文件如下,
<web-app>
   <context-param>
          <param-name>contextConfigLocation</param-name>
          <param-value>WEB-INF/beans.xml</param-value>
   </context-param>
   <listener>
          <listener-class>
          org.springframework.web.context.ContextLoaderListener
          </listener-class>
   </listener>
   <servlet>
          <servlet-name>CXFServlet</servlet-name>
          <display-name>CXF Servlet</display-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>/*</url-pattern>
   </servlet-mapping>
</web-app>

这里需要注意的是配置的endpoint的地址(address)属性必须和在Beans.xml中定义的一致。尽管例子中没有在HelloWorldImpl.java中声明“address“属性,也需要在实际的配置中有所注意。
如果你在客户端代码要使用这个bean,代码会非常简单,例子如下
ApplicationContext context = ...; // your Spring ApplicationContext
HellWorld client = (HelloWorld) context.getBean("client");


如果朋友们觉得这篇文章对您有用,而且您需要茶叶茶具和零食之类的东东,请大家到下面这家店铺购买“品润茶业”,做批发的,价格超便宜,希望大家多多支持!
地址:http://prtea.taobao.com
请转载的朋友,把以上文字也带上,珍惜别人的劳动果实,谢谢!



分享到:
评论

相关推荐

    webservice-cxf-spring-jar.zip

    【标题】"webservice-cxf-spring-jar.zip" 是一个包含了使用Apache CXF与Spring框架集成开发Web服务的Java库集合。这个压缩包提供了一整套必要的JAR文件,以便于开发者在他们的项目中快速搭建和运行基于CXF的Web服务...

    CXF和Spring搭建webservice代码

    【CXF和Spring搭建Web服务代码详解】 在Java开发领域,CXF和Spring框架的结合是构建高效、灵活的Web服务的常见选择。CXF是一个开源的SOAP和RESTful Web服务框架,它允许开发者轻松地创建和消费Web服务。而Spring...

    cxf与spring发布WebService

    【描述】:“CXF与Spring发布WebService”意味着我们将利用CXF提供的Web服务功能,并通过Spring框架进行管理和集成。这种结合使得Web服务的创建、配置和管理变得更加简单和灵活,同时也能够利用Spring的容器管理特性...

    webservice ssm+cxf服务端

    总的来说,"webservice ssm+cxf服务端"是一个利用SSM框架和CXF服务框架构建的Web Service应用,它实现了服务发布和调用的功能,适合于需要跨系统交互的场景。通过学习和实践这个项目,开发者可以深入理解SSM和CXF的...

    12.CXF与Spring整合为JavaEE应用发布WebService

    【标题】:“12.CXF与Spring整合为JavaEE应用发布WebService” 【描述】:本章节将深入探讨如何将Apache CXF与Spring框架整合,以构建一个基于JavaEE的应用程序来发布Web服务。CXF是一个开源的Web服务框架,它支持...

    cxf+spring的webservice实例

    CXF是一个流行的开源框架,专门用于构建和消费Web服务,而Spring则是一个强大的Java应用程序框架,常用于管理和配置服务。本实例将详细介绍如何使用CXF和Spring结合来创建一个Web服务。 1. **CXF简介**: CXF全称...

    CXF实现WebService详解实例

    CXF是开发WebService的首选工具之一,因为它提供了一种直观的方式将Java类映射为Web服务接口,反之亦然。通过CXF,开发者可以轻松地创建基于JAX-WS(Java API for XML Web Services)的SOAP服务,或者使用JAX-RS...

    CXF Spring Web Service 程序

    【CXF与Spring整合Web服务详解】 在Java世界中,Apache CXF是一个广泛使用的开源框架,用于构建和部署Web服务。它提供了丰富的功能,包括SOAP、RESTful API的支持,以及与Spring框架的深度集成。本篇文章将深入探讨...

    WebService之CXF(一、服务端的使用)

    **WebService之CXF服务端使用详解** 在信息技术领域,WebService是一种基于开放标准的,用于不同系统间进行数据交换的技术。Apache CXF是一个流行的开源框架,它使得开发和部署Web服务变得简单而高效。本篇文章将...

    WebService之CXF

    【WebService之CXF详解】 1. WebService概念解析: WebService是一种基于互联网的、平台独立的通信方式,它允许不同的系统之间通过网络交换数据,实现了应用程序间的互操作性。这种技术利用XML(eXtensible Markup...

    WebService CXF 详细教程

    **WebService CXF 详解** **一、WebService简介** WebService是一种基于标准的,可以在不同操作系统、编程语言之间交换数据的Web应用程序。它通过WSDL(Web服务描述语言)定义了服务接口,利用SOAP(简单对象访问...

    WebService CXF 对象传递 附

    **WebService CXF 对象传递详解** 在Web服务领域,CXF是一个非常重要的开源框架,它允许开发者创建和消费各种Web服务。CXF支持SOAP、RESTful等多种通信模式,并且能够处理复杂的对象传递,使得Web服务的数据交换...

    CXF与spring整合实现

    ### CXF与Spring整合实现Webservice的深度解析 在企业级应用开发中,Apache CXF与Spring框架的结合被广泛采用,以实现高效、灵活的Web服务开发。本文将深入探讨CXF与Spring如何整合,以及如何在Tomcat环境下部署Web...

    web service cxf spring集成

    标题"Web Service CXF Spring集成"表明我们将探讨如何在Spring环境中利用Apache CXF来创建和整合Web服务。首先,你需要在项目中引入CXF和Spring的相关依赖。通常,这可以通过在Maven或Gradle的配置文件中添加相应的...

    cxf + spring 例子

    【标题】:“CXF + Spring 实战教程” 【描述】:本教程主要讲解如何结合Apache CXF和Spring框架来开发Web服务。Apache CXF是一个开源的、强大的服务框架,它支持多种Web服务标准,如SOAP、RESTful API等。而Spring...

    WebService之CXF开发指南

    ### WebService之CXF开发指南 #### 一、概述 WebService技术已经成为企业级应用中不可或缺的一部分,它使得不同系统之间能够以标准化的方式进行交互。在众多WebService框架中,Apache CXF因其灵活、强大的功能和...

    CXF3.1.16 +Spring4 +MyBatis + Maven自定义拦截器 WebService实例源码下载

    "CXF3.1.16 +Spring4 +MyBatis + Maven自定义拦截器 WebService实例源码下载" 这个标题揭示了该项目的核心技术栈,包括: 1. CXF 3.1.16:这是一个开源的服务框架,用于构建和开发服务,支持SOAP和RESTful Web服务...

    Spring+cxf请求webService

    【Spring+CXF请求WebService详解】 在Java开发领域,Spring框架以其强大的依赖注入和面向切面编程能力被广泛应用,而CXF则是一个优秀的开源服务开发框架,支持SOAP和RESTful服务。当Spring与CXF结合使用时,可以...

Global site tag (gtag.js) - Google Analytics