首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

cxf学习与运用经验记录

2012-08-29 
cxf学习与使用经验记录最近搞有个webservice的client需要开发,因为看了camel一段时间,也知道cxf这个webser

cxf学习与使用经验记录

最近搞有个webservice的client需要开发,因为看了camel一段时间,也知道cxf这个webservice的框架,所以这次就学习下试试吧。这里记录一下使用过程中的一些记录。

1.通过使用cxf的wsdl2java工具,将wsdl转换成java类,

? ?这个工具有几个参数,我使用的是:

wsdl2java -all -exsh true -d src xxxx.wsdl

这里-exsh需要注意,默认为false,表示生成的java接口方法中,不带soap head的参数,我开始没有设置,后来在处理soap response的head时候遇到问题,就把这个设置成了true。

具体查看http://cxf.apache.org/docs/wsdl-to-java.html

?

2.spring配置cxf的client

?

?

<bean id="authHead" service  address="http://127.0.0.1:8080/MayorHotline/MayorHotline.asmx?wsdl" ><jaxws:outInterceptors><bean name="code">public void handleMessage(SoapMessage sm) throws Fault {Document doc=DOMUtils.createDocument();Element userName=doc.createElement("UserName");  userName.setTextContent(this.userName);  Element passWord=doc.createElement("PassWord");  passWord.setTextContent(this.password);  Element root=doc.createElementNS("http://www.wuxi.gov.cn/", "AuthHeader");          root.appendChild(userName);          root.appendChild(passWord);QName qname=new QName("RequestSOAPHeader");SoapHeader head=new SoapHeader(qname,root);          List<Header> headers=sm.getHeaders();          headers.add(head);}
?

3.通过Holder来处理soap head

?

?

Holder<CustomHeader> customHeaderHolder = new Holder<CustomHeader>();ArrayOfAskAnswerMainEntity aaames=service.getInsertAskAnswerMainList(projectId,customHeaderHolder);CustomHeader cHeader=customHeaderHolder.value;
?

这里的CustomHeader就是生成的webservice接口中定义的

@WebParam(name = "CustomHeader", targetNamespace = "http://www.wuxi.gov.cn/", mode = WebParam.Mode.OUT, header=true) javax.xml.ws.Holder<CustomHeader> customHeaderHolder

通过传递Holder到接口方法,就能在customHeaderHolder.value获取到soap response中的head对象

?

?

cxf还有太多要学习,这里只是第一次使用,便于以后查看。

?

热点排行