Apache cxf 学习笔记Word格式文档下载.docx
- 文档编号:19846397
- 上传时间:2023-01-10
- 格式:DOCX
- 页数:13
- 大小:71.96KB
Apache cxf 学习笔记Word格式文档下载.docx
《Apache cxf 学习笔记Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《Apache cxf 学习笔记Word格式文档下载.docx(13页珍藏版)》请在冰豆网上搜索。
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
:
A
class/interface
with
the
same
name
XXX**"
is
already
in
use.
Use
a
class
customization
to
resolve
this
conflict.
目前可选择的方案:
1.使用-autoNameResolution自动处理
wsdl2java-autoNameResolutionhttp:
or
wsimport-pcom.test.client-keep
wsdl-B-XautoNameResolution
3.2cxf会用到的注解(还未完善)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Apache cxf 学习笔记 学习 笔记
![提示](https://static.bdocx.com/images/bang_tan.gif)