1

帖子: 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 作为默认条目,并将其设置为“客户端和提供者”。

我实际上尝试了比这更多的排列。但他们都没有工作。

有什么想法我在这里做错了吗?或者至少缩小一般问题的范围?我接近正确吗?

4

0 回答 0