帖子: 53 发布 今天 1:48:38 PM 0
我正在 RAD 8.0.4 中开发一个 jax-ws Web 服务概念验证,并在 WebSphere 7 中运行。我们的应用程序使用 Spring 和 Hibernate,但我们都不是这方面的专家。我们需要使用我们的 Web 服务启用全局事务,以便它可以处理客户端应用程序的事务。我按照我在包括 IBM 在内的各种网站上找到的说明进行操作,我认为我配置了所有内容但它不起作用。每个事务(客户端和服务)独立工作,但我在客户端提交之前强制异常。这会回滚客户端事务,但不会回滚服务事务。此外,websphere 上的日志记录(不是简单的 systemout ......来自管理控制台的跟踪)吐出一些 gobbledy-gook,这对我来说意味着客户端没有提供任何事务上下文。
我最初在 RAD 的服务视图和管理控制台中都设置了策略,但我已经读过,如果你同时设置,它就不起作用。但从那以后我只尝试了一个,另一个都没有。这是我所做的:
在我的 wsdl 中,我添加了:
<wsp:Policy wsu:Id="ATPolicy">
<wsp:ExactlyOne>
<wsat11:ATAssertion/>
<wsat10:ATAssertion/>
<!-- omitted assertions -->
</wsp:ExactlyOne>
</wsp:Policy>
和 wsp:PolicyReference 行
<binding name="TxPortBinding" type="tns:TxDelegate">
<soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
<operation name="insertDBTrans">
<wsp:PolicyReference URI="#ATPolicy" required="true"/>
<soap:operation soapAction=""/>
<input>
<soap:body use="literal"/>
</input>
<output>
<soap:body use="literal"/>
</output>
</operation>
</binding>
在管理控制台版本中,导入 WS-Transaction 策略后,我导航到 Services->Service Providers->TxService,并选中所有三个级别的复选框,TxService、TxPort 和 insertDBTrans。选择附加策略集->WSTransaction。单击服务上的禁用链接,然后选择“导出的 WSDL”。确定并保存。
然后到Services->Service Clients->TxService。检查客户端,附加客户端策略集->WSTransaction。选择的客户和供应商政策。
但这没有用。所以我删除了它们,转而进入 RAD 的服务视图。右键单击服务,管理策略集。将 WSTransaction 放在第一页上,并附上 Provider Sample 作为绑定。它一直设置为操作名称 - insertDbTrans。
在服务视图的客户端下,我将客户端设置为用户提供者策略,第二页,选择 WSTransaction 作为默认条目,并将其设置为“客户端和提供者”。
我实际上尝试了比这更多的排列。但他们都没有工作。
有什么想法我在这里做错了吗?或者至少缩小一般问题的范围?我接近正确吗?