Allgemeine Frage zu JMS

fsmarine

Mitglied
hi Leute,

folgende Frage...
Ich bin gerade dabei folgendes zu machen...

Eine Webapplikation verschickt über eine Sessionbean (Über Topic) ein Ping an alle Applikationscliens (normale clients) diese Antworten darauf mit einigen Informationen in eine Queue (soweit scheint alles zu funktionieren) aber wenn ich ein Listener auf der Webapplikation erstelle bekomme ich eine exception das es laut der spezifikation nicht auf dem Applicationserver ausgeführt werden darf, siehe JS22 Spez. 6.6.1.

Wenn ich den Rückweg auch über eine Topic mache bekomme ich nie über onmessage irgendwas...

Funktioniert das nicht bei Webapplikationen nachrichten zu erhalten ?
 
Hallo,

r wenn ich ein Listener auf der Webapplikation erstelle bekomme ich eine exception das es laut der spezifikation nicht auf dem Applicationserver ausgeführt werden darf, siehe JS22 Spez. 6.6.1.
... das ist auch richtig so. Ein MessageListener an einer Queue läuft immer in einem eigenen Thread. Das Erzeugen von eigenen "unmanaged" Threads innerhalb Webanwendungen ist laut der J2EE/JEE Spec nicht erlaubt. Wenn du Spec-Konform bleiben willst musst du für diesen Zweck eine Message Driven Bean (MDB) erstellen. Hier mal ein Beispiel für eine EJB 3.0 Style MDB mit Annotations:
http://download.oracle.com/docs/cd/B31017_01/web.1013/b28221/mdb30cfg002.htm

Gruß Tom
 
Aber wie kann ich dann anschließend aus der MDB die nachricht an meine webapplikation weiterleiten. MDBs werden ja im EJB Container definiert.
 
Hallo,

wie willst du denn ind einer Webanwendung auf eine etwaige Nachricht reagieren?
Irgendwas in die Datenbank schreiben? Eine E-Mail versenden? -> Mach das doch im MDB.

Ansonsten kannst du natürlich im MDB beispielsweise über eine URLConnection oder per Commons HttpClient einen entsprechenden Http-Request an die Webapp senden.

Gruß Tom
 

Neue Beiträge

Zurück