Wie starte ich einen Job mit bestimmten Schritten in einer MessageDrivenBean?

Antwort

Um einen Job zu starten, der bestimmte Schritte in einer Message-Driven Bean (MDB) ausführt, gehst du typischerweise wie folgt vor: 1. **Nachricht an die Queue oder das Topic senden:** Eine Message-Driven Bean wird durch das Eintreffen einer Nachricht auf einer JMS-Queue oder einem JMS-Topic ausgelöst. Du musst also eine Nachricht an die entsprechende Destination senden. 2. **MDB empfängt die Nachricht:** Die MDB ist so konfiguriert, dass sie auf Nachrichten auf dieser Queue/Topic lauscht. Sobald eine Nachricht eintrifft, wird die `onMessage()`-Methode der MDB aufgerufen. 3. **Schritte in der MDB implementieren:** In der `onMessage()`-Methode implementierst du die gewünschten Schritte, die beim Empfang der Nachricht ausgeführt werden sollen. **Beispiel:** **1. Senden einer Nachricht (z.B. aus einer Servlet, EJB oder einem Client):** ```java ConnectionFactory connectionFactory = ...; // z.B. via JNDI Queue queue = ...; // z.B. via JNDI try (JMSContext context = connectionFactory.createContext()) { context.createProducer().send(queue, "Starte Job"); } ``` **2. Message-Driven Bean:** ```java @MessageDriven(activationConfig = { @ActivationConfigProperty(propertyName = "destinationType", propertyValue = "javax.jms.Queue"), @ActivationConfigProperty(propertyName = "destinationLookup", propertyValue = "jms/MeineQueue") }) public class MeinJobMDB implements MessageListener { @Override public void onMessage(Message message) { // Hier die gewünschten Schritte ausführen System.out.println("Job gestartet!"); // Weitere Logik... } } ``` **Zusammengefasst:** Du startest den Job, indem du eine Nachricht an die Queue/Topic sendest, auf die deine MDB hört. Die MDB führt dann beim Empfang der Nachricht die gewünschten Schritte aus. **Weitere Infos:** - [Java EE Message-Driven Beans (Oracle)](https://docs.oracle.com/javaee/7/tutorial/ejb-mdb.htm) - [JMS (Java Message Service) API](https://jakarta.ee/specifications/messaging/) Falls du eine bestimmte Umgebung (z.B. WildFly, GlassFish) oder ein konkretes Beispiel brauchst, bitte die Frage entsprechend präzisieren.

Neue Frage stellen

Verwandte Fragen

Was bedeutet der Fehler 'java.lang.ClassCastException: class org.apache.cxf.bus.spring.SpringBusFactory' und wie behebt man ihn?

Die Fehlermeldung `java.lang.ClassCastException: class org.apache.cxf.bus.spring.SpringBusFactory` bedeutet, dass im Code versucht wird, ein Objekt vom Typ `SpringBusFactory` in eine inkompatible Klas... [mehr]

Wie sieht ein kurzes Java-Programm aus, das einen InputStream direkt auf die Konsole ausgibt?

Hier ein kurzes Beispiel, wie du in Java einen beliebigen `InputStream` direkt auf der Konsole (stdout) ausgeben kannst: ```java import java.io.InputStream; import java.io.IOException; public class... [mehr]

Wie erstelle ich aus Java-Dateien JAR-Dateien, die JavaFX benötigen?

Um aus Java-Quellcodedateien (`.java`) eine ausführbare JAR-Datei zu erstellen, die JavaFX verwendet, sind mehrere Schritte notwendig. Hier eine Schritt-für-Schritt-Anleitung: ### 1. JavaFX... [mehr]

Wie löse ich den Fehler 'has been compiled by a more recent version of the Java Runtime (version 65.0), this version of the Java Runtime only recognizes up to 52.0'?

Die Fehlermeldung bedeutet, dass du versuchst, ein Java-Programm auszuführen, das mit einer neueren Java-Version (in deinem Fall Java 21, Version 65.0) kompiliert wurde, aber deine aktuelle Java... [mehr]

Was bedeutet der PrimeFaces-Fehler 'java.lang.IllegalStateException: UT000002: The response has already been started'?

Die Fehlermeldung `java.lang.IllegalStateException: UT000002: The response has already been started` tritt häufig in Java-Webanwendungen auf, die mit Frameworks wie PrimeFaces, JSF oder Servlets... [mehr]

Wie behebe ich den Fehler java.lang.IllegalStateException: UT000002: The response has already been started in PrimeFaces?

Die Fehlermeldung `java.lang.IllegalStateException: UT000002: The response has already been started` tritt häufig in Java-Webanwendungen auf, die mit PrimeFaces, JSF und einem Servlet-Container w... [mehr]

Was bedeutet der Fehler java.lang.IllegalStateException: UT000002: The response has already been started?

Die Fehlermeldung `java.lang.IllegalStateException: UT000002: The response has already been started` tritt typischerweise in Java-Webanwendungen auf, die den [Undertow](https://undertow.io/) Webserver... [mehr]

Wann werden in PL/pgSQL Variablen einer Funktion instanziiert und sind sie gemäß Java-Begriffen static oder dynamisch?

In PL/pgSQL (der prozeduralen Sprache von PostgreSQL) werden Variablen innerhalb einer Funktion **bei jedem Funktionsaufruf neu instanziiert**. Das bedeutet: - **Instanziierung:** Die Variablen werde... [mehr]

Welche Programmiersprache verwendet th:text="${errorMsg}"?

Der Ausdruck `th:text="${errorMsg}"` stammt aus Thymeleaf, einer serverseitigen Template-Engine für Java-Anwendungen. Thymeleaf wird häufig in Kombination mit Spring Boot oder Spri... [mehr]

Wie kann ich in Java den zu einem OutputStream gehörenden Socket ermitteln?

In Java gibt es keine direkte Möglichkeit, von einem beliebigen `OutputStream`-Objekt auf den zugehörigen `Socket` zuzugreifen. Der Grund ist, dass das Konzept eines `OutputStream` sehr allg... [mehr]