`

CXF小例 (转)

    博客分类:
  • CXF
阅读更多

现在使用的最流行的webservice框架基本上就是Axis,Axis2和Cxf,其实这些框架间这有各的特点,并不能一概而论哪个好,哪个不好,关键是要根据你的系统自身去选择,看哪个更适合于你。

以下是Axis2和Cxf的部分比较:

1.CXF支持WS-Addressing,WS-Policy,WS-RM,WS-Security 和 WS-I 基本规范。Axis2支持除WS-Policy之外的所有协议,WS-Policy也会在即将到来的版本支持。

2.CXF很容易和Spring集成,而Axis2不。

3.Axis2 支持范围更大的数据绑定,包括XMLBeans、JiBX、JaxMe和JaxBRI同时还有它自带的数据绑定方式--ADB。注意对JaxME和 JaxBRI的支持在Axis2 1.2中仍然处在实验阶段。CXF目前仅支持JAXB和Aegis,对XMLBeans、JiBX和Castor的支持将会在CXF 1.2中实现。

4.Axsi2支持多种语言--在java版本之外还有C/C++的版本可用。

5.Axis2有利于web services的独立,不依赖其他应用,Cxf可以更好的嵌入到原有系统中,专注于开发者的高效和可嵌入性。

 

服务器端:

 

导入包(jaxws-api-2.0.jar在服务器端不是必须的):

aopalliance-1.0.jar
commons-logging-1.1.jar
cxf-2.0.2-incubator.jar
geronimo-activation_1.1_spec-1.0-M1.jar
geronimo-annotation_1.0_spec-1.1.jar
geronimo-javamail_1.4_spec-1.0-M1.jar
geronimo-servlet_2.5_spec-1.1-M1.jar
geronimo-ws-metadata_2.0_spec-1.1.1.jar
jaxb-api-2.0.jar
jaxb-impl-2.0.5.jar
jaxws-api-2.0.jar
neethi-2.0.2.jar
saaj-api-1.3.jar
saaj-impl-1.3.jar
spring-beans-2.0.4.jar
spring-context-2.0.4.jar
spring-core-2.0.4.jar
spring-web-2.0.4.jar
stax-api-1.0.1.jar
wsdl4j-1.6.1.jar
wstx-asl-3.2.1.jar
xml-resolver-1.2.jar
XmlSchema-1.2.jar

 

新建一个web工程cxf,分别编写接口HelloWorld和其实现类HelloWorldImpl,接口暴露出方法sayHello()供客户端调用(注,必须使用jdk1.5进行编译):

HelloWorld:

Java代码
  1. package  cn.com.service;  
  2.   
  3. import  javax.jws.WebService;  
  4.   
  5. @WebService   
  6. public   interface  HelloWorld {  
  7.   
  8.     public  String sayHello(String text);  
  9. }  
package cn.com.service;

import javax.jws.WebService;

@WebService
public interface HelloWorld {

	public String sayHello(String text);
}

 

 

 HelloWorldImpl:

Java代码
  1. package  cn.com.service;  
  2.   
  3. import  javax.jws.WebService;  
  4.   
  5. @WebService (endpointInterface= "cn.com.service.HelloWorld" )  
  6. public   class  HelloWorldImpl  implements  HelloWorld {  
  7.   
  8.     public  String sayHello(String text) {  
  9.           
  10.         return   "Hello"  + text ;  
  11.     }  
  12.   
  13. }  
package cn.com.service;

import javax.jws.WebService;

@WebService(endpointInterface="cn.com.service.HelloWorld")
public class HelloWorldImpl implements HelloWorld {

	public String sayHello(String text) {
		
		return "Hello" + text ;
	}

}

 

 

在spring的配置文件spring-bean.xml中配置:

Xml代码
  1. < beans   xmlns = "http://www.springframework.org/schema/beans"   
  2.     xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance"   
  3.     xmlns:jaxws = "http://cxf.apache.org/jaxws"   
  4.     xsi:schemaLocation ="   
  5. http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd   
  6. http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd">   
  7.   
  8.     < import   resource = "classpath:META-INF/cxf/cxf.xml"   />   
  9.     < import   resource = "classpath:META-INF/cxf/cxf-extension-soap.xml"   />   
  10.     < import   resource = "classpath:META-INF/cxf/cxf-servlet.xml"   />   
  11.   
  12.     < bean   id = "hello"   class = "cn.com.service.HelloWorldImpl"   />   
  13.   
  14.     < jaxws:endpoint   id = "helloWorld"   implementor = "#hello"   
  15.         address = "/HelloWorld"   />   
  16.           
  17.           
  18. </ beans >   
<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="hello" class="cn.com.service.HelloWorldImpl" />

	<jaxws:endpoint id="helloWorld" implementor="#hello"
		address="/HelloWorld" />
		
		
</beans>

 

web.xml:

Xml代码
  1. <? xml   version = "1.0"   encoding = "UTF-8" ?>   
  2. < web-app   version = "2.4"   xmlns = "http://java.sun.com/xml/ns/j2ee"   
  3.     xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance"   
  4.     xsi:schemaLocation ="http://java.sun.com/xml/ns/j2ee   
  5.     http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">   
  6.     < context-param >   
  7.         < param-name > contextConfigLocation </ param-name >   
  8.         < param-value > classpath:spring-bean.xml </ param-value >   
  9.     </ context-param >   
  10.   
  11.     < listener >   
  12.         < listener-class >   
  13.             org.springframework.web.context.ContextLoaderListener  
  14.         </ listener-class >   
  15.     </ listener >   
  16.       
  17.     < servlet >   
  18.         < servlet-name > CXFServlet </ servlet-name >   
  19.         < display-name > CXF Servlet </ display-name >   
  20.         < servlet-class >   
  21.             org.apache.cxf.transport.servlet.CXFServlet  
  22.         </ servlet-class >   
  23.         < load-on-startup > 1 </ load-on-startup >   
  24.     </ servlet >   
  25.   
  26.     < servlet-mapping >   
  27.         < servlet-name > CXFServlet </ servlet-name >   
  28.         < url-pattern > /* </ url-pattern >   
  29.     </ servlet-mapping >   
  30. </ web-app >   
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee 
	http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
	<context-param>
		<param-name>contextConfigLocation</param-name>
		<param-value>classpath:spring-bean.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>

 

将应用部署到web服务器中(我是部署到tomcat下),可以通过http://localhost:8080/cxf/HelloWorld?wsdl 检测是否发布成功.

 

客户端:

 

导入的包同服务器端相同(只是要将服务器端的接口类打成jar包,方便在客户端调用)

client:

 

Java代码
  1. package  cn.com.client;  
  2.   
  3. import  org.springframework.context.ApplicationContext;  
  4. import  org.springframework.context.support.ClassPathXmlApplicationContext;  
  5.   
  6. import  cn.com.service.HelloWorld;  
  7.   
  8. public   class  client {  
  9.   
  10.     public   static   void  main(String[] args) {  
  11.   
  12.         ApplicationContext ctx = new  ClassPathXmlApplicationContext(  
  13.                 "spring-bean.xml" );  
  14.         HelloWorld client = (HelloWorld) ctx.getBean("client" );  
  15.         String result = client.sayHello("你好@@!!" );  
  16.         System.out.println(result);  
  17.     }  
  18. }  

 

 

spring-bean.xml:

Xml代码
  1. < beans   xmlns = "http://www.springframework.org/schema/beans"   
  2.     xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance"   
  3.     xmlns:jaxws = "http://cxf.apache.org/jaxws"   
  4.     xsi:schemaLocation ="   
  5. http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd   
  6. http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd">   
  7.   
  8.     < import   resource = "classpath:META-INF/cxf/cxf.xml"   />   
  9.     < import   resource = "classpath:META-INF/cxf/cxf-extension-soap.xml"   />   
  10.     < import   resource = "classpath:META-INF/cxf/cxf-servlet.xml"   />   
  11.   
  12.     < bean   id = "hello"   class = "cn.com.service.HelloWorldImpl"   />   
  13.   
  14.     < jaxws:endpoint   id = "helloWorld"   implementor = "#hello"   
  15.         address = "/HelloWorld"   />   
  16.           
  17.           
  18. </ beans >  
分享到:
评论

相关推荐

    使用CXF: Java 2 WSDL

    在本例中,我们关注的是反向过程,即从Java代码生成WSDL。 4. **配置CXF环境**:使用CXF的工具前,需要先将其添加到系统的类路径中,或者在IDE(如Eclipse、IntelliJ IDEA)中配置相应的插件。`cxf环境变量配置以及...

    apache-cxf生成wsdl

    在本例中,我们看到的是`apache-cxf-3.4.0`版本,这通常包含CXF运行库和相关的命令行工具。你可以通过解压这个压缩包并将其添加到你的系统路径来使用它们。 生成Java代码的过程分为以下几个步骤: 1. **准备WSDL...

    CXF-JAXB包的处理问题

    以Eclipse为例,你可以按照以下步骤操作: 1. 打开你的项目,在"Project Explorer"或"Package Explorer"视图中找到你的项目。 2. 右键点击项目,选择"Properties"。 3. 在打开的属性对话框中,导航到"Java Build ...

    cxf、spring 整合

    在IT行业中,CXF和Spring的整合是构建企业级Web服务解决方案的重要部分。CXF是一个开源的Java框架,主要用于创建和消费Web服务,而Spring框架则是一个广泛使用的应用框架,提供了一个全面的基础设施来构建Java应用...

    CXF服务端和客户端 应用开发指南

    创建一个Java Project或J2EE Web项目(本例中为CXF_Spring_Survey),并将输出路径设为WEB-INF/classes,以便于直接部署。随后,将CXF安装包中的所有.jar文件复制到项目WEB-INF/lib目录下,更新Java Build Path,以...

    CXF关于Aegis的简单示例

    2. **Spring集成**:在提供的文件名称"Aegis_Spring_Client"中,我们可以推断出示例可能涉及到Spring框架的集成。Spring是Java应用开发中的一个强大框架,它可以帮助管理对象依赖关系,并提供事务管理、AOP(面向切面...

    cxfwebservice

    在本例中,"cxfService" 文件很可能包含了服务端的部署代码或配置。 【CXF 特性与优势】 1. **多协议支持**:CXF 支持 SOAP 1.1/1.2、RESTful HTTP、JMS 等多种通信协议,可以方便地在不同技术栈间进行交互。 2. ...

    基于CFX开发WebService

    在本例中,Tomcat被用作运行CXF Web服务的服务器。配置Tomcat来运行CXF服务需要在`web.xml`配置文件中添加特定的servlet定义。 3. **配置web.xml**: 在`web.xml`中,需要添加 `&lt;servlet&gt;` 和 `&lt;servlet-mapping&gt;`...

    java解析wsdl示例-详细版

    6. **示例代码**(以CXF为例): ```java Service service = Service.create(new URL("http://example.com/service?wsdl"), new QName("http://example.com", "HelloWorldService")); HelloWorldPortType port = ...

    WSDL.websercive转换C++.rar

    这个过程通常由代码生成工具完成,如Apache CXF、gSOAP或wsimport(JAX-WS的一部分)。这些工具解析WSDL文件,并根据其内容自动生成C++代码,包括请求和响应的消息结构,以及调用服务的方法。 以gSOAP为例,这是一...

    WebServices服务端和客户端DEMO

    在本DEMO中,我们将深入探讨服务端和客户端的实现,以"SpringWebServiceClient"和"SpringWebServiceServer"为例。 首先,让我们关注服务端——"SpringWebServiceServer"。Spring框架提供了强大的支持来创建Web ...

    java调用webservice wsdl源码

    以Apache CXF为例,以下是一个简单的步骤说明: 1. 添加依赖:在你的项目中引入Apache CXF的依赖库。如果是Maven项目,可以在pom.xml文件中添加对应的依赖项。 2. 生成客户端代码:使用CXF的wsdl2java工具,将WSDL...

    JAVA多线程GUI绘图应用实例 风扇控制

    这篇实例主要探讨了如何在Java环境中,结合多线程技术来实现GUI的动态绘图,以风扇控制为例。在这个作业中,开发者面临的主要挑战是如何在保持界面响应性的同时,通过多线程来控制风扇的转动效果。 首先,我们来看...

    web service 客户端java例子

    本篇文章将详细探讨如何在Java环境中创建和使用Web服务客户端,以"weather"为例。 一、Web服务基础 Web服务通常通过SOAP(简单对象访问协议)或REST(Representational State Transfer)进行通信。SOAP是基于XML的...

    SOAwithServiceMix

    - **内置多种服务引擎**:如 Camel、CXF 等,用于支持消息处理和 Web 服务交互。 - **灵活的部署模式**:支持独立部署、集群部署等多种模式。 - **丰富的插件生态**:提供了大量现成的插件来满足不同的需求。 #### ...

    webservice例子

    在本例中,我们将探讨如何使用XFire库来调用和发布WebService服务。 首先,让我们理解什么是XFire。XFire是Apache CXF项目的前身,是一个用于创建和消费SOAP(简单对象访问协议)服务的Java框架。它简化了...

    XFire创建的WebService

    在本例中,我们将探讨如何使用XFire来创建一个简单的WebService服务器端。 首先,让我们了解什么是Web服务。Web服务是一种通过网络(通常使用HTTP协议)进行通信的应用程序接口。它们允许不同系统之间的数据交换,...

Global site tag (gtag.js) - Google Analytics