2011-01-15 9 views

Antwort

10

JMS und Message-driven Beans sind entweder keine/oder Wahl, die beiden sind komplementär.

JMS ist die API und Technologie für die Weitergabe von Nachrichten. Message-Driven Beans (MDB) sind eine API zum Empfangen von JMS-Nachrichten als Ereignisse im EJB-Stil. Es gibt viele Möglichkeiten, mit JMS-Nachrichten umzugehen, MDB ist nur eine davon.

Vom JavaEE tutorial:

Message-Driven Beans können jede Messaging-Typ implementieren. Am häufigsten implementieren sie die Java Message Service (JMS) -Technologie.

Ihr Thema, nebenbei gesagt, Gespräche stoßen MBeans - das ist etwas ganz anderes (das bezieht sich auf die JMX API), und nichts mit JMS zu tun.

+1

+1 - guter Punkt über MBeans; es machte Dissonanz zwischen Frage und Text. – duffymo

+0

MDBs sind auf der JMS API ?? Ist diese Aussage richtig? – JavaUser

+0

@JavaUser: Nicht "auf der Spitze gebaut", nein, es gibt keine Kopplung zwischen den beiden APIs. Es ist jedoch die gebräuchlichste Verwendung von MDBs - sie implementieren im Allgemeinen die "MessageListener" -Schnittstelle. – skaffman

0

JMS ist die Java Messaging Service Spezifikation; Es ist die API für Warteschlangen und Themen in Java EE.

Die mir bekannten MDBs implementieren normalerweise die Schnittstelle javax.jms.MessageListener und kapseln den Themen- oder Warteschlangenlistener in eine Komponente ein, die vom Java EE-Container verwaltet wird.

Aber es wurde mir in den Kommentaren darauf hingewiesen, dass dies keine Voraussetzung ist; MDBs können als Teil der Java Connector-API verwendet werden.

+0

'' MDBs sind auf der JMS API gebaut. '' - Entschuldigung, aber das ist nicht korrekt. JMS ist ein gebräuchlicher Anbieter von (asynchronem) Messaging für MDBs, aber MDBs können als Endpunkt (Listener) für jeden Dienst fungieren, der einen JCA-Ressourcenadapter bereitstellt. Zu keinem Zeitpunkt sind MDBs auf irgendeinem Teil der JMS-API aufgebaut. –

+0

Ich habe sie nur mit JMS verwendet; Ich war mir der JCA-Verbindung nicht bewusst. Und "in meinem Kopf" bedeutete "Verwendung der MessageListener-Schnittstelle", was ein JMS-Paket ist. Ihre Antwort ist sicherlich vollständiger, aber "zu keinem Zeitpunkt" scheint mir zu weit zu gehen. Ich würde gerne ein Produktionszitat von jemandem sehen, der MDBs für etwas anderes als JMS verwendet hat. – duffymo