[jboss-jira] [JBoss JIRA] (AS7-2505) Deployment order for MDBs and RAs is not working for a packaged EAR

Abhi S (Issue Comment Edited) (JIRA) jira-events at lists.jboss.org
Wed Dec 28 17:57:10 EST 2011


    [ https://issues.jboss.org/browse/AS7-2505?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12653211#comment-12653211 ] 

Abhi S edited comment on AS7-2505 at 12/28/11 5:55 PM:
-------------------------------------------------------

I am trying to verify this issue in 7.1 CR1 version, but I am still not able to deploy the EAR I attached.  I get the following exception:

{code}
21:13:19,515 ERROR [org.jboss.msc.service.fail] (MSC service thread 1-5) MSC00001: Failed to start service jboss.deployment.subunit."jee-app.ear"."mdb.jar".comp
onent.message-driven-bean.CREATE: org.jboss.msc.service.StartException in service jboss.deployment.subunit."jee-app.ear"."mdb.jar".component.message-driven-bean
.CREATE: Failed to start service
        at org.jboss.msc.service.ServiceControllerImpl$StartTask.run(ServiceControllerImpl.java:1780) [jboss-msc-1.0.1.GA.jar:1.0.1.GA]
        at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) [:1.6.0_27]
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) [:1.6.0_27]
        at java.lang.Thread.run(Thread.java:662) [:1.6.0_27]
Caused by: java.lang.IllegalStateException: JBAS014521: No message listener of type com.sample.jee.MessageListener found in resource adapter hornetq-ra
        at org.jboss.as.ejb3.component.EJBUtilities.createActivationSpecs(EJBUtilities.java:96)
        at org.jboss.as.ejb3.component.messagedriven.MessageDrivenComponentCreateService.createComponent(MessageDrivenComponentCreateService.java:67)
        at org.jboss.as.ee.component.BasicComponentCreateService.start(BasicComponentCreateService.java:84)
        at org.jboss.msc.service.ServiceControllerImpl$StartTask.startService(ServiceControllerImpl.java:1824) [jboss-msc-1.0.1.GA.jar:1.0.1.GA]
        at org.jboss.msc.service.ServiceControllerImpl$StartTask.run(ServiceControllerImpl.java:1759) [jboss-msc-1.0.1.GA.jar:1.0.1.GA]
        ... 3 more
{code}

NOTE: If you look at my MDB source, I have a @ResourceAdapter annotation, but not sure why is it trying to connect to hornetq-ra.  My MDB code:
{code:java}
@ResourceAdapter("connector.rar")
@Depends("jboss.jca:name='connector.rar',service=RARDeployment")
public class AMessageDrivenBean implements MessageListener {
{code}

Then I added jboss-ejb3.xml in the mdb.jar (please see the attached EAR) as below based on the example - https://github.com/jbossas/jboss-as/blob/master/testsuite/integration/basic/src/test/resources/ejb/mdb/configuredresourceadapter/jboss-ejb3.xml :
{code:xml}
<?xml version="1.0" encoding="UTF-8"?>
<jboss xmlns="http://www.jboss.com/xml/ns/javaee" 
    xmlns:jee="http://java.sun.com/xml/ns/javaee"
    xmlns:mdb="urn:resource-adapter-binding"
    xmlns:security="urn:security">

    <jee:assembly-descriptor>
        <mdb:resource-adapter-binding>
            <!--<jee:ejb-name>ConfiguredResourceAdapterNameMDB</jee:ejb-name>-->
            <mdb:resource-adapter-name>connector.rar</mdb:resource-adapter-name>
        </mdb:resource-adapter-binding>
    </jee:assembly-descriptor>
</jboss>
{code}

BUT now I get another exception:
{code}
21:26:09,214 ERROR [org.jboss.msc.service.fail] (MSC service thread 1-10) MSC00001: Failed to start service jboss.deployment.subunit."jee-app.ear"."mdb.jar".PAR
SE: org.jboss.msc.service.StartException in service jboss.deployment.subunit."jee-app.ear"."mdb.jar".PARSE: Failed to process phase PARSE of subdeployment "mdb.
jar" of deployment "jee-app.ear"
        at org.jboss.as.server.deployment.DeploymentUnitPhaseService.start(DeploymentUnitPhaseService.java:121) [jboss-as-server-7.1.0.CR1b.jar:7.1.0.CR1b]
        at org.jboss.msc.service.ServiceControllerImpl$StartTask.startService(ServiceControllerImpl.java:1824) [jboss-msc-1.0.1.GA.jar:1.0.1.GA]
        at org.jboss.msc.service.ServiceControllerImpl$StartTask.run(ServiceControllerImpl.java:1759) [jboss-msc-1.0.1.GA.jar:1.0.1.GA]
        at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) [:1.6.0_27]
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) [:1.6.0_27]
        at java.lang.Thread.run(Thread.java:662) [:1.6.0_27]
Caused by: java.lang.ClassCastException: org.jboss.metadata.ejb.spec.MessageDrivenBean31MetaData cannot be cast to org.jboss.metadata.ejb.jboss.ejb3.JBossGeneri
cBeanMetaData
        at org.jboss.metadata.ejb.spec.MessageDrivenBeanMetaData.merge(MessageDrivenBeanMetaData.java:353)
        at org.jboss.metadata.ejb.spec.MessageDrivenBeanMetaData.createMerged(MessageDrivenBeanMetaData.java:85)
        at org.jboss.metadata.ejb.spec.MessageDrivenBeanMetaData.createMerged(MessageDrivenBeanMetaData.java:36)
        at org.jboss.metadata.ejb.spec.EnterpriseBeansMetaData.merge(EnterpriseBeansMetaData.java:73)
        at org.jboss.metadata.ejb.spec.EnterpriseBeansMetaData.createMerged(EnterpriseBeansMetaData.java:52)
        at org.jboss.metadata.ejb.spec.EjbJarMetaData.merge(EjbJarMetaData.java:177)
        at org.jboss.metadata.ejb.spec.EjbJarMetaData.createMerged(EjbJarMetaData.java:668)
        at org.jboss.as.ejb3.deployment.processors.EjbJarParsingDeploymentUnitProcessor.deploy(EjbJarParsingDeploymentUnitProcessor.java:124)
        at org.jboss.as.server.deployment.DeploymentUnitPhaseService.start(DeploymentUnitPhaseService.java:115) [jboss-as-server-7.1.0.CR1b.jar:7.1.0.CR1b]
        ... 5 more
{code}

What am I missing? 
                
      was (Author: abhis):
    I am trying to verify this issue, but I am still not able to deploy the EAR I attached.  I get the following exception:

{code}
21:13:19,515 ERROR [org.jboss.msc.service.fail] (MSC service thread 1-5) MSC00001: Failed to start service jboss.deployment.subunit."jee-app.ear"."mdb.jar".comp
onent.message-driven-bean.CREATE: org.jboss.msc.service.StartException in service jboss.deployment.subunit."jee-app.ear"."mdb.jar".component.message-driven-bean
.CREATE: Failed to start service
        at org.jboss.msc.service.ServiceControllerImpl$StartTask.run(ServiceControllerImpl.java:1780) [jboss-msc-1.0.1.GA.jar:1.0.1.GA]
        at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) [:1.6.0_27]
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) [:1.6.0_27]
        at java.lang.Thread.run(Thread.java:662) [:1.6.0_27]
Caused by: java.lang.IllegalStateException: JBAS014521: No message listener of type com.sample.jee.MessageListener found in resource adapter hornetq-ra
        at org.jboss.as.ejb3.component.EJBUtilities.createActivationSpecs(EJBUtilities.java:96)
        at org.jboss.as.ejb3.component.messagedriven.MessageDrivenComponentCreateService.createComponent(MessageDrivenComponentCreateService.java:67)
        at org.jboss.as.ee.component.BasicComponentCreateService.start(BasicComponentCreateService.java:84)
        at org.jboss.msc.service.ServiceControllerImpl$StartTask.startService(ServiceControllerImpl.java:1824) [jboss-msc-1.0.1.GA.jar:1.0.1.GA]
        at org.jboss.msc.service.ServiceControllerImpl$StartTask.run(ServiceControllerImpl.java:1759) [jboss-msc-1.0.1.GA.jar:1.0.1.GA]
        ... 3 more
{code}

NOTE: If you look at my MDB source, I have a @ResourceAdapter annotation, but not sure why is it trying to connect to hornetq-ra.  My MDB code:
{code:java}
@ResourceAdapter("connector.rar")
@Depends("jboss.jca:name='connector.rar',service=RARDeployment")
public class AMessageDrivenBean implements MessageListener {
{code}

Then I added jboss-ejb3.xml in the mdb.jar (please see the attached EAR) as below based on the example - https://github.com/jbossas/jboss-as/blob/master/testsuite/integration/basic/src/test/resources/ejb/mdb/configuredresourceadapter/jboss-ejb3.xml :
{code:xml}
<?xml version="1.0" encoding="UTF-8"?>
<jboss xmlns="http://www.jboss.com/xml/ns/javaee" 
    xmlns:jee="http://java.sun.com/xml/ns/javaee"
    xmlns:mdb="urn:resource-adapter-binding"
    xmlns:security="urn:security">

    <jee:assembly-descriptor>
        <mdb:resource-adapter-binding>
            <!--<jee:ejb-name>ConfiguredResourceAdapterNameMDB</jee:ejb-name>-->
            <mdb:resource-adapter-name>connector.rar</mdb:resource-adapter-name>
        </mdb:resource-adapter-binding>
    </jee:assembly-descriptor>
</jboss>
{code}

BUT now I get another exception:
{code}
21:26:09,214 ERROR [org.jboss.msc.service.fail] (MSC service thread 1-10) MSC00001: Failed to start service jboss.deployment.subunit."jee-app.ear"."mdb.jar".PAR
SE: org.jboss.msc.service.StartException in service jboss.deployment.subunit."jee-app.ear"."mdb.jar".PARSE: Failed to process phase PARSE of subdeployment "mdb.
jar" of deployment "jee-app.ear"
        at org.jboss.as.server.deployment.DeploymentUnitPhaseService.start(DeploymentUnitPhaseService.java:121) [jboss-as-server-7.1.0.CR1b.jar:7.1.0.CR1b]
        at org.jboss.msc.service.ServiceControllerImpl$StartTask.startService(ServiceControllerImpl.java:1824) [jboss-msc-1.0.1.GA.jar:1.0.1.GA]
        at org.jboss.msc.service.ServiceControllerImpl$StartTask.run(ServiceControllerImpl.java:1759) [jboss-msc-1.0.1.GA.jar:1.0.1.GA]
        at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) [:1.6.0_27]
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) [:1.6.0_27]
        at java.lang.Thread.run(Thread.java:662) [:1.6.0_27]
Caused by: java.lang.ClassCastException: org.jboss.metadata.ejb.spec.MessageDrivenBean31MetaData cannot be cast to org.jboss.metadata.ejb.jboss.ejb3.JBossGeneri
cBeanMetaData
        at org.jboss.metadata.ejb.spec.MessageDrivenBeanMetaData.merge(MessageDrivenBeanMetaData.java:353)
        at org.jboss.metadata.ejb.spec.MessageDrivenBeanMetaData.createMerged(MessageDrivenBeanMetaData.java:85)
        at org.jboss.metadata.ejb.spec.MessageDrivenBeanMetaData.createMerged(MessageDrivenBeanMetaData.java:36)
        at org.jboss.metadata.ejb.spec.EnterpriseBeansMetaData.merge(EnterpriseBeansMetaData.java:73)
        at org.jboss.metadata.ejb.spec.EnterpriseBeansMetaData.createMerged(EnterpriseBeansMetaData.java:52)
        at org.jboss.metadata.ejb.spec.EjbJarMetaData.merge(EjbJarMetaData.java:177)
        at org.jboss.metadata.ejb.spec.EjbJarMetaData.createMerged(EjbJarMetaData.java:668)
        at org.jboss.as.ejb3.deployment.processors.EjbJarParsingDeploymentUnitProcessor.deploy(EjbJarParsingDeploymentUnitProcessor.java:124)
        at org.jboss.as.server.deployment.DeploymentUnitPhaseService.start(DeploymentUnitPhaseService.java:115) [jboss-as-server-7.1.0.CR1b.jar:7.1.0.CR1b]
        ... 5 more
{code}

What am I missing? 
                  
> Deployment order for MDBs and RAs is not working for a packaged EAR
> -------------------------------------------------------------------
>
>                 Key: AS7-2505
>                 URL: https://issues.jboss.org/browse/AS7-2505
>             Project: Application Server 7
>          Issue Type: Bug
>          Components: EJB, JCA, JSR88
>    Affects Versions: 7.0.2.Final, 7.1.0.Alpha1
>         Environment: Windows 7 64-bit
>            Reporter: Abhi S
>            Assignee: jaikiran pai
>            Priority: Critical
>              Labels: deployment, ear, mdb, ra
>             Fix For: 7.1.0.CR1
>
>         Attachments: jee-app.ear, jee-app.ear
>
>
> If an application is packaged with MDBs and RAs (resource adapters) such that the order of deployment of these modules needs to be deterministic, the application fails to load.  In other words, there is no way to define the order in which MDBs and RAs must be loaded in an application.  This is a strict requirement by JEE 6, and without this support, JBoss 7 cannot be fully JEE 6 compliant.
> Theoretically, following are 3 different ways to accomplish the above objective:
> # Set <initialize-in-order> to true; see http://java.sun.com/xml/ns/javaee/application_6.xsd. This seems to be fixed in AS7-325, but I tested it using a sample application, and this definitely does not work for MDBs and RAs.
> # Add jboss-ejb3.xml in the MDB jar's MATA-INF to define the MDB's dependency on an RA.  Adding this configuration MUST ensure that the application loader loads the RA before trying to load the MDB. Development of this feature is still in progress (AS7-1211).
> # Add org.jboss.ejb3.annotation.Depends annotation on the MDB implementation, to do the same as #2.
> None of the above work in the nightly build of AS7.1.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.jboss.org/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

        


More information about the jboss-jira mailing list