TechDocs


   Rubrik > Software Entwicklung > Java >


    18.04.2011 20:10:01  Software Entwicklung > Java    

JMS - Message Driven Bean (MDB)

Eine Message Driven Bean (MDB) ist eine spezielle Form einer Enterprise Java Bean und für die Verarbeitung von Messages in einem Messaging System zuständig. Eine MDB enthält eine 'onMessage' Methode, welche automatisch beim Eintreffen einer Nachricht aufgerufen wird. Message Driven Bean's werden von einem Message Provider/Container verwaltet, sind 'stateless' und werden meist in Pools auf eine Queue bezogen konfiguriert. Eine MDB kann verschiedene Arten von Message Typen (Text, Streams, BytesArrays ...) verarbeiten.

Folgende Eigenschaften muss eine Message Driven Bean Klasse erfüllen:

  • besitzt eine @MessageDriven Annotation oder einen Deployment Deskriptor
  • ist als 'public' deklariert
  • ist weder 'abstract' noch 'final'
  • hat einen öffentlicher (public) Konstruktor ohne Argumente
  • besitzt keine 'finalize' Methode
  • eine Message Listener Implementation wird empfohlen

Beispiel: eine Message Driven Bean mit Annotation

MessageDrivenBean Annotation

  Name@MessageDriven
  Beschreibungeine Enterprise Java Bean wird durch diese Annotation zu einer Message-Driven Bean
  Anwendungauf Klassen anwendbar
  Klassejavax.ejb.MessageDriven
  Beispiel@MessageDriven( name="test/mdb", mappedName="jms/orderQueue", ...)


Annotation Attribute

  NameBeschreibungDatentypErforderlich?
   nameBezeichnet den Namen der Message-Driven Bean. Ohne Angabe des Namen wird der Klassenname der Bean angenommen. Stringnein
   messageListenerInterfacedas Message-Listener Interface der Bean Klasse.Das Attribut muss belegt sein, wenn die Bean Klasse nicht explizit das Message-Listener Interface implementiert oder die Bean Klasse mehr als ein Interface, ausgenommen java.io.Serializable, java.io.Externalizable, oder ein Interface des 'javax.ejb' Package, implementiert.
Der Standardwert für dieses Attribut ist die 'Object.class'.
Classnein
   activationConfigLegt die Eigenschaften einer Message-Driven Bean in ihrem operativen Umfeld fest. Das können Informationen zur Destination, Transaktionen, Durability, Pools etc. sein. Die Activation Configuration Information wird durch ein Array von @javax.ejb.ActivationConfigProperty Annotationen festgelegt. Es ist der Property Name und Wert anzugeben.ActivationConfigProperty[]nein
   mappedNameLegt den Produkt spezifischen Namen, auf den die Message Driven Bean abgebildet werden soll, fest.Dieses Attribut kann auch zum Festlegen des JNDI Namens der Message Destination genutzt werden.
Ein Beispiel: mappedName="order.Queue" legt fest, dass diese Message-Driven Bean mit einer JMS Queue mit dem JNDI Namen 'order.Queue' verbunden ist und in den JNDI Baum eingetragen wird.
Stringnein
   BeschreibungBeschreibung der Message Driven BeanStringnein

Beispiel: eine Message Driven Bean mit ActivationConfigProperty Attributwerten in der MessageDriven Annotation

ActivationConfigProperty Annotation

  Name@ActivationConfigProperty
  BeschreibungLegt die Eigenschaften einer MDB fest. Das können Informationen zur Destination, Transaktionen, Durability, Pools etc. sein.
Diese Annotation kann nur als Attributwert des activationConfig Attributes der @MessageDriven Annotation verwendet werden.
  AnwendungAny
  Klassejavax.ejb.ActivationConfigProperty
  Beispiel@ActivationConfigProperty( propertyName="MaxPoolSize", propertyValue="20")

Attribute
  NameBeschreibungDatentypErforderlich ?
  propertyNameName der Activation PropertyStringja
  propertyValueWert der Activation PropertyStringja



Übersicht