WebService CFX 实现

来源:互联网 发布:linux系统办公软件 编辑:程序博客网 时间:2024/06/05 05:42

       Apache CXF是Codehaus XFire 的第二代产品,目前在不同框架中性能最佳,应该是开发者不错的选择,这与它本身的架构设计不无关系。相比其他框架,CXF具有几个突出的特性:支持JAX-WS、Spring集成、Aegi数据绑定、支持RESTful services、支持WS-*、Apache协议、代码实现简洁。Apache Axis2是Apache Axis1的第二代产品,架构上也非常不错,关键特性:支持各种规范、可插拔模块化设计、支持热部署等。与CXF相比性能也非常优异。

在服务端框架确定的场景下,最好是采用该框架生成客户端代码,这样配合性能可达到更佳。在实际的项目中,开发者在选择具体那个框架时,仍还需综合评估框架的开发组织、产品路线图、文档化程度、应用广泛度、与优异框架的集成度、灵活和扩展性等因素。

对比一下性能:

Axis1、Axis2、XFire、CXF、Spring、SOAP、StAX、WSDL

Axis本质上就是一个SOAP引擎(Apache Axis is an implementation of the SOAP),提供创建服务器端、客户端和网关SOAP操作的基本框架。但Axis并不完全是一个SOAP引擎,它还包括:

l  是一个独立的SOAP服务器。

l  是一个嵌入Servlet引擎(例如Tomcat)的服务器。

l  支持WSDL。

l  提供转化WSDL为Java类的工具。

l  提供例子程序。

l  提供TCP/IP数据包监视工具。

Apache Axis2相比Apache Axis1更加有效、更加模块化、更加面向xml,支持容易插件模块扩展新功能和特性,例如安全和可靠。Apache Axis2是基于Apache AXIOM,它是一个高性能、pull-based XML对象模型。Apache Axis2的关键特性:

l  解析xml更快。采用自己的对象模型和StAX (Streaming API for XML)。

l  更低的内存占用。

l  支持热部署。新服务加入到系统,无需重启服务。

l  支持异步 webservice、

l  MEP支持,灵活支持在WSDL 2.0定义的Message Exchange Patterns (MEPs)

l  更加灵活。引擎给开发人员提供了充足的自由度可扩展客户头信息处理、系统管理、

l  更加稳定性。

l  传输框架不依赖于具体协议。为集成和传输协议(SMTP, FTP, message-oriented middleware, etc)有一个简单和抽象,引擎核心是完全独立于具体的传输协议。

l  支持WSDL。支持WSDL1.1、WSDL2.0。

l  方便集成其他组件(Add-ons)。几个web services已经被集成,包括:WSS4J for security (Apache Rampart), Sandesha for reliable messaging,Kandula which is an encapsulation of WS-Coordination, WS-AtomicTransaction and WS-BusinessActivity.

l  良好的扩展性。

XFire核心是一个轻量的基于STAX消息处理模型,用来与SOAP消息交互,它支持不同类型的绑定机制、容器和传输协议。

支持webservice标准- SOAP, WSDL, WS-I Basic Profile, WS-Addressing, WS-Security, etc.

l  高性能SOAP STACK

l  可插拔绑定POJOs, XMLBeans, JAXB 1.1, JAXB 2.0, and Castor support

l  通过Java1.5 和1.4(Commons attributes JSR 181 syntax)使用JSR 181 API配置服务

l  支持多中传输协议- HTTP, JMS, XMPP, In-JVM, etc.

l  可嵌入的和直观的API

l  支持Spring, Pico, Plexus, and Loom

l  支持JBI

l  客户端和服务端stub代码生成

l  支持JAX-WS early access

Apache CXF是一个开源服务框架。CXF可用前端编程APIs开发服务,比如:JAX-WS and JAX-RS,主要特性包括:

l  支持Web services标准。包括:SOAP、the WSI Basic Profile、WSDL、WS-Addressing、WS-Policy、WS-ReliableMessaging、WS-Security、WS-SecureConversation 和WS-SecurityPolicy.

l  支持不同类型前端开发模型。CXF实现了JAX-WS APIs,支持JAX-RS开发。

l  容易使用。CXF设计的简洁和直观,具有简洁APIs迅速的构建基于代码的服务,Maven插件使得工具集成更加容易、JAX-WS API支持、Spring 2.x XML使得配置更加容易。

l  支持二进制和遗留协议。CXF被设计为可插拔的架构,在不同的传输协议结合下,不仅支持XML,也支持非XML类型绑定,例如:JSON和CORBA。

简单贴一个cfx实现的webservice思路以及重点 :

准备工作:

A:准备CXF实现所需要的jar ,这个网上多的是,可以到官网:

http://cxf.apache.org/download.html  查看

B:Server 接口的定义以及实现;

伪代码: 

接口: public String getWeather(String name); 

实现: public String getWeather(String name){

return name+"地区天气是晴,风力6级,适合放风"。

}

C、web.xml配置文件:(和spring很好的集成了,所以用起来也比较的爽,配置如下)


<context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>classpath*:spring*.xml</param-value>
  </context-param>

<!-- you must add listener ,if not ,it will not working  -->
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>

<servlet> 
<display-name>Apache CXF Endpoint</display-name>
  <servlet-name>CXFServer</servlet-name>  
  <servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class> 
  <load-on-startup>1</load-on-startup> 
</servlet>   

<servlet-mapping> 
  <servlet-name>CXFServer</servlet-name> 
  <url-pattern>/services/*</url-pattern> 
</servlet-mapping>

webservice 发布文件:

<!-- webservice -->
<jaxws:endpoint id="service"
implementor="com.demo.expense.webservice.WebServiceImpl" address="/WebService">
</jaxws:endpoint>

完成了这些,在tomcat中发布一下,去浏览器验证发布是否有效,输入:

http:// local IP:8080/WebServer/services/WebService?wsdl 

如果有相关信息展示,则证明发布成功,如果没有则看错误日志。


D:客户端的验证

可以使用eclipse的默认功能,新建一个项目,在New- Webservice client -service definition 中输入以上验证,系统会自动

生成相关的代码提供你去校验是否真实有效(略)。










0 0