The helloworld-mdb-propertysubstitution
quickstart demonstrates the use of JMS and EJB MDB, enabling property substitution with annotations.
The helloworld-mdb-propertysubstitution
quickstart demonstrates the use of JMS and EJB Message-Driven Bean in {productNameFull}.
It is based on the helloworld-mdb quickstart, but has been enhanced to enable property substitution using the @Resource
and @ActivationConfigProperty
annotations.
This project creates two JMS resources:
-
A queue named
HELLOWORLDMDBQueue
bound in JNDI asjava:/${property.helloworldmdb.queue}
-
A topic named
HELLOWORLDMDBTopic
bound in JNDI asjava:/${property.helloworldmdb.topic}
You enable MDB property substitution by running JBoss CLI commands. For your convenience, this quickstart batches the commands into a enable-mdb-property-substitution.cli
script provided in the root directory of this quickstart.
-
Before you begin, make sure you do the following:
-
Back up the {productName} standalone server configuration as described above.
-
Start the {productName} server with the standalone full profile as described above.
-
-
Review the
enable-mdb-property-substitution.cli
script file in the root of this quickstart directory. This script first enables MDB annotation property substitution theee
subsystem of the server configuration file by creating anannotation-property-replacement
property with a value oftrue
. It then defines the system properties that are used in the substitution. -
Open a new terminal, navigate to the root directory of this quickstart, and run the following command, replacing {jbossHomeName} with the path to your server:
$ {jbossHomeName}/bin/jboss-cli.sh --connect --file=enable-mdb-property-substitution.cli
NoteFor Windows, use the {jbossHomeName}\bin\jboss-cli.bat
script.You should see the following result when you run the script:
The batch executed successfully
-
Stop the {productName} server.
After stopping the server, open the {jbossHomeName}/standalone/configuration/standalone-full.xml
file and review the changes.
The <annotation-property-replacement>
attribute is set to true in the ee
subsystem :
<subsystem xmlns="{EESubsystemNamespace}">
...
<annotation-property-replacement>true</annotation-property-replacement>
...
</subsystem>
The following system properties are defined and appear after the <extensions>
:
<system-properties>
<property name="property.helloworldmdb.queue" value="java:/queue/HELLOWORLDMDBPropQueue"/>
<property name="property.helloworldmdb.topic" value="java:/topic/HELLOWORLDMDBPropTopic"/>
<property name="property.connection.factory" value="java:/ConnectionFactory"/>
</system-properties>
Look at the {productName} console or Server log and you should see log messages corresponding to the deployment of the message-driven beans and the JMS destinations:
INFO [org.jboss.as.server.deployment] (MSC service thread 1-4) WFLYSRV0027: Starting deployment of "helloworld-mdb-propertysubstitution.war" (runtime-name: "helloworld-mdb-propertysubstitution.war")
...
INFO [org.wildfly.extension.messaging-activemq] (MSC service thread 1-6) WFLYMSGAMQ0006: Unbound messaging object to jndi name java:/${property.helloworldmdb.queue}
INFO [org.wildfly.extension.messaging-activemq] (MSC service thread 1-6) WFLYMSGAMQ0002: Bound messaging object to jndi name java:/${property.helloworldmdb.queue}
INFO [org.wildfly.extension.messaging-activemq] (MSC service thread 1-8) WFLYMSGAMQ0006: Unbound messaging object to jndi name java:/${property.helloworldmdb.topic}
INFO [org.wildfly.extension.messaging-activemq] (MSC service thread 1-2) WFLYMSGAMQ0002: Bound messaging object to jndi name java:/${property.helloworldmdb.topic}
...
INFO [org.jboss.as.ejb3] (MSC service thread 1-2) WFLYEJB0042: Started message driven bean 'HelloWorldQueueMDB' with 'activemq-ra.rar' resource adapter
INFO [org.jboss.as.ejb3] (MSC service thread 1-5) WFLYEJB0042: Started message driven bean 'HelloWorldQTopicMDB' with 'activemq-ra.rar' resource adapter
...
INFO [org.wildfly.extension.undertow] (ServerService Thread Pool -- 88) WFLYUT0021: Registered web context: '/helloworld-mdb-propertysubstitution' for server 'default-server'
INFO [org.jboss.as.server] (management-handler-thread - 1) WFLYSRV0010: Deployed "helloworld-mdb-propertysubstitution.war" (runtime-name : "helloworld-mdb-propertysubstitution.war")
The application will be running at the following URL: http://localhost:8080/{artifactId}/ and will send some messages to the queue.
To send messages to the topic, use the following URL: http://localhost:8080/{artifactId}/HelloWorldMDBServletClient?topic
Look at the {productName} console or Server log and you should see log messages like the following:
INFO [class org.jboss.as.quickstarts.mdb.HelloWorldQueueMDB] (Thread-9 (ActiveMQ-client-global-threads-1189700957)) Received Message from queue: This is message 5
INFO [class org.jboss.as.quickstarts.mdb.HelloWorldQueueMDB] (Thread-6 (ActiveMQ-client-global-threads-1189700957)) Received Message from queue: This is message 1
INFO [class org.jboss.as.quickstarts.mdb.HelloWorldQueueMDB] (Thread-7 (ActiveMQ-client-global-threads-1189700957)) Received Message from queue: This is message 4
INFO [class org.jboss.as.quickstarts.mdb.HelloWorldQueueMDB] (Thread-5 (ActiveMQ-client-global-threads-1189700957)) Received Message from queue: This is message 2
INFO [class org.jboss.as.quickstarts.mdb.HelloWorldQueueMDB] (Thread-4 (ActiveMQ-client-global-threads-1189700957)) Received Message from queue: This is message 3
../shared-doc/undeploy-the-quickstart.adoc ../shared-doc/restore-standalone-server-configuration.adoc
This script removes the system properties and sets the <annotation-property-replacement>
value to false
in the ee
subsystem of the server configuration. You should see the following result when you run the script:
The batch executed successfully
../shared-doc/restore-standalone-server-configuration-manual.adoc ../shared-doc/run-the-quickstart-in-jboss-developer-studio.adoc
-
Make sure you enable MDB property substitution by running the JBoss CLI commands as described above under Configure the Server. Stop the server at the end of that step.
-
Within {JBDSProductName}, make sure you define a server runtime environment that uses the
standalone-full.xml
configuration file. -
Make sure you restore the server configuration when you have completed testing this quickstart.