2009-07-13 55 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