Hi Christianne,
What you are seeing is a result of using different ejb-name in java code
and ejb-jar.xml. In your java code, the default ejb-name is
MyConsumer. The ejb with this name is not used anywhere in your
ejb-jar.xml.
For your first example, at runtime there are 3 beans: MyConsumer,
PrimaryConsumerEJB, and SecondaryConsumerEJB. Of course, any
configuration in PrimaryConsumerEJB won't apply to MyConsumer bean.
-cheng
Christianne Carvalho wrote:
> Hi all.
>
> Although annotations hugely simplify the ejb codification, for project
> specific needs, in some cases our ejbs are also being defined in
> ejb-jar. For messagedriven beans we noticed two points that don't seem
> to be working proper.
>
> 1) As soon as you have the @MessageDriven class-level annotation,
> seems that it ignores the entry in the deployment descriptor (which is
> wrong according to the EJB 3.0 specs). If I remove it, everything
> works fine.
>
>
> 2) So, to solve that we defined those beans only in ejb-jar instead of
> using the class-level annotations (@MessageDriven or @Stateless). When
> we do that we noticed that for those ejbs, we cannot add JavaEE
> annotations for dependencies (e.g. @EJB or @Resource). Seems that GF
> doesn't parse any annotations unless there is a class-level annotation.
>
> Should these two items be happening this way? Follows example:
>
> What I'm doing is that I have a single mdb class that I want to listen
> to several queues. I initially tried like this:
>
> class:
> @MessageDriven
> public MyConsumer {
>
> @EJB
> ProcessorBean processor ;
>
> (...)
> }
>
> ejb-jar:
> <message-driven>
> <ejb-name>PrimaryConsumerEJB</ejb-name>
> <mapped-name>jms/primaryQueue</mapped-name>
> <ejb-class>com.mdb.MyConsumer</ejb-class>
> </message-driven>
> <message-driven>
> <ejb-name>SecondaryConsumerEJB</ejb-name>
> <mapped-name>jms/secondaryQueue</mapped-name>
> <ejb-class>com.mdb.MyConsumer</ejb-class>
> </message-driven>
>
> However it only worked when I did like this:
>
> class:
> public MyConsumer {
>
> MyProcessor processor ;
>
> (...)
> }
>
> ejb-jar:
> <message-driven>
> <ejb-name>PrimaryConsumerEJB</ejb-name>
> <mapped-name>jms/primaryQueue</mapped-name>
> <ejb-class>com.mdb.MyConsumer</ejb-class>
> <ejb-ref>
> <ejb-ref-name>ProcessorEJB</ejb-ref-name>
> <ejb-ref-type>Session</ejb-ref-type>
> <remote>com.slb.MyProcessor</remote>
> <ejb-link>MyProcessorEJB</ejb-link>
> <injection-target>
>
> <injection-target-class>com.mdb.MyConsumer</injection-target-class>
>
> <injection-target-name>processor</injection-target-name>
> </injection-target>
> </ejb-ref>
> </message-driven>
> <message-driven>
> <ejb-name>SecondaryConsumerEJB</ejb-name>
> <mapped-name>jms/secondaryQueue</mapped-name>
> <ejb-class>com.mdb.MyConsumer</ejb-class>
> <ejb-ref>
> <ejb-ref-name>ProcessorEJB</ejb-ref-name>
> <ejb-ref-type>Session</ejb-ref-type>
> <remote>com.slb.MyProcessor</remote>
> <ejb-link>MyProcessorEJB</ejb-link>
> <injection-target>
>
> <injection-target-class>com.mdb.MyConsumer</injection-target-class>
>
> <injection-target-name>processor</injection-target-name>
> </injection-target>
> </ejb-ref>
> </message-driven>
>
>
> Thanks.
>
> /*Christianne Carvalho
> **mHave Software, Ltda.*/