Tomcat / “Application cannot be deployed as it con

2019-05-07 14:51发布

问题:

I am facing a problem connected with deploying two application on Tomcat 5 server. When deploying and running the server I receive an error message, which also prevents the second application to be properly run.

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

And after that there is a list of all duplicated ids. The second application is a smaller one, which is added to an already existing one managing all the entities. The project is build by Eclipse nad Maven. Is there a way to add dependency which should be included in the second application ( that what I intend to do right now ) so the second application will be able to know/use already exsiting packages?

Thank you in adnvace for any support,

Regards

回答1:

Quoting from the FAQ

DuplicateDeploymentIdException:

If you try to deploy the same ejb in two different web applications, then you will get the following exception (in conf/openejb.log):

org.apache.openejb.DuplicateDeploymentIdException: Application cannot be deployed as it contains deployment-ids which are in use:

To fix the issue, do the following:

  1. Create a file named system.properties under the conf directory
  2. Add the following to the system.properties file and save

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

From the JIRA, this fix should apply to OpenEJB 3.1



回答2:

I don't know what that notion of an EAR file is, but Tomcat is not a full Java EE app server. It's a servlet/JSP engine; it has no way to deal with EARs. If you're deploying an EAR, or your WAR has an EAR inside it for some reason, you'll have to add something like OpenEJB to your Tomcat deployment.



回答3:

I ran into the same problem with apache-tomee-plume-7.0.4, after adding liquibase to more than one web-apps deployed in the same container.

this version comes with it's own system.properties file, all I had to do was to uncomment the line which defines the property shown above.

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

After uncommenting this line and rebuilding, I found that the problem went away and I experienced no other residual errors.