# SOAP over JMS - wie funktionierts?



## vanilla (24. Jun 2009)

Hallo,

seit zwei Tagen wälze ich das Web, aber ich find einfach keinen vernünftigen Weg, vielleicht hat hier jemand ein paar Stichworte für mich:

ich hab eine Bean mit mehreren Methoden (laut Konzept eine MessageDrivenBean), die als SOAP-Service bereitgestellt werden soll. Allerdings nicht SOAP over HTTP, sondern over JMS. Der Transport soll über Websphere MQ erfolgen, als Applicationserver ist aber JBoss5 gesetzt. Idealerweise sollten dabei etliche StatelessSessionBeans (EJB3) in den Service injected werden. Alternativ wär auch Spring denkbar für Ressource Injection.

Für nen SOAP/HTTP-Service würd ich einfach Metro nehmen und müsste nur noch ausknobeln, wie ich die Ressourceinjection hinbekomme, aber bei JMS dreh ich mich irgendwie im Kreis:

Mit welchem Framework/welcher Technologie kann ich meinen Service so stricken und deployen, dass der mit JMS-Queues arbeitet? Gibts da mittlerweile ähnlich transparente Sachen wie bei SOAP/HTTP oder muss man da viel mit der Hand machen und wenn ja, was?

Soweit ich sehe, hat da jeder Hersteller im Moment sein eigenes Süppchen am kochen? Bei IBM sind JMS-Bindings ein paar Klicks in der IDE, bei JBOSS gibts ne MessageDrivenBean-Basisklasse, die onMessage() implementiert und zu der richtigen Methode dispatched, MQ setzt auf nen SOAP/HTTP-Wrapper usw.

Mit welcher Technologie kann ich einen Client generieren basierend auf der WSDL? Geht das überhaupt so transparent wie bei SOAP/HTTP? In den Beispielen wird immer direkt die Queue händisch angesprochen, aber das kanns ja wohl nicht sein.

Und wie um alles in der Welt bekomme ich das dann noch mit Ressourceinjection zusammen?


Danke schonmal,
Vani


----------



## vodn7v (24. Jun 2009)

Schau dir mal den JBoss ESB als Aufsatz für den JBoss Application Server an. Da hast du sowohl JMS als auch SOAP funktionalität =) Brauchst du sowas in der Richtung ?


----------



## Conn (25. Jun 2009)

Könntest Du vielleicht Dein Anwendungszenario genauer beschreiben. Ich gehe mal davon aus das Du Nachrichten von Deinem Client in die Warteschlange auf dem Server schreiben möchtest. 

Das heißt der SOAP Client dürfte/sollte im Normalfall gar nicht mitbekommen, dass die Nachrichten auf dem Server in einer Warteschlange vorgehalten werden. Mein Vorschlag wäre: SOAPClient->SessionBean(Mit SOAP WebService)->MessageDrivenBean. So kannst Du programmiersprachenunabhängig (SOAP über HTTP) mit Deinem Server kommunizieren, der die Nachrichten in eine MessageDrivenBean weiterleitet. 

Du kannst natürlich auch eine SOAP Message über einen JMS Client versenden. Auf Java Ebene macht aber ein Objekttransfer via XML keinen Sinn.


----------



## AntonP (25. Jun 2009)

Hallo Vani,
es gibt ein weiteres open source SOA Framework: SOPERA. Mit diesem ist der JMS Transport über Binding Definitionen und Policies frei wählbar. Die Nachrichten selbst sind über alle Transports SOAP basiert.

Es gibt auch dort ein User Forum, in dem du vielleicht weitere Antworten auf deine Fragen findest.


----------

