您的位置:首页 > 其它

关于CXFServlet的应用

2015-04-20 23:34 197 查看
一、简介:

在开发javawebservice时,有两个比较流行的框架:axis2和cxf。cxf可以无缝的和spring集成,而axis2需要打包成aar文件,在tomcat下面跑。ApacheCXF是一个开放源代码框架,提供了用于方便地构建和开发Web服务的可靠基础架构。它允许创建高性能和可扩展的服务,您可以将这样的服务部署在Tomcat和基于Spring的轻量级容器中,以及部署在更高级的服务器上,例如Jboss、IBM®WebSphere®或BEAWebLogic。

该框架提供了以下功能:

Web服务标准支持:CXF支持以下Web服务标准:

JavaAPIforXMLWebServices(JAX-WS)
SOAP
Web服务描述语言(WebServicesDescriptionLanguage,WSDL)
消息传输优化机制(MessageTransmissionOptimizationMechanism,MTOM)
WS-BasicProfile
WS-Addressing
WS-Policy
WS-ReliableMessaging
WS-Security

前端建模:CXF提供了前端建模的概念,允许您使用不同的前端API来创建Web服务。API允许您使用简单的工厂Bean并通过JAX-WAS实现来创建Web服务。它还允许您创建动态Web服务客户端。

工具支持:CXF提供了用于在JavaBean、Web服务和WSDL之间进行转换的不同工具。它提供了对Maven和Ant集成的支持,并无缝地支持Spring集成。

RESTful服务支持:CXF支持代表性状态传输(RepresentationalStateTransfer,RESTful)服务的概念,并支持Java平台的JAX-RS实现。(本系列的第2部分将提供有关RESTful服务的更多信息。)

对不同传输和绑定的支持:CXF支持不同种类的传输,从XML到逗号分隔值(CSV)。除了支持SOAP和HTTP协议绑定之外,它还支持JavaArchitectureforXMLBinding(JAXB)和AEGIS数据绑定。

对非XML绑定的支持:CXF支持非XML绑定,例如JavaScriptObjectNotation(JSON)和CommonObjectRequestBrokerArchitecture(CORBA)。它还支持Java业务集成(JavaBusinessIntegration,JBI)体系架构和服务组件体系架构(ServiceComponentArchitecture,SCA)。
codefirst或者xmlfirst:支持使用codefirst或者xmlfirst的方式来创建web服务。

二、以银联无线POS为例,现实简单的CXFServlet应用

(去网上下载CXF的jar包,我下载的是cxf2.7.4的)

1、开发服务的接口类和实现类

接口类:

importjavax.jws.WebService;

publicinterfaceBankServicePortType{

publicjava.lang.StringconsumeApplication(java.lang.Stringmsg);

publicjava.lang.StringtakeApplication(java.lang.Stringmsg);

}

实现类:

importjavax.jws.WebService;

publicclassBankServicePortTypeImplimplementsBankServicePortType{

publicjava.lang.StringconsumeApplication(java.lang.Stringmsg){

System.out.println(msg);

}

publicjava.lang.StringtakeApplication(java.lang.Stringmsg){

System.out.println(msg);

}

2、新增webservice.xml文件,配置如下,并将webservice.xml引入到applicationContext.xml中

applicationContext.xml:

<importresource="webservice.xml"/>

webservice.xml:

<?xmlversion="1.0"encoding="UTF-8"?>

<beansxmlns="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">
<importresource="classpath:META-INF/cxf/cxf.xml"/>

<importresource="classpath:META-INF/cxf/cxf-extension-soap.xml"/>

<importresource="classpath:META-INF/cxf/cxf-servlet.xml"/>

<jaxws:endpointid="bankService"

implementor="com.isoftstone.pcis.policy.movePos.ws.BankServicePortTypeImpl"

address="/BankService">

</jaxws:endpoint>

</beans>

3、在web.xml中配置如下:


<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/applicationContext.xml</param-value>
</context-param>


<!--银联无限POS-->
<servlet>
<servlet-name>CXFServlet</servlet-name>
<servlet-class>
org.apache.cxf.transport.servlet.CXFServlet
</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>CXFServlet</servlet-name>

<!--==这个设置很重要,那么我们的webservice的地址就是http://localhost:8080/yourProgramName/webservice/===-->
<url-pattern>/services/*</url-pattern>
</servlet-mapping>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: