2009-07-13 49 views
0

我有一個服務在網絡中的一個固定位置運行,附帶了一個WSDL。我可以很容易地創建一個帶有wsimport和通常的東西的jax-ws客戶端,但是我會真的喜歡能夠從另一個Web應用程序內部調用此服務。如何在Web應用程序內最好地實現Web服務客戶端?

不幸的是,我遇到了一些陷阱。其一,一切都工作得很好,在常規的Web容器,而不是在JBoss,這顯然是把一些不兼容的類在endorsed目錄進行部署失敗:

java.lang.ClassCastException: com.sun.xml.ws.client.WSServiceDelegate cannot be cast to javax.xml.ws.spi.ServiceDelegate21 

有一個博客條目的地方,提出瞭解決這一問題通過刪除認可的jax-ws jar,但這可能最終會在此特定服務器上破壞其他內容,因此我想知道是否沒有更好的方法來進一步隔離此問題?完全依靠j2ee特定的支持可能是一種選擇,但我真的想保留在簡單的Web容器上部署應用程序的功能(jetty,tomcat,...)。

回答

3

我的建議是忘記客戶端上的JAX-WS。它很複雜,不像它認爲的那樣便攜,而且通常是一個整合頭痛。

我建議一個更輕量級的web服務客戶端,比如Spring-WS's WebServiceTemplate。它會支持你現有的wsimport生成的JAXB綁定,但會忽略JAX-WS的東西。它非常簡單,容易,並且可以運行在從完整的JBoss堆棧到Jetty應用程序的任何應用程序中,而無需與現有框架碰撞。

+0

頭痛的+1 – 2009-07-13 13:31:31