1

我们有一个在 RAD 8 中开发的 jax-ws 客户端。我们希望通过传递这个 JAR 来使客户端对应用程序可用。所以我做了一个java项目,生成了客户端,然后在它周围写了一个小包装来“漂亮起来”。

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

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

4

1 回答 1

0

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

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

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

于 2013-06-24T22:27:44.283 回答