Tomcat /“无法部署应用程序,因为它包含deployment-ids”错误

时间:2010-11-24 10:30:10

标签: tomcat openejb

我遇到与在Tomcat 5服务器上部署两个应用程序相关的问题。 部署和运行服务器时,我收到一条错误消息,这也会阻止第二个应用程序正常运行。

Unable to deploy collapsed ear in war /my-app: Exception: Application cannot be deployed as it contains deployment-ids which are in use: 

之后会列出所有重复的ID。第二个应用程序是较小的应用程序,它被添加到管理所有实体的现有应用程序中。该项目由Eclipse nad Maven构建。有没有办法添加应该包含在第二个应用程序中的依赖项(我现在打算做什么)所以第二个应用程序将能够知道/使用已经存在的包?

感谢adnvace提供任何支持,

此致

3 个答案:

答案 0 :(得分:9)

引用from the FAQ

  

DuplicateDeploymentIdException:

     

如果您尝试部署相同的ejb   那么两个不同的Web应用程序   你会得到以下例外   (在conf / openejb.log中):

     

org.apache.openejb.DuplicateDeploymentIdException:   无法部署应用程序   包含在的部署ID   使用:

     

要解决此问题,请执行以下操作:

     
      
  1. 在conf下创建一个名为system.properties的文件   目录
  2.   
  3. 将以下内容添加到system.properties文件并保存

         

    openejb.deploymentId.format = {的moduleId} / {ejbName}

  4.   

the JIRA开始,此修复程序应适用于OpenEJB 3.1

答案 1 :(得分:0)

我不知道EAR文件的概念是什么,但Tomcat不是完整的Java EE应用服务器。它是一个servlet / JSP引擎;它没有办法处理EAR。如果您正在部署EAR,或者您的WAR由于某种原因在其中包含EAR,则您必须向Tomcat部署中添加类似OpenEJB的内容。

答案 2 :(得分:0)

在将liquibase添加到部署在同一容器中的多个Web应用程序之后,我遇到了apache-tomee-plume-7.0.4的相同问题。

此版本随附其自己的system.properties文件,我要做的就是取消注释定义上面显示的属性的行。

# openejb.deploymentId.format = {appId}/{ejbJarId}/{ejbName}

取消注释此行并进行重建后,我发现问题消失了,并且没有其他残留错误。