【发布时间】:2016-10-03 03:59:01
【问题描述】:
我们之前从未在 Websphere 中使用过 WS-Transaction 策略,因此我正在开发一个原型来评估它。
这就是原型的结构。 我用eclipse开发了两个应用APP_A和APP_B。
- APP_A 包含两个 JAXWS Web 服务 service_X 和 service_Y
- service_X 接受最少的数据,将其写入 oracle 数据库的表中,然后在响应中返回主键
- service_y 接受从 service_X 返回的主键和一些其他最小数据,将其写入同一个 oracle 数据库上的不同表,然后在响应中返回主键
- APP_B 包含一个 JAXWS Web 服务 service_Z
- service_z 接受向 service_x 和 service_y 发布请求所需的所有数据,并在响应中返回从 service_x 和 service_y 返回的主键
APP_A 和 APP_B 均部署到 Websphere 8.5.5.9,并且已经测试成功。
然后通过 Websphere 管理控制台,我创建了一个新的应用程序策略集,并包含了 ws-transaction 策略。然后我将此策略附加到 APP_A 中的提供程序策略和 APP_B 中的客户端策略,然后重新启动 Websphere。
然后我向 APP_B 提交了一个请求,从日志文件中我可以看到请求被 APP_B 中的 service_z 成功接收,但是当它尝试向 APP_A 中的 service_x 发布请求时,报告了以下错误:
[02/06/16 11:53:43:040 BST] 00000076 AxisEngine E org.apache.axis2.engine.AxisEngine receive WTRN0127E: Operation blocked by policy type configuration.
我关注了 IBM 开发人员工作的几篇在线文章,这些文章都暗示一切都应该通过管理控制台应用策略来工作,但不幸的是我仍然遇到这个错误。
我怀疑我可能需要在服务调用的标头中包含一些内容,但我不确定这是什么或如何实现它。
其中一篇文章建议使用 IBM Rational Application Developer 工具,从管理控制台导出策略,然后在部署之前将它们导入到项目中。我按照说明使用 IBM RAD 9.11 进行了尝试,但仍然无法解决问题。
任何帮助/建议将不胜感激,在此先感谢您的帮助。
【问题讨论】:
-
也许链接到包含您尝试过的说明集的特定文章会有所帮助。例如。什么类型的绑定等。似乎应该传递的任何标头都来自将策略集附加到客户端。
标签: websphere jax-ws websphere-8 ws-transaction