我有一个奇怪的问题,这是系统的快速快照:我有一个调用本地 EJB bean 的 Web 应用程序,让我们调用本地 EJB 'LocalEJB',这个 EJB 调用远程 EJB - 'RemoteEJB' 方法,该方法对外部系统并返回字符串结果。一切都发生在 Weblogic 8.1 中
这是一个示例处理:
Web应用程序:
//create reference to the local bean
locHome = (LocalHome)ServiceLocator.getInstance().getLocalHome("ejb/localejb");
beanRef = locHome.create(); //call the bean method
String result = beanRef.updateSmth(data.getId(),data.getRelatedIds(),Integer.valueOf(data.getState()));
//print the result
LOG.debug("result is: " + result);
我在 ejb 应用程序内的本地 bean 上启用了日志记录:
log.debug("state " + state);
res = session.updateSmth(id, relatedIds, state);
log.debug("result inside bean call: " + res);
其中 'session' 是对远程 bean 的引用。
现在会发生什么,请求到达应用程序,方法 'beanRef.updateSmth' 执行,这会调用本地 ejb 中的方法,一两秒后我可以在日志文件中看到例如。'result inside bean call: 0231423',这意味着远程 bean 返回了结果,但有时我必须等待 5-6 分钟才能在我的 Web 应用程序中看到结果(语句 'LOG.debug("result is: " +结果);')。将结果传递给 Web 应用程序需要这么长时间,是事务提交(本地 bean 具有“必需”)吗?
我可以在 weblogic 配置 xml 文件中看到事务超时设置为 1800 秒,但结果是否准备好立即返回真的很重要吗?