我们实现了Restful服务,该服务又调用了远程EJB方法,问题出在EJB TXN完成之前或运行时,restful服务会返回控件。
这里Caller(Restful service)和Invoked EJB方法执行并行运行。并且EJB提交正确,在提交中没有问题。 我们对EJB方法的Restful服务调用就像对该EJB的异步调用一样。简而言之 - > Restful服务调用EJB,不等到EJB返回,返回控件并结束,同时EJB也独立运行并提交。
我们的EJB只是同步的,甚至Restful服务也没有任何明确的和Asynch注释。
我们需要Restful服务等待EJB返回它的响应。
相同的方案与我们在weblogic服务器中的预期相同。但是在JBOSS中,每次都会出现上述问题。
答案 0 :(得分:0)
现在我发现问题在于Standalone.xml中的以下配置,
<remote connector-ref="remoting-connector" thread-pool-name="default">
<channel-creation-options>
<option name="WORKER_READ_THREADS" value="2" type="xnio"/>
<option name="WORKER_WRITE_THREADS" value="2" type="xnio"/>
<option name="MAX_INBOUND_MESSAGES" value="150" type="remoting"/>
<option name="MAX_OUTBOUND_MESSAGES" value="150" type="remoting"/>
</channel-creation-options>
</remote>
<thread-pools>
<thread-pool name="default">
<max-threads count="150"/>
<keepalive-time time="200" unit="minutes"/>
</thread-pool>
</thread-pools>
<in-vm-remote-interface-invocation pass-by-value="false"/>
当我增加最大线程数和保持时间时,有时它没有任何问题。但有时我仍然会得到上述错误。如何在standalone.xml
中确定上述配置的适当值