我在 weblogic 服务器中部署了一个应用程序。在该应用程序中,我通过组合中的 bpel 调用异步 Web 服务。 5 分钟后超时。 我尝试在调用 Activity 期间添加以下代码: bpelx:for="'PTM20'" 但仍然超时5分钟。
除了添加这个之外,我还需要做什么吗?是否有任何全局 SOA 属性需要修改?
我通过这样的 bpel 调用 aync Web 服务:
< invoke name="myprocess" inputVariable="varx" operation="method" bpelx:for="'PTM20'" ....>
我遇到的异常如下:
<bpelFault><faultType>0</faultType>
<remoteFault xmlns="http://schemas.oracle.com/bpel/extension">
<part name="summary">
<summary>oracle.fabric.common.FabricInvocationException: Unable to invoke endpoint URI "my_webservice_url" successfully due to: javax.xml.soap.SOAPException: javax.xml.soap.SOAPException: Message send failed: Read timed out</summary></part>
<part name="detail"><detail>Unable to invoke endpoint URI "my_webservice_url" successfully due to: javax.xml.soap.SOAPException: javax.xml.soap.SOAPException: Message send failed: Read timed out</detail></part>
<part name="code"><code>null</code></part>
</remoteFault></bpelFault>
在查看审计跟踪时,我可以看到调用和发生超时之间的时间差为 5 分钟。并没有像预期的那样等待20分钟。
请帮忙。
谢谢。
最佳答案
配置 SOA/BPEL 引擎超时时需要考虑几个地方:
- 域范围内的全局 JTA 超时设置
- 各个 BPEL 引擎 EJB 超时
理想情况下,您永远不想遇到这些超时,因为您将无法进行正确的错误处理。为了避免这种情况,您应该在传出引用链接上设置单独的超时,并确保它们的值小于上面提到的两个。
关于这个主题有很多博客文章,初学者可以看看 this post
关于java - SOA 中的超时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40301872/