一、使用自動生成的java文件中的 ObjectFactory構造入參html
關於cxf生成客戶端代碼中的JAXBElement<String>
在使用cxf或者x-fire進行webservice開發時,從wsdl文件生成客戶端代碼時,若是有屬性的類型是String,可能會出現JAXBElement<String>類型。
爲何webservice客戶端不直接使用String,而使用JAXBElement<String>類型,天然是有緣由的,是由於服務器端的wsdl文件有nillable="true"這個屬性。
此時有兩種方法對這個JAXBElement<String>類型賦值。
1.java
使用這種方法時,有不少人發現客戶端的數據確實存入了,但是到了服務器端,經過.getUsername().getValue()調用時,倒是null,緣由就是Qname值不對!注意,在生成的客戶端代碼裏有private static final QName SERVICE_NAME = new QName("xxx","xx");
並非這個QName,真正的Qname要去ObjectFactory.java文件去找。只要QName寫對,這種調用方法是能夠的。
2.固然,還有一種更簡單的方法,直接使用ObjectFactory這個類來調用:web
這樣就簡便多了apache
二、生成代碼時服務器
使用的wsdl2java是cxf中的工具,cxf能夠到apache下面下載frontend
wsdl2java用法: 工具
wsdl2java -p com -d srcl aa.wsdl 測試
-p 指定其wsdl的命名空間,也就是要生成代碼的包名: spa
-d 指定要產生代碼所在目錄 .net
-client 生成客戶端測試web service的代碼
-server 生成服務器啓動web service的代碼
-impl 生成web service的實現代碼
-b binding-file-name
若是直接使用wsdl2java.bat -client -d E:/tmp -frontend jaxws21 wsdl文件
生成的客戶端代碼中有JAXBElement<String>
使用wsdl2java.bat -b "1.txt" -client -d E:/tmp -frontend jaxws21 wsdl文件,就能夠生成正常的pojo類
1.txt的文件內容爲
打包爲jar
進入到tmp目錄中
jar -cvf ***.jar .
原文地址:https://blog.csdn.net/z69183787/article/details/53505941