我专门使用 WebSphere Integration Developer V7,但我也可以使用 Rational Software Architect V 7.5.1(因为我两者都有)。
上下文:我正在尝试创建一个 JAX-WS 客户端来调用 WebSphere Process Server V7 中的 Human Task Manager 和 Business Flow Manager 服务,这些服务通过 JAX-WS 公开。默认情况下,它们附加了策略集和提供者绑定,这些绑定指定了一些 WS-Security 设置(因为这些未在 WSDL 中定义)。
我已经弄清楚如何使用动态 Web 项目使其工作。我已经能够从 WSDL 生成 JAX-WS 客户端代码。我已经能够从 Process Server 导出策略集以及提供者和客户端绑定,并将它们导入我的工作区。我已经能够将策略集和客户端绑定附加到客户端服务。我已经能够设置一个页面和一个 servlet 来调用我的 Web 服务(以测试客户端)。而且我已经能够在部署描述符和 websphere 绑定/扩展文件中设置安全设置以使其正常工作。
这一切都很棒,但实际上我们不希望仅仅为了将 Web 服务客户端暴露给我们正在编写的其他应用程序而引起战争。我们想生成一个 Web 服务客户端 jar 并将其与其他应用程序打包在一起。
考虑到这种思路,我已经能够弄清楚如何在我的 IDE 中使用常规 Java 项目并在其中生成 Web 服务客户端。我还能够将策略集和客户端绑定附加到客户端。
我现在的问题是如何调用它?我像以前一样使用我的页面和 servlet 创建了一个动态 Web 项目来测试我的客户端。我将我的客户端项目设置为 Web 库依赖项,因此它可以访问客户端代码。我什至可以像以前一样设置部署描述符来强制登录和验证。现在唯一的问题是我无法弄清楚如何将凭据传递给我的 Web 服务,因为它位于它自己的“jar”中。在我访问菜单来设置 TokenGenerator 和 CallbackHandler 之前。现在,我无法访问这些菜单,因为客户端不在动态 Web 项目中。所以现在我有一个“断开连接”,当尝试在服务器上运行它时它当然会失败。
必须有办法做到这一点。我应该能够生成一个客户端 jar 并传递它需要的东西。有人遇到过这种情况吗?