Apache cxf 学习笔记Word格式文档下载.docx

上传人:b****5 文档编号:19846397 上传时间:2023-01-10 格式:DOCX 页数:13 大小:71.96KB
下载 相关 举报
Apache cxf 学习笔记Word格式文档下载.docx_第1页
第1页 / 共13页
Apache cxf 学习笔记Word格式文档下载.docx_第2页
第2页 / 共13页
Apache cxf 学习笔记Word格式文档下载.docx_第3页
第3页 / 共13页
Apache cxf 学习笔记Word格式文档下载.docx_第4页
第4页 / 共13页
Apache cxf 学习笔记Word格式文档下载.docx_第5页
第5页 / 共13页
点击查看更多>>
下载资源
资源描述

Apache cxf 学习笔记Word格式文档下载.docx

《Apache cxf 学习笔记Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《Apache cxf 学习笔记Word格式文档下载.docx(13页珍藏版)》请在冰豆网上搜索。

Apache cxf 学习笔记Word格式文档下载.docx

3.1cxf如何生成客户端16

3.2cxf会用到的注解(还未完善)17

导语:

该文档主要讲解CXF的实践例子,包括纯CXF和Spring集成的两个例子。

理论方面的知识还有待各位的完善。

1CXF简介

本章主要简介CXF的理论知识。

1.1CXF概述

CXF是Celtix+Xfire的结合体,ApacheCXF的前身叫ApacheCeltiXfire,现在已经正式更名为ApacheCXF了。

CXF继承了Celtix和XFire两大开源项目的精华,提供了对JAX-WS全面的支持,并且提供了多种Binding、DataBinding、Transport以及各种Format的支持,并且可以根据实际项目的需要,采用代码优先(CodeFirst)或者WSDL优先(WSDLFirst)来轻松地实现WebServices的发布和使用。

ApacheCXF已经是一个正式的Apache顶级项目。

1.2CXF支持

1.2.1协议标准

CXF支持多种协议标准:

JAX-WS、JAX-WSA、JSR-181和SAAJ;

支持SOAP1.1、1.2、WS-IBasicProfile、WS-Security、WS-Addressing、WS-RM和WS-Policy;

支持WSDL1.1、2.0;

支持MTOM;

1.2.2传输方式

CXF支持多种协议传输方式:

Bindings:

SOAP、REST/HTTP;

DataBndings:

目前支持JAXB2.0、Aegis两种,默认是JAXB2.0。

XMLBeans、Castor和JiBX数据绑定方式将在CXF2.1版本中得到支持;

格式(Format):

XML、JSON;

传输方式:

HTTP、Servlet、JMS和Jabber;

可扩展API:

允许为CXF增加其它的Bindings,以能够支持其它的消息格式,比如:

CSV和固定记录长度。

1.3CXF特点

1.3.1灵活部署

轻量级容器:

可在Tomcat或基于Spring的容器中部署Services;

集成JBI:

可以在如ServiceMix,OpenESBorPetals等等的JBI容器中将它部署为一个服务引擎;

集成SCA:

可以部署在如Tuscany之类的SCA容器中;

集成J2EE:

可以在J2EE应用服务器中部署Services,比如:

Geronimo、JOnAS、JBoss、WebSphereApplicationServer和WebLogicApplicationServer,以及Jetty和Tomcat;

独立的Java客户端/服务器。

1.3.2支持多种编程语言

全面支持JAX-WS2.0客户端/服务器编程模型;

支持JAX-WS2.0synchronous、asynchronous和one-wayAPI'

s;

支持JAX-WS2.0DynamicInvocationInterface(DII)API;

支持wrappedandnon-wrapped风格;

支持XMLmessagingAPI;

支持JavaScript和ECMAScript4XML(E4X),客户端与服务端均支持;

通过Yoko支持CORBA;

通过Tuscany支持SCA;

通过ServiceMix支持JBI;

1.3.3代码生成

JavatoWSDL;

WSDLtoJava;

XSDtoWSDL;

WSDLtoXML;

WSDLtoSOAP;

WSDLtoService;

1.4CXF环境要求

CXF框架是一种基于Servlet技术的SOA应用开发框架,要正常运行CXF,除了CXF框架本身之外,还需要JDK和Servlet容器的支持。

2实践讲解

本章讲解使用CXF框架发布WebServices服务的两个例子。

2.1CXF开发例子

讲解使用CXF框架发布WebServices的例子。

2.1.1步骤图

2.1.2步骤详解

下载CXF最新发布包

下载地址

http:

//cxf.apache.org/download.html

创建一个Web工程

引入CXFjar包

把前面下载的CXF包解压,进入lib目录。

把所有jar包拷贝到刚创建的Web工程的lib目录。

配置CXFServlet

打开web.xml配置CXF的接入Servlet。

样例如下:

<

servlet>

<

servlet-name>

CXFServlet<

/servlet-name>

<

servlet-class>

org.apache.cxf.transport.servlet.CXFServlet<

/servlet-class>

<

load-on-startup>

1<

/load-on-startup>

/servlet>

servlet-mapping>

url-pattern>

/cxftest/*<

/url-pattern>

/servlet-mapping>

编写待发布的接口

下面编写一个简单的登录接口。

importjavax.jws.WebService;

@WebService

publicinterfaceLogin{

Stringlogin(Stringname,Stringpassword);

}

编写接口的实现类

@WebService(endpointInterface="

com.test.service.cxf.Login"

serviceName="

Login"

publicclassLoginImplimplementsLogin{

publicStringlogin(Stringname,Stringpassword){

Stringresult="

登录CXF服务端成功!

"

;

if(!

cxf"

.equalsIgnoreCase(name)||!

.equalsIgnoreCase(password)){

result="

用户名或密码不正确,请重新登录!

}

returnresult;

}

编写发布服务类

importjavax.servlet.ServletException;

importjavax.servlet.http.HttpServlet;

importorg.apache.cxf.jaxws.JaxWsServerFactoryBean;

publicclassInitServletextendsHttpServlet{

@Override

publicvoidinit()throwsServletException{

LoginImplloginImpl=newLoginImpl();

JaxWsServerFactoryBeanjwpFactory=newJaxWsServerFactoryBean();

jwpFactory.setAddress("

/Login"

);

jwpFactory.setServiceClass(LoginImpl.class);

jwpFactory.setServiceBean(loginImpl);

jwpFactory.create();

}

配置启动发布服务类

前面我们把发布服务的类实现在一个Servlet里,所以把该类配置到web.xml里这样启动工程时就会发布WebServices。

发布工程并启动

获取发布的WSDL

访问发布的工程再拼加上CXF监听路径。

如:

//localhost:

8080/StudyCXF/cxftest/Login?

wsdl

生成客户端代码

查看附录3.1如何生成客户端代码。

然后把生成的客户端代码放到客户端工程。

提示:

从生成的客户端代码中会有很多实际上我们用不到的源文件,可根据实际情况进行清理,这里只需要Login.java。

编写客户端调用代码

客户端一般是其它的系统,这里只讲解客户端在调用服务端的代码编写。

importorg.apache.cxf.jaxws.JaxWsProxyFactoryBean;

publicclassCXFClient{

publicstaticvoidmain(String[]args){

JaxWsProxyFactoryBeanjwpFactory=newJaxWsProxyFactoryBean();

jwpFactory

.setAddress("

wsdl"

jwpFactory.setServiceClass(Login.class);

Loginlogin=(Login)jwpFactory.create();

Stringresult=login.login("

"

System.out.println("

登录结果:

+result);

2.2CXF与Spring集成例子

讲解CXF与Spring集成发布WebServices的例子。

2.2.1步骤图

2.2.2步骤详解

配置web.xml

打开web.xml配置CXF的接入Servlet,和Spring的接入Listener。

context-param>

param-name>

contextConfigLocation<

/param-name>

param-value>

WEB-INF/conf/beans.xml<

/param-value>

/context-param>

listener>

listener-class>

org.springframework.web.context.ContextLoaderListener<

/listener-class>

/listener>

beans.xml是Spring的配置文件,请根据实际情况配置所在路径。

后面配置服务端是在该文件里配置。

下面编写一个简单的订单接口。

importjavax.jws.WebParam;

publicinterfaceOrderProcess{

StringprocessOrder(@WebParam(name="

Order"

)Orderorder);

更多的注解描述请查看附录3.2。

com.test.service.spring"

OrderProcess"

publicclassOrderProcessImplimplementsOrderProcess{

publicStringprocessOrder(Orderorder){

StringuserName=order.getUserName();

returnuserName+"

您好:

订单处理成功,生成的订单号是:

88888888"

配置服务端

编辑beans.xml文件,配置服务端接口类。

!

--

jaxws:

endpointid="

orderProcess"

implementor="

com.test.service.spring.OrderProcessImpl"

address="

/OrderProcess"

/>

-->

serverid="

test"

address="

>

serviceBean>

beanclass="

/bean>

/jaxws:

server>

这里给出二种发布服务端接口的方式,随便哪一种都可以

8080/StudyCXFSpring/cxftest/OrderProcess?

客户端工程应该也是一个引入了CXF集成Spring包的工程,创建步骤同服务端工程。

从生成的客户端代码中会有很多实际上我们用不到的源文件,可根据实际情况进行清理,这里只需要Order.java,OrderProcess.java

配置客户端

在客户端工程中找到Spring的配置文件并配置如下内容。

beanid="

client"

class="

com.test.service.spring.OrderProcess"

factory-bean="

clientFactory"

factory-method="

create"

org.apache.cxf.jaxws.JaxWsProxyFactoryBean"

propertyname="

serviceClass"

value="

/property>

address"

value="

8080/StudyCXFSpring/cxftest/OrderProcess"

importorg.springframework.context.support.FileSystemXmlApplicationContext;

FileSystemXmlApplicationContextcontext=newFileSystemXmlApplicationContext(

"

WebRoot/WEB-INF/conf/client-bean.xml"

OrderProcessorderProcess=(OrderProcess)context.getBean("

Orderorder=newOrder();

order.setUserName("

yihuajun"

Stringresult=orderProcess.processOrder(order);

System.out.println(result);

3附录

3.1cxf如何生成客户端

dos命令下进入cxf解压目录的bin路径,输入如下命令:

wsdl2java-dsrc-client 

8060/soa/services/otherTrackedVehicleSoapService?

wsdl2java在cxf包中的bin路径下

另外里面的src为生成代码存放路径,src必须手动创建。

使用cxfwsdl2java或javaxwsimport工具的时候,可能会遇到关于生成的Response类文件名冲突的问题 

WSDLToJava 

Error:

Thrown 

by 

JAXB 

:

class/interface 

with 

the 

same 

name 

XXX**"

is 

already 

in 

use. 

Use 

class 

customization 

to 

resolve 

this 

conflict. 

目前可选择的方案:

1.使用-autoNameResolution自动处理 

wsdl2java-autoNameResolutionhttp:

or 

wsimport-pcom.test.client-keep 

wsdl-B-XautoNameResolution 

3.2cxf会用到的注解(还未完善)

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 法律文书 > 调解书

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1