前段時間公司需要對接一個采用Windows Communication Foundation(WCF)開發(fā)的平臺,我們通過web service的方式訪問對方提供的服務。期間遇到一個問題,在生產代碼的過程中如果通過-p指定生成代碼的包名時總會報沖突的異常。如果不指定包名生成的代碼因為包名沒有邏輯性所以不能直接使用,需要手工改包名個人覺得這個過程容易出錯且完全沒必要。
通過maven提供的插件cxf-gencode-plugin生產代碼的過程這里不展開講
有興趣的同志可移步官網http://cxf.apache.org/docs/maven-cxf-codegen-plugin-wsdl-to-java.html樓主親測還是相當好用的
圖中的-p命令讓一個namespace映射到一個我們自己定義的包
再結合官網-p的介紹(樓主因為文檔是英文的就沒有認真看,白找了半天博文…………)
更多介紹請移步http://cxf.apache.org/docs/wsdl-to-java.html
其實-p參數(shù)是可以反復使用映射多個namespace到不同的package。
打開wsdl發(fā)現(xiàn)namespace確實不止一個,如果只是用一個-p(-p xx.xx.package)則所有的代碼將會被生成到一個package下,如果類名沒有沖突當然不會發(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
....................