前段時間公司需要對接一個采用Windows Communication Foundation(WCF)開發(fā)的平臺,我們通過web service的方式訪問對方提供的服務(wù)污筷。期間遇到一個問題工闺,在生產(chǎn)代碼的過程中如果通過-p指定生成代碼的包名時總會報(bào)沖突的異常。如果不指定包名生成的代碼因?yàn)榘麤]有邏輯性所以不能直接使用瓣蛀,需要手工改包名個人覺得這個過程容易出錯且完全沒必要陆蟆。
通過maven提供的插件cxf-gencode-plugin生產(chǎn)代碼的過程這里不展開講
有興趣的同志可移步官網(wǎng)http://cxf.apache.org/docs/maven-cxf-codegen-plugin-wsdl-to-java.html樓主親測還是相當(dāng)好用的
圖中的-p命令讓一個namespace映射到一個我們自己定義的包
再結(jié)合官網(wǎng)-p的介紹(樓主因?yàn)槲臋n是英文的就沒有認(rèn)真看,白找了半天博文…………)
更多介紹請移步http://cxf.apache.org/docs/wsdl-to-java.html
其實(shí)-p參數(shù)是可以反復(fù)使用映射多個namespace到不同的package惋增。
打開wsdl發(fā)現(xiàn)namespace確實(shí)不止一個叠殷,如果只是用一個-p(-p xx.xx.package)則所有的代碼將會被生成到一個package下,如果類名沒有沖突當(dāng)然不會發(fā)生任何問題诈皿。但是樓主要對接的接口不同namespace中有相同名稱的類林束。這就是沖突的根源。
通過-p為每個namespace指定一個package纫塌,至此問題完美解決诊县。
-p http://schemas.microsoft.com/2003/10/Serialization/=**.**.serialization
-p http://schemas.microsoft.com/2003/10/Serialization/Arrays=**.**.serialization.arrays
....................