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 中输入以上验证,系统会自动
生成相关的代码提供你去校验是否真实有效(略)。
- WebService CFX 实现
- cfx实现webService
- cfx webservice
- webservice cfx学习
- java webservice cfx
- cfx webservice 入门步骤
- android webservice(cfx) 乱码
- cfx发布webservice
- cfx webService 入门详细步骤
- cfx webservice入门详细步骤
- Spring使用CFX发布Webservice
- 使用HttpClient调用CFX WebService
- cfx webservice入门详细步骤
- android webservice(cfx:gbk) 乱码处理
- CFX构建webservice实例,与Spring整合
- 基于CFX WebService做的一个简单的HelloWorld例子
- 部署一个HELLO WORLD 的CFX WEBSERVICE 需要哪些包
- webservice公共调用 客户端接口工具类 cfx axis2
- asp.net 处理 SQLServer中的TimeStamp字段(行版本控制)
- 查看Linux内核版本的命令
- 学习OpenCV(四)
- CoreData中存任意类型的数据
- A performance evaluation of local descriptors——局部描述子评估译文
- WebService CFX 实现
- http staus
- Java获取IP地址:request.getRemoteAddr()
- 双重检查锁定与延迟初始化
- 用WP短代码在侧栏小工具中调用不同分类的文章
- Oracle 日期处理
- 函数指针
- Web开发中关于缓存的使用
- 流行的一些缩写与定义的简意,如SOA,吞吐率等