我专门使用的是WebSphere Integration V7,但我也可以使用V7.5.1(两者兼而有之)。
上下文:JAX客户端正在尝试创建一个JAX客户端,以调用通过JAX公开的人工任务管理器和WebSphere Process V7中的业务流程管理器服务。默认情况下,它们有附加的策略集,以及指定某些WS安全设置的提供程序绑定(因为这些设置在WSDL中没有定义)。
我已经想出了如何使用动态Web项目使其工作。我已经能够从WSDL生成JAX客户端代码。我已经能够从Process导出策略集以及提供者和客户端绑定,并将它们导入到我的工作区中。我已经能够将策略集和客户端绑定附加到客户端服务。我已经能够设置一个页面和一个servlet来调用我的web服务(测试客户机)。我已经能够在部署描述符和websphere绑定/扩展文件中设置安全设置以使其正常工作。
这一切都很棒,但在现实中,我们不希望只为了将web服务客户端暴露给我们正在编写的其他应用程序而使用war。我们希望生成一个web服务客户端jar,并将其与其他应用程序一起打包。
考虑到这一点,我已经找到了如何在IDE中使用常规Java项目,并将web服务客户端生成到其中。我还能够将策略集和客户端绑定附加到客户端。
我的问题是现在是如何调用它的?我像以前一样用我的页面和servlet创建了一个动态web项目来测试我的客户端。我将客户端项目设置为web库依赖项,这样它就可以访问客户端代码。我甚至可以像以前一样设置部署描述符来强制登录和授权。现在唯一的问题是,现在我不知道如何将凭据传递给我的web服务,因为它在它自己的"jar“中。在我访问菜单来设置TokenGenerator和CallbackHandler之前。现在,我无法访问这些菜单,因为客户端不在动态web项目中。所以现在我有一个“断开”,当然,当试图在服务器上运行它时,它会失败。
一定有办法这样做的。我应该能够生成一个客户端jar,并将它传递给它所需要的。以前有人遇到过这个吗?
发布于 2010-12-07 17:27:07
好的。我花了很长时间研究这个问题,阅读红皮书和developerworks文章,用头敲击键盘,终于有所进展。并不是一路走到那里,而是几乎。(希望一些IBM的东西能更容易地与你所得到的东西一起工作find...but。公平地说,用我所读到的,它是有意义的,而且是相当强大的。
总之,这里是Rational和WebSphere工具的诀窍:--您必须首先创建一个空的Java。--这是创建可移植web服务客户端的关键之一。
到目前为止:
精彩的!太棒了!现在您有了一个Java (又名jar),您可以使用它使其可移植。但是,如何使IBM工具高兴并将安全策略附加到客户端呢?
首先,我了解到最好将安全策略附加到WebSphere应用服务器/企业服务总线/Process的管理控制台中。有太多的事情要用安全性来解释,即使IBM给了您API来实现它,也不能尝试手动编写所有代码。请相信我。更容易的是定义服务器上的安全性,然后将其分配给客户端。
Anyway....in命令允许客户端在管理控制台上可见,以便为JAX安全性附加策略集和客户端绑定,它必须在"web级别“(由于缺少更好的术语),才能将jar视为web客户端。这意味着将jar作为一个J2EE实用程序Jar附加到EAR项目是行不通的。EAR不是"web级别“,而是”应用程序级别“。为此,您需要将Java与J2EE模块依赖项屏幕中的EAR关联起来,而不是将其作为Utility。相反,选中"lib“框。这意味着它可以可见/挂载到动态web项目/war的lib目录中(您也必须这样做)。令人惊讶的是,管理控制台现在将您的客户端jar视为一个真正的JAX服务客户端!现在,您可以将策略集和客户端绑定关联到它,以满足您的安全需求!
一开始这看上去很奇怪,但还是有点道理。毕竟,您正在处理web服务,并且正在使用web协议,因此在某些方面,将客户端置于应用程序的"web级别“是有意义的。
编辑:,我搞砸了安全策略,我发现此开发人员工作文章对我帮助最大。特别注意清单2 ClientTest.java。可悲的是,您必须将所有的安全代码编码到您的客户端,才能使其工作得最干净。还有另一个问题。IBM将允许您从运行在WebSphere之外的客户端创建用户名令牌,但它们不允许您在WebSphere之外创建LTPA令牌。因此,要测试这些令牌,您必须在本地打包和部署客户机,以测试所有这些令牌。
https://stackoverflow.com/questions/3782090
复制相似问题