Announcement

Collapse
No announcement yet.

Message Driven Bean- Destination in Laufzeit zuweisen

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Message Driven Bean- Destination in Laufzeit zuweisen

    Hi!

    Ich versuche mich hier gerade an den Message Driven Beans und stehe vor einem Problem das ich momentan nicht gelöst bekomme. Vielleicht habe ich ja auch einen falschen Ansatz...

    Ich möchte eine MDB an verschiedene Message Queues anbinden. Dazu soll immer die gleiche Klasse verwendet werden. Durch eine ankommende Nachricht wird die Klasse ja dann instanziiert und es kann darin gearbeitet werden.
    Wenn man das per Annotations macht, dann kann man die Klasse ja nur einmal verwenden.
    Code:
    @MessageDriven(activationConfig =
    {
    @ActivationConfigProperty(propertyName="destinationType", propertyValue="javax.jms.Queue"),
    @ActivationConfigProperty(propertyName="destination", propertyValue="FOO.BAR"),
    })
    @ResourceAdapter("messageressource......rar")
    public class MessageBean implements MessageListener {...}
    Wenn ich über den Deployment Descriptor gehe, dann kann ich zumindest das ganze schon mehrfach machen. Das bedeutet die Message Driven Bean horcht auf mehreren Wegen am JNDI.

    Code:
    <message-driven>  	
    <ejb-name>ModuleA</ejb-name>
    <ejb-class>de.myproject.beans.MessageBean</ejb-class>
    <activation-config>
    <activation-config-property>
    <activation-config-property-name>destination</activation-config-property-name>
    <activation-config-property-value>FOOA.BAR</activation-config-property-value>
    </activation-config-property>  			
    <activation-config-property>
    <activation-config-property-name>destinationType</activation-config-property-name>
    <activation-config-property-value>javax.jms.Queue</activation-config-property-value>
    </activation-config-property>
    </activation-config>  		
    </message-driven>
    
    <message-driven>  	
    <ejb-name>ModuleB</ejb-name>
    <ejb-class>de.myproject.beans.MessageBean</ejb-class>
    <activation-config>
    <activation-config-property>
    <activation-config-property-name>destination</activation-config-property-name>
    <activation-config-property-value>FOOB.BAR</activation-config-property-value>
    </activation-config-property>  			
    <activation-config-property>
    <activation-config-property-name>destinationType</activation-config-property-name>
    <activation-config-property-value>javax.jms.Queue</activation-config-property-value>
    </activation-config-property>
    </activation-config>  		
    </message-driven>
    Beim startet des Applicationservers werden ja die entsprechenden Queues über den JNDI an meine Klasse gebunden.
    Ist esmöglich das ganze auch in Laufzeit zu machen? Also quasi über irgendeinen ApplicationConext oder so?

    Vielleicht denke ich ja auch ganz falsch... und es geht viel eleganter.

    Freue mich über Rückmeldungen von den Experten hier im Forum. Vielen Dank schon mal!
Working...
X