2013-11-20 84 views

回答

5

這是一個錯誤?

不,這不是一個錯誤,但從概念的角度來看是合理的。

JAX-WS在運行時必須查找wsdl位置的原因是什麼?

在構建時,您這意味着你需要知道什麼樣的業務的服務支持和WSDL生成類的消息具有什麼樣的結構(又名portTypestypesmessages)。

在運行時,會有很多不同的信息發揮作用。例如,服務運行的實際地址可能已更改。 bindings變得相關:消息應該以SOAP 1.1還是1.2發送,還是兩種格式都可以?此外,各種政策(安全性,可靠信息等)都可能附加到服務上。所有這些都是動態的,而且在構建時大多不相關。理想情況下,您應該能夠將您的客戶指向使用相同結構的其他服務,並且應該可以開箱即用。

我想回答另一個問題,我想你可能有:

這不是在案件總開銷那裏只是一個服務,它永遠不會改變?

是的。如果某個特定的WSDL具有單一服務,並且這種服務從不會從構建時狀態發生變化,那麼在運行時重新加載WSDL是不必要的,並且會浪費資源。但是,如果JAX-WS不允許更復雜的情況,例如綁定或策略等信息發生變化,或者服務的端點不止一個,那麼JAX-WS將會做出糟糕的工作。儘管如此,大多數JAX-WS實現都允許某些機制在本地存儲WSDL,並且不會在運行時將其加載到調用中。在RI中,只需將中的wsdlLocation指向類路徑中的文件即可。

相關問題