java - jax-ws 客户端分布在 jar 中

标签 java web-services jax-ws rad websphere-7

我们正在 RAD 8 中开发一个 jax-ws 客户端。我们希望通过传递此 JAR 来使客户端可供应用程序使用。所以我创建了一个java项目,生成了客户端,然后围绕它编写了一个小包装器来“美化它”。

我将其分发到一个网络应用程序,它工作正常,一切都很好。但现在我在服务和客户端上添加“策略集”,例如 WS-Transaction。事实证明,简单的 java 项目不支持 Web 服务客户端的正确“Project Facets”,所以我不能这样做。什么样的项目可以让我将这些方面放入一个可以传递的 jar 中?我知道我可以在网络应用程序中完成此操作,但我不希望用户必须知道如何运行生成或使用生成的客户端(这对用户不太友好)。

-什么类型的项目允许 Web 服务客户端 jar 获取策略集? - 项目已经存在后,如何更改其类型?该项目已经在源代码控制中,我不想重新创建整个事情。

最佳答案

由于您没有提到任何特定的应用程序服务器,我将仅从 WAS 角度回答(因为这是我所知道的,并且我猜您正在使用的)。

对于要使用策略集和绑定(bind)配置的服务客户端,必须将客户端注入(inject)(@WebServiceRef 注释)到某个容器管理的组件中。这可以是 servlet、portlet、EJB 等。然后,每个应用程序都需要应用策略集并绑定(bind)到其客户端实例。所以本质上使用它的人都需要配置它。你不能只做一次然后每个人都分享。至少不是你想要的那样。

我之前在一个项目中遇到了问题。我的解决方案是使用 EJB 作为容器管理的组件,将客户端实例注入(inject)其中。我为 EJB 组件配置了一次客户端。然后,EJB 仅为服务 API 方法实现一个哑外观。然后,所有 servlet 只需获取对 EJB 的引用(通过更多注入(inject)或 JNDI 查找)并通过 EJB 调用服务客户端。它最终成为一个额外的层,只是为了进行服务调用,但这意味着我们为所有 servlet 配置一次客户端,而不是为每个 servlet 单独配置一次。

关于java - jax-ws 客户端分布在 jar 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17281054/

相关文章:

c# - 使用测试驱动开发时俄罗斯方 block 的验收测试

java - 在 Maven 构建中使用 Eclipse Java Compiler (ecj)

java - 使用 xpath 轴在 Selenium 中遍历 DOM

web-services - Mule CXF SOAP 服务 - 针对 XSD 进行验证并发送自定义响应而不是 Soap 错误

Java Webservice 在 Apache Tomcat 上命中代理而不是目标

java - 如何创建一个servlet来返回某个div中的数据库查询

web-services - JAXWS - 生成 SOAP 消息的正确结构的问题

java - WSDL 中缺少信息(JAX-WS 运行时)

java - 管理 JAX WS 工件的问题

java - 无法在Apache Tomcat上运行JAX-WS Java Web服务