java - 如何在 Web 应用程序中最好地实现 Web 服务客户端?

标签 java web-services jboss

我有一个服务在网络中的固定位置运行,附加了 WSDL 等。我可以使用 wsimport 轻松创建一个 jax-ws 客户端以及独立执行此操作时的常用内容,但我会真的很希望能够从另一个 Web 应用程序内部调用此服务。

不幸的是,我在这里遇到了一些问题。其一,在常规 Web 容器中一切都运行良好,但在 jboss 上则不然,这显然会在认可的目录中放入一些不兼容的类,从而导致部署失败:

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 等)上部署应用程序的能力。

最佳答案

我的建议是忘记客户端上的 JAX-WS。它很复杂,而且不像想象的那么可移植,并且常常是一个令人头痛的集成问题。

我建议使用更轻量级的Web服务客户端,例如Spring-WS's WebServiceTemplate 。它将支持现有的 wsimport 生成的 JAXB 绑定(bind),但会忽略 JAX-WS 内容。它简单、容易,并且可以在从完整的 JBoss 堆栈到 Jetty 应用程序的任何环境中运行,而无需与现有框架发生冲突。

关于java - 如何在 Web 应用程序中最好地实现 Web 服务客户端?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1119123/

相关文章:

java - 创建动态 log4j 输出文件

java - 无法在 H2 中查看最近插入的结果

web-services - 错误 :Cannot compile Groovy files: no Groovy library is defined for module "myprojectname"

asp.net - WCF 服务绑定(bind)设置

java - ArrayList<ArrayList<String>> webservice 的参数

java - Picketlink 2.6+ Jboss AS 7.1.1

java - spring 3.2.4 应该使用哪个版本的 mybatis 和 mybatis-spring jar?

java - 静态变量 : Good or Bad?

java - jar 文件位置 - Ear 文件还是服务器 lib 文件夹?

java - Eclipse 上的新 JBoss 生成和配置