Search code examples
deploymentearejb-2.xwebsphere-8

Websphere v8.0.0.6 WASX7017E, ADMA0209E Application exception while Deployment of EJB 2.0 EAR


I have the following problem with WebSphere 8.0.0.6 and no solution is found on the web. I hope anyone can help with this and this will help someone else with this problem.

Error Description:

Error #1 (while installing application):

WASX7017E: Exception received while running file /tmp/wsant3816346180883063201jacl;
exception information:com.ibm.websphere.management.application.client.AppDeploymentException:
com.ibm.websphere.management.application.client.AppDeploymentException

Following Error:

ADMA0209E: Enterprise JavaBeans (EJB) module ServerEJB.jar contains the following 
container-managed persistence (CMP) or bean-managed persistence (BMP) : 
... (list of all entities)

Explanation:

I generate an EAR with an EJB 2.0 component/project. Up to now I have deployed this EAR within WAS 6.1 successfully, but with WAS 8 it doesn't deploy anymore.

I have the necessary bind-ejbjar.xmi, even in the new format - converted with the script from IBM.

Questions:

WAS 8 still seems to know that there exists a EJB 3 component in the EAR - the question is WHY?

What is the minimum requirement for a EAR/EJB-Module to deploy in WAS 8 - there must be big changes?

Are there more bind-files to be included?

Thanks for help

UPDATE: So obviously there are prerequisites to declare a package as EJB2.x. See IBM-HelpCenter:

IBM WebSphere info for developers DE

But I fullfill all of this two prerequisites.

How do I have to package the jar for Websphere 8 to make it acceptable as an EJB2.x?

http://pic.dhe.ibm.com/infocenter/wasinfo/v8r5/index.jsp?topic=%2Fcom.ibm.websphere.zseries.doc%2Fae%2Frejb_consid.html&lang%3Dde


Solution

  • The solution was achieved by upgrading to version 2.1 ejb, because there the "version" attribute is allowed and this is required by WebSphere to recognize a non-EJB 3.0 version.

    This means that an EJB 2.0 version can not work, since the above tag is not allowed in the ejb-jar_2_0.dtd. Maybe a <cmp-version>2.x</cmp-version> could help here, but I didn't tested it.

    The conversion of the header of ejbjar.xml brought success:

    from 2.0 (ejb-jar_2_0.dtd):

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE ejb-jar PUBLIC "-//Sun Microsystems, Inc.//DTD Enterprise JavaBeans 2.0//EN" 
        "http://java.sun.com/dtd/ejb-jar_2_0.dtd">
        <!-- EJB-jar file declaration -->
    <ejb-jar id="EJBJar" version="2.0">
        <display-name>Overall Bean Definition</display-name>
        <enterprise-beans>
        <entity id="Dcnotetext">
        ...
    

    to 2.1 (ejb-jar_2_1.xsd - you need namespaces! ):

    <?xml version="1.0" encoding="UTF-8"?>
    <ejb-jar id="EJBJar"
      xmlns="http://java.sun.com/xml/ns/j2ee" 
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"   
      version="2.1"    
      xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/ejb-jar_2_1.xsd">
        <!-- EJB-jar file declaration -->
        <display-name>Overall Bean Definition</display-name>
        <enterprise-beans>
        <entity id="Dcnotetext">
         ...
    

    No further changes to XMI or XML files were necessary!

    Thanks for help!