History | Log In     View a printable version of the current page. Get help!  
Issue Details [XML]

Key: EJB-101
Type: Bug Bug
Status: Open Open
Priority: Major Major
Assignee: Vance Karimi
Reporter: Roland Burgermann
Votes: (View)
Watchers: (View)
Operations

If you were logged in you would be able to see more operations.
EJB Cartridge

Application with MappedSuperclass is not deployable when using newest JBoss Version

Created: 31/Jan/08 04:05 PM   Updated: 31/Jan/08 04:08 PM
Component/s: None
Affects Version/s: None
Fix Version/s: None

File Attachments: 1. File ejb-jar.xml.vsl (10 kb)

Environment: Windows System 32Bit
JBoss 4.2.2.GA


 Description   
When you are tag an entity with the "MappedSuperclass" annotation, start the generation process and try to deploy your application on JBoss 4.2.2.GA you will get the following error:

java.lang.ClassNotFoundException: No ClassLoaders found for: com.test.samples.ejb3xfire.GeneralEntityDaoImpl

I located the problem in the generated Deployment Descriptor for the Enterprise Java Beans (ejb-jar.xml).

For a MappedSuperclass this entry mustn't exist. When removing the entries for the MappedSuperclass, the application is deployable.

Why this is working on JBoss 4.0.5.GA with + EJB3 RC9 Patch 1?
Because the EJB3 RC9 Patch 1 is only a Preview Version and cannot process the Deployment Descriptor, so an inconsitence will not stop the deployment.

 All   Comments   Change History      Sort Order:
Comment by Roland Burgermann [31/Jan/08 04:08 PM]
I attach this patch of the "ejb-jar.xml.vsl" file.

I added an additional IF clause at the loop of entities:

#foreach ($entity in $entities)
#**##if (!$entity.embeddableSuperclass)
        <session>
            <description>
                <![CDATA[
                $entity.getDocumentation("", 64, false)
                ]]>
            </description>
            <ejb-name>${entity.daoName}</ejb-name>
            <local>${entity.fullyQualifiedDaoName}</local>
            <ejb-class>${entity.fullyQualifiedDaoImplementationName}</ejb-class>
            <session-type>Stateless</session-type>
            <transaction-type>Container</transaction-type>
        </session>
#**##end
#end