Tomcat 调用托管在 JBOSS 4 上的 EJB 在新部署后生成错误

Tomcat calling EJB hosted on JBOSS 4 generates errors after new deployment

我的应用程序中有以下设置:

ABCAPI.java (TestAPIInterface.jar)

public void search(FormData data);

ABCAPIBean.java (TestAPI.ear)

public void search(FormData data) 
{
    //log
    //more code
}

ABCAction.java (TestUI.war)

public void loadList(session) {
     //get ABCAPIBean
     api.search(loadFormData(session));
}
public FormData loadFormData(session) {
     //get some information from ABCCore class based on form filters
}

ABCCore.java (TestCore.jar)

在 JBoss、tomcat 服务器

中部署了以下包

JBoss 集群(node1, node2)

TestAPI.ear
TestAPIInterface.jar
TestCore.jar

Tomcat Web 服务器(节点 1、节点 2)

TestUI.war
TestAPIInterface.jar
TestCore.jar

在我对 ABCCore.java 文件进行一些代码更改并将最新的 TestCore.jar 部署到所有服务器之前,一切似乎都运行良好。

现在,当访问 UI 时,我交替获得结果和错误。当我检查日志时,每当 UI 应用程序从节点 1 请求 ABCAPIBean 时,它会抛出错误 'InvalidObjectException',而当它从节点 2 请求时,它会给出结果。 'ABCCore.java'.

中引入的新常量会发生这种情况

一个可能的问题是最新的 jar,但我通过将 TestCore.jar 从 node2 复制到 node1 来消除它。我仍然在 node1 中看到同样的问题。还有其他建议吗?

P.S:我在 Jboss node1 中没有看到日志语句 (ABCAPIBean),但在 Jboss node2 中看到了它。 InvalidObjectException 即将出现在 tomcat UI 日志中

这看起来像是部署错误。如果您确定您的服务器上分别有正确版本的 jar 和 war 文件,您可以尝试清理部署。

在Tomcat中,停止进程,删除work目录内容,重新开始。 JBOSS 中也有一个类似的工作目录,您可以按照相同的方式进行(停止、清理、启动)。

顺便说一句,你没有说你是在 Windows 还是 Linux。 Windows 上的 Tomcat 上存在旧错误,称为 "jar locking",可能会产生此类错误。