我有一個幾年前在C++中創建的Web服務,並且由.NET客戶端使用C#的「wsdl.exe」生成客戶端存根。出於各種原因,我現在還需要一個Java客戶端,並且願意使用JAX-WS將使用限制在Java 6(JDK 1.6)中。生成的存根工作正常,即使打包在一個.jar中,但我對JAX-WS Web服務客戶端希望部署的方式有問題。它看起來像我有的問題是可解決,但沒有任何建議的方式似乎工作。將Web服務的WSDL嵌入到JAX-WS客戶端.jar
JAX-WS希望WSDL可以訪問,最好是從網絡訪問,因爲它每次啓動時都會解析WSDL以創建綁定。像Creating a web-service client with a known but inaccessible wsdl中的jgrowl一樣,客戶端可能無法訪問JAX-WS使用的URL(可能是構建機器上的文件或指向本地主機的指針)的WSDL。我想將WSDL發佈到客戶端.jar中,但最簡單的解決方案(-wsdllocation "/path/to/wsdl/in/jar.wsdl"
)會打印出我不想顯示的警告。
我也更喜歡不是讓客戶端做類似解決方案jgrowl發現,似乎工作,但不只是工作。在Google上發現的文章主要針對服務器WSDL位置,但建議客戶端應該能夠使用META-INF/jax-ws-catalog.xml
文件將-wsdllocation
中使用的URL轉換爲.jar文件中的路徑,但這些文件在我們的測試中似乎不起作用。
是否有「祕方」,讓我可以把WSDL中的.jar內的某處,有一個JAX-WS客戶只是工作與客戶端的用戶,並在沒有警告的部分沒有額外的努力?
不幸的是,執行'-wsdlLocation wsdl/MaintainAddress.wsdl'會導致警告 - 至少當我在星期五嘗試時。也就是說,看起來''jax-ws-catalog.xml'東西今天起作用。 讓我感到困惑。 – 2011-05-09 18:20:11
你能用jax-ws-catalog.xml解決方案更新/回答你的問題嗎?我想在可預見的將來遇到同樣的問題......謝謝! – 2011-05-09 19:43:34
@奧斯汀齊格勒 - 如果你陳述警告信息是什麼,它可能會有所幫助。 – McDowell 2011-05-09 19:53:14