Last year for a previous customer I wrote an article/post about WebsphereMQ Best Practice with JBoss EAP 6. Today we will make almost the same stuff but with JBoss EAP 7, WebsphereMQ Sample IVT application and running on Docker. I assume you know basic command about Docker.

Howto run JBoss EAP 7 connected to WebsphereMQ both running on Docker

Prerequisites

For this lab, you need the following software :

Warning

Warning, it is trial / demo only, a production deployment requires the purchase of a subscription for JBoss and a license for IBM

Clone git project

First of all, clone the git repo project.

git clone git@github.com:gautric/JBoss-WMQ.git
cd JBoss-WMQ

EAP 7 image creation

We have to download the JBoss EAP 7 binary and we will create the correct image of EAP 7.

Copy binary file to JBoss-WMQ/jboss directory and go to this directory to build image.

cd JBoss-WMQ
docker build -t jboss-ivt jboss

the Dockerfile

### Set the base image to Fedora
FROM jboss/base-jdk:8

## docker build -t jboss-ivt jboss
## docker run -p 8080:8080 -p 9990:9990 -t jboss-ivt

### File Author / Maintainer
MAINTAINER "Greg Autric" "gautric@redhat.com"

### Set Environment
ENV JBOSS_HOME  /opt/jboss/jboss-eap-7.0
ENV MQM_HOME    /opt/mqm
ENV MQM_URL     http://public.dhe.ibm.com/ibmdl/export/pub/software/websphere/messaging/mqadv/mqadv_dev90_linux_x86-64.tar.gz

### Install EAP 7.0.0
COPY jboss-eap-7.0.0.zip /opt
RUN unzip /opt/jboss-eap-7.0.0.zip  1> /dev/null && echo "Install JBoss instance"

## Change user to install some
USER root
RUN cd /tmp && yum install -y wget && wget ${MQM_URL} && tar -zxvf ./*.tar.gz  1> /dev/null && cd MQServer && ./mqlicense.sh -text_only -accept  && rpm -ivh  MQSeriesJava*.rpm MQSeriesRuntime*.rpm
RUN rm -rf /tmp/*

### Create Admin EAP user
USER jboss
RUN $JBOSS_HOME/bin/add-user.sh admin admin123! --silent

## Copy EAR and RAR
RUN cp ${MQM_HOME}/java/lib/jca/wmq.jmsra.ivt.ear ${JBOSS_HOME}/standalone/deployments
RUN cp ${MQM_HOME}/java/lib/jca/wmq.jmsra.rar     ${JBOSS_HOME}/standalone/deployments

### JBoss configuration files
COPY jboss-overlay.cli  /opt
COPY jboss-ejb3.xml     /opt
COPY jboss-web.xml      /opt

### Configure EAP
RUN echo "JAVA_OPTS=\"\$JAVA_OPTS -Djboss.bind.address=0.0.0.0 -Djboss.bind.address.management=0.0.0.0\"" >> $JBOSS_HOME/bin/standalone.conf
RUN ${JBOSS_HOME}/bin/jboss-cli.sh --file=/opt/jboss-overlay.cli
RUN rm -rf ${JBOSS_HOME}/standalone/configuration/standalone_xml_history/current
RUN chown -R jboss:jboss ${JBOSS_HOME}

### Open Ports
EXPOSE 8080 9990

### Start EAP
CMD  ${JBOSS_HOME}/bin/standalone.sh -c standalone-full.xml

Information about this image

  • Admin User
    • admin user is created
  • Application and RAR
    • Demo application and WMQ Ressource Adapter come from official WMQ tgz.
    • We download it and install Java rpm package only and copy rar and ear to correct JBoss deployment directory
  • JBoss CLI
    • The CLI script is composed of two specific part :
      • Resource Adapter configuration
        • some system-property for configure RAR (user/pass/channel/queueManager, etc…)
      • Deployment overlay is used to adapt/provide correct configuration from JBoss to application
        • jboss-web.xml to adapt war configuration
        • jboss-ejb3.xml for providing ejb configuration
    • It is running with embed-server mode (offline)

the CLI file

embed-server --server-config=standalone-full.xml

deployment-overlay add --name=jboss-ejb-overlay --content=/WMQ_IVT_MDB.jar/META-INF/jboss-ejb3.xml=/opt/jboss-ejb3.xml --deployments=wmq.jmsra.ivt.ear --redeploy-affected
deployment-overlay add --name=jboss-web-overlay --content=/WMQ_IVT.war/WEB-INF/jboss-web.xml=/opt/jboss-web.xml --deployments=wmq.jmsra.ivt.ear --redeploy-affected

# Remove unused stuff
/subsystem=datasources:remove
/subsystem=webservices:remove
/subsystem=jpa:remove
/subsystem=infinispan:remove

/subsystem=ejb3:write-attribute(name=default-resource-adapter-name, value=${ejb.resource-adapter-name:wmq.jmsra.rar})
/subsystem=resource-adapters/resource-adapter=wmq.jmsra.rar:add(archive=wmq.jmsra.rar,transaction-support=LocalTransaction,statistics-enabled=true)

/subsystem=resource-adapters/resource-adapter=wmq.jmsra.rar/connection-definitions=JMS2CF:add(class-name=com.ibm.mq.connector.outbound.ManagedConnectionFactoryImpl,jndi-name=JMS2CF, use-java-context=false)
/subsystem=resource-adapters/resource-adapter=wmq.jmsra.rar/connection-definitions=JMS2CF/config-properties=hostName:add(value=${websphere.hostName:localhost})
/subsystem=resource-adapters/resource-adapter=wmq.jmsra.rar/connection-definitions=JMS2CF/config-properties=password:add(value=${websphere.password:mqm})
/subsystem=resource-adapters/resource-adapter=wmq.jmsra.rar/connection-definitions=JMS2CF/config-properties=queueManager:add(value=${websphere.queueManager:QUEUE.MANAGER})
/subsystem=resource-adapters/resource-adapter=wmq.jmsra.rar/connection-definitions=JMS2CF/config-properties=port:add(value=${websphere.port:1414})
/subsystem=resource-adapters/resource-adapter=wmq.jmsra.rar/connection-definitions=JMS2CF/config-properties=channel:add(value=${websphere.channel:SYSTEM.AUTO.SVRCONN})
/subsystem=resource-adapters/resource-adapter=wmq.jmsra.rar/connection-definitions=JMS2CF/config-properties=transportType:add(value=${websphere.transportType:CLIENT})
/subsystem=resource-adapters/resource-adapter=wmq.jmsra.rar/connection-definitions=JMS2CF/config-properties=username:add(value=${websphere.username:mqm})

/subsystem=resource-adapters/resource-adapter=wmq.jmsra.rar/connection-definitions=IVTCF:add(class-name=com.ibm.mq.connector.outbound.ManagedConnectionFactoryImpl,jndi-name=jms/ivt/IVTCF, use-java-context=false)
/subsystem=resource-adapters/resource-adapter=wmq.jmsra.rar/connection-definitions=IVTCF/config-properties=hostName:add(value=${websphere.hostName:localhost})
/subsystem=resource-adapters/resource-adapter=wmq.jmsra.rar/connection-definitions=IVTCF/config-properties=password:add(value=${websphere.password:mqm})
/subsystem=resource-adapters/resource-adapter=wmq.jmsra.rar/connection-definitions=IVTCF/config-properties=queueManager:add(value=${websphere.queueManager:QUEUE.MANAGER})
/subsystem=resource-adapters/resource-adapter=wmq.jmsra.rar/connection-definitions=IVTCF/config-properties=port:add(value=${websphere.port:1414})
/subsystem=resource-adapters/resource-adapter=wmq.jmsra.rar/connection-definitions=IVTCF/config-properties=channel:add(value=${websphere.channel:SYSTEM.AUTO.SVRCONN})
/subsystem=resource-adapters/resource-adapter=wmq.jmsra.rar/connection-definitions=IVTCF/config-properties=transportType:add(value=${websphere.transportType:CLIENT})
/subsystem=resource-adapters/resource-adapter=wmq.jmsra.rar/connection-definitions=IVTCF/config-properties=username:add(value=${websphere.username:mqm})

/subsystem=resource-adapters/resource-adapter=wmq.jmsra.rar/admin-objects=QueuePool:add(class-name=com.ibm.mq.connector.outbound.MQQueueProxy,jndi-name=jms/ivt/IVTQueue,use-java-context=true,enabled=true)
/subsystem=resource-adapters/resource-adapter=wmq.jmsra.rar/admin-objects=QueuePool/config-properties=baseQueueName:add(value=${websphere.queueName:Q_QUEUE})
/subsystem=resource-adapters/resource-adapter=wmq.jmsra.rar/admin-objects=QueuePool/config-properties=baseQueueManagerName:add(value=${websphere.queueManager:QUEUE.MANAGER})

# Websphere MQ Host and Port
#/system-property=websphere.hostName:add(value=wmq-ivt)
#/system-property=websphere.port:add(value=1414)

# Websphere MQ configuration
/system-property=websphere.transportType:add(value=CLIENT)
/system-property=websphere.username:add(value=alice)
/system-property=websphere.password:add(value=passw0rd)
/system-property=websphere.channel:add(value=PASSWORD.SVRCONN)
/system-property=websphere.queueManager:add(value=QM1)
/system-property=websphere.queueName:add(value=Q_QUEUE)
/system-property=websphere.resource.adapter:add(value=wmq.jmsra.rar)
/system-property=ejb.resource-adapter-name:add(value=wmq.jmsra.rar)

reload --admin-only=false

WMQ image creation

Now we create the WMQ Docker image, we will re-use a public image to build our own version with custom stuff. Go back to our first git repo to build our own image

cd JBoss-WMQ
docker build -t wmq-ivt wmq

the Dockerfile

FROM ibmcom/mq
RUN useradd alice -G mqm && \
    echo alice:passw0rd | chpasswd
COPY config.mqsc /etc/mqm/

We use a small configuration for WMQ, alice account can connect to wmq and we create a simple WMQ Queue too.

the configuration file

DEFINE CHANNEL(PASSWORD.SVRCONN) CHLTYPE(SVRCONN)
SET CHLAUTH(PASSWORD.SVRCONN) TYPE(BLOCKUSER) USERLIST('nobody') DESCR('Allow privileged users on this channel')
SET CHLAUTH('*') TYPE(ADDRESSMAP) ADDRESS('*') USERSRC(NOACCESS) DESCR('BackStop rule')
SET CHLAUTH(PASSWORD.SVRCONN) TYPE(ADDRESSMAP) ADDRESS('*') USERSRC(CHANNEL) CHCKCLNT(REQUIRED)
ALTER AUTHINFO(SYSTEM.DEFAULT.AUTHINFO.IDPWOS) AUTHTYPE(IDPWOS) ADOPTCTX(YES)
DEFINE QL(Q_QUEUE)
REFRESH SECURITY TYPE(CONNAUTH)

Docker compose to run demo

At the end, we use docker compose to run both parts (JBoss and WMQ). We setup some environment variable for more flexible configuration (websphere.hostName and websphere.port for exemple).

version: '2'
services:
  jboss-ivt:
    image: jboss-ivt
    build: jboss
    ports:
     - "8080:8080"
     - "9990:9990"
    environment:
      JAVA_OPTS: "-Dwebsphere.hostName=wmq-ivt -Dwebsphere.port=1414"
    links:
      - wmq-ivt
    depends_on:
      - wmq-ivt
  wmq-ivt:
    image: wmq-ivt
    build: wmq
    environment:
      LICENSE: "accept"
      MQ_QMGR_NAME: "QM1"
    ports:
     - "1414:1414"

Run it and check it

Use docker-compose up to run both WMQ and JBoss

[mbp:~/Source/git/JBoss-WMQ]$> docker-compose up

and go to IVT URL http://localhost:8080/WMQ_IVT/IVT for the web result.

web result

The Application page

The Result page

The JMS inspection (View Message Contents) page

and output log result

You should get an output like this

[mbp:~/Source/git/JBoss-WMQ]$> docker-compose up
Starting jbosswmq_wmq-ivt_1
Starting jbosswmq_jboss-ivt_1
Attaching to jbosswmq_wmq-ivt_1, jbosswmq_jboss-ivt_1
wmq-ivt_1    | ----------------------------------------
wmq-ivt_1    | Name:        IBM MQ
wmq-ivt_1    | Version:     9.0.0.0
wmq-ivt_1    | Level:       p900-L160520.DE
wmq-ivt_1    | BuildType:   IKAP - (Production)
wmq-ivt_1    | Platform:    IBM MQ for Linux (x86-64 platform)
wmq-ivt_1    | Mode:        64-bit
wmq-ivt_1    | O/S:         Linux 4.4.15-moby
wmq-ivt_1    | InstName:    Installation1
wmq-ivt_1    | InstDesc:    
wmq-ivt_1    | Primary:     Yes
wmq-ivt_1    | InstPath:    /opt/mqm
wmq-ivt_1    | DataPath:    /var/mqm
wmq-ivt_1    | MaxCmdLevel: 900
wmq-ivt_1    | LicenseType: Developer
wmq-ivt_1    | ----------------------------------------
wmq-ivt_1    | IBM MQ queue manager 'QM1' starting.
wmq-ivt_1    | The queue manager is associated with installation 'Installation1'.
wmq-ivt_1    | 5 log records accessed on queue manager 'QM1' during the log replay phase.
wmq-ivt_1    | Log replay for queue manager 'QM1' complete.
wmq-ivt_1    | Transaction manager state recovered for queue manager 'QM1'.
wmq-ivt_1    | IBM MQ queue manager 'QM1' started using V9.0.0.0.
wmq-ivt_1    | ----------------------------------------
wmq-ivt_1    | QMNAME(QM1)                                               STATUS(Running)
jboss-ivt_1  | JAVA_OPTS already set in environment; overriding default settings with values: -Dwebsphere.hostName=wmq-ivt -Dwebsphere.port=1414
jboss-ivt_1  | =========================================================================
jboss-ivt_1  |
jboss-ivt_1  |   JBoss Bootstrap Environment
jboss-ivt_1  |
jboss-ivt_1  |   JBOSS_HOME: /opt/jboss/jboss-eap-7.0
jboss-ivt_1  |
jboss-ivt_1  |   JAVA: /usr/lib/jvm/java/bin/java
jboss-ivt_1  |
jboss-ivt_1  |   JAVA_OPTS:  -server -verbose:gc -Xloggc:"/opt/jboss/jboss-eap-7.0/standalone/log/gc.log" -XX:+PrintGCDetails -XX:+PrintGCDateStamps -XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=5 -XX:GCLogFileSize=3M -XX:-TraceClassUnloading -Dwebsphere.hostName=wmq-ivt -Dwebsphere.port=1414 -Djboss.bind.address=0.0.0.0 -Djboss.bind.address.management=0.0.0.0
jboss-ivt_1  |
jboss-ivt_1  | =========================================================================
jboss-ivt_1  |
jboss-ivt_1  | 12:44:44,163 INFO  [org.jboss.modules] (main) JBoss Modules version 1.5.1.Final-redhat-1
jboss-ivt_1  | 12:44:44,405 INFO  [org.jboss.msc] (main) JBoss MSC version 1.2.6.Final-redhat-1
jboss-ivt_1  | 12:44:44,494 INFO  [org.jboss.as] (MSC service thread 1-4) WFLYSRV0049: JBoss EAP 7.0.0.GA (WildFly Core 2.1.2.Final-redhat-1) starting
jboss-ivt_1  | 12:44:46,457 INFO  [org.jboss.as.server] (Controller Boot Thread) WFLYSRV0039: Creating http management service using socket-binding (management-http)
jboss-ivt_1  | 12:44:46,487 INFO  [org.xnio] (MSC service thread 1-1) XNIO version 3.3.6.Final-redhat-1
jboss-ivt_1  | 12:44:46,496 INFO  [org.xnio.nio] (MSC service thread 1-1) XNIO NIO Implementation Version 3.3.6.Final-redhat-1
jboss-ivt_1  | 12:44:46,576 INFO  [org.jboss.remoting] (MSC service thread 1-3) JBoss Remoting version 4.0.18.Final-redhat-1
jboss-ivt_1  | 12:44:46,638 INFO  [org.wildfly.extension.io] (ServerService Thread Pool -- 35) WFLYIO001: Worker 'default' has auto-configured to 4 core threads with 32 task threads based on your 2 available processors
jboss-ivt_1  | 12:44:46,691 INFO  [org.jboss.as.jsf] (ServerService Thread Pool -- 41) WFLYJSF0007: Activated the following JSF Implementations: [main]
jboss-ivt_1  | 12:44:46,712 WARN  [org.jboss.as.txn] (ServerService Thread Pool -- 53) WFLYTX0013: Node identifier property is set to the default value. Please make sure it is unique.
jboss-ivt_1  | 12:44:46,914 INFO  [org.wildfly.iiop.openjdk] (ServerService Thread Pool -- 36) WFLYIIOP0001: Activating IIOP Subsystem
jboss-ivt_1  | 12:44:46,934 INFO  [org.jboss.as.security] (ServerService Thread Pool -- 52) WFLYSEC0002: Activating Security Subsystem
jboss-ivt_1  | 12:44:46,980 INFO  [org.jboss.as.naming] (ServerService Thread Pool -- 45) WFLYNAM0001: Activating Naming Subsystem
jboss-ivt_1  | 12:44:46,989 INFO  [org.jboss.as.connector] (MSC service thread 1-1) WFLYJCA0009: Starting JCA Subsystem (WildFly/IronJacamar 1.3.3.Final-redhat-1)
jboss-ivt_1  | 12:44:47,019 INFO  [org.wildfly.extension.undertow] (ServerService Thread Pool -- 54) WFLYUT0003: Undertow 1.3.21.Final-redhat-1 starting
jboss-ivt_1  | 12:44:47,023 INFO  [org.wildfly.extension.undertow] (MSC service thread 1-1) WFLYUT0003: Undertow 1.3.21.Final-redhat-1 starting
jboss-ivt_1  | 12:44:47,088 INFO  [org.jboss.as.security] (MSC service thread 1-2) WFLYSEC0001: Current PicketBox version=4.9.6.Final-redhat-1
jboss-ivt_1  | 12:44:47,113 INFO  [org.jboss.as.naming] (MSC service thread 1-1) WFLYNAM0003: Starting Naming Service
jboss-ivt_1  | 12:44:47,122 INFO  [org.jboss.as.mail.extension] (MSC service thread 1-3) WFLYMAIL0001: Bound mail session [java:jboss/mail/Default]
jboss-ivt_1  | 12:44:47,303 INFO  [org.jboss.as.ejb3] (MSC service thread 1-2) WFLYEJB0482: Strict pool mdb-strict-max-pool is using a max instance size of 8 (per class), which is derived from the number of CPUs on this host.
jboss-ivt_1  | 12:44:47,310 INFO  [org.jboss.as.ejb3] (MSC service thread 1-1) WFLYEJB0481: Strict pool slsb-strict-max-pool is using a max instance size of 32 (per class), which is derived from thread worker pool sizing.
jboss-ivt_1  | 12:44:47,311 INFO  [org.wildfly.extension.undertow] (ServerService Thread Pool -- 54) WFLYUT0014: Creating file handler for path '/opt/jboss/jboss-eap-7.0/welcome-content' with options [directory-listing: 'false', follow-symlink: 'false', case-sensitive: 'true', safe-symlink-paths: '[]']
jboss-ivt_1  | 12:44:47,311 INFO  [org.wildfly.extension.undertow] (MSC service thread 1-2) WFLYUT0012: Started server default-server.
jboss-ivt_1  | 12:44:47,316 INFO  [org.wildfly.extension.undertow] (MSC service thread 1-1) WFLYUT0018: Host default-host starting
jboss-ivt_1  | 12:44:47,465 INFO  [org.wildfly.extension.undertow] (MSC service thread 1-2) WFLYUT0006: Undertow HTTP listener default listening on [0:0:0:0:0:0:0:0]:8080
jboss-ivt_1  | 12:44:47,647 INFO  [org.wildfly.extension.messaging-activemq] (MSC service thread 1-2) WFLYMSGAMQ0075: AIO wasn t located on this platform, it will fall back to using pure Java NIO. Your platform is Linux, install LibAIO to enable the AIO journal and achieve optimal performance.
jboss-ivt_1  | 12:44:47,698 INFO  [org.jboss.as.server.deployment.scanner] (MSC service thread 1-1) WFLYDS0013: Started FileSystemDeploymentService for directory /opt/jboss/jboss-eap-7.0/standalone/deployments
jboss-ivt_1  | 12:44:47,724 INFO  [org.jboss.as.server.deployment] (MSC service thread 1-2) WFLYSRV0027: Starting deployment of "wmq.jmsra.rar" (runtime-name: "wmq.jmsra.rar")
jboss-ivt_1  | 12:44:47,725 INFO  [org.jboss.as.server.deployment] (MSC service thread 1-1) WFLYSRV0027: Starting deployment of "wmq.jmsra.ivt.ear" (runtime-name: "wmq.jmsra.ivt.ear")
jboss-ivt_1  | 12:44:47,826 INFO  [org.apache.activemq.artemis.core.server] (ServerService Thread Pool -- 56) AMQ221000: live Message Broker is starting with configuration Broker Configuration (clustered=false,journalDirectory=/opt/jboss/jboss-eap-7.0/standalone/data/activemq/journal,bindingsDirectory=/opt/jboss/jboss-eap-7.0/standalone/data/activemq/bindings,largeMessagesDirectory=/opt/jboss/jboss-eap-7.0/standalone/data/activemq/largemessages,pagingDirectory=/opt/jboss/jboss-eap-7.0/standalone/data/activemq/paging)
jboss-ivt_1  | 12:44:47,827 INFO  [org.wildfly.iiop.openjdk] (MSC service thread 1-3) WFLYIIOP0009: CORBA ORB Service started
jboss-ivt_1  | 12:44:47,858 INFO  [org.apache.activemq.artemis.core.server] (ServerService Thread Pool -- 56) AMQ221013: Using NIO Journal
jboss-ivt_1  | 12:44:48,023 INFO  [org.jboss.as.server.deployment] (MSC service thread 1-3) WFLYSRV0207: Starting subdeployment (runtime-name: "WMQ_IVT_MDB.jar")
jboss-ivt_1  | 12:44:48,023 INFO  [org.jboss.as.server.deployment] (MSC service thread 1-4) WFLYSRV0207: Starting subdeployment (runtime-name: "WMQ_IVT.war")
jboss-ivt_1  | 12:44:48,254 INFO  [org.apache.activemq.artemis.core.server] (ServerService Thread Pool -- 56) AMQ221043: Protocol module found: [artemis-server]. Adding protocol support for: CORE
jboss-ivt_1  | 12:44:48,263 INFO  [org.apache.activemq.artemis.core.server] (ServerService Thread Pool -- 56) AMQ221043: Protocol module found: [artemis-hornetq-protocol]. Adding protocol support for: HORNETQ
jboss-ivt_1  | 12:44:50,003 INFO  [org.wildfly.extension.messaging-activemq] (MSC service thread 1-3) WFLYMSGAMQ0016: Registered HTTP upgrade for activemq-remoting protocol handled by http-acceptor acceptor
jboss-ivt_1  | 12:44:50,020 INFO  [org.wildfly.extension.messaging-activemq] (MSC service thread 1-4) WFLYMSGAMQ0016: Registered HTTP upgrade for activemq-remoting protocol handled by http-acceptor-throughput acceptor
jboss-ivt_1  | 12:44:50,021 INFO  [org.wildfly.extension.messaging-activemq] (MSC service thread 1-2) WFLYMSGAMQ0016: Registered HTTP upgrade for activemq-remoting protocol handled by http-acceptor acceptor
jboss-ivt_1  | 12:44:50,017 INFO  [org.wildfly.extension.messaging-activemq] (MSC service thread 1-3) WFLYMSGAMQ0016: Registered HTTP upgrade for activemq-remoting protocol handled by http-acceptor-throughput acceptor
jboss-ivt_1  | 12:44:50,243 INFO  [org.apache.activemq.artemis.core.server] (ServerService Thread Pool -- 56) AMQ221007: Server is now live
jboss-ivt_1  | 12:44:50,243 INFO  [org.apache.activemq.artemis.core.server] (ServerService Thread Pool -- 56) AMQ221001: Apache ActiveMQ Artemis Message Broker version 1.1.0.SP16-redhat-1 [nodeID=f4375749-5972-11e6-a7ea-75a84c3c44bb]
jboss-ivt_1  | 12:44:50,278 INFO  [org.wildfly.extension.messaging-activemq] (ServerService Thread Pool -- 56) WFLYMSGAMQ0002: Bound messaging object to jndi name java:/ConnectionFactory
jboss-ivt_1  | 12:44:50,296 INFO  [org.apache.activemq.artemis.core.server] (ServerService Thread Pool -- 58) AMQ221003: trying to deploy queue jms.queue.ExpiryQueue
jboss-ivt_1  | 12:44:50,333 INFO  [org.apache.activemq.artemis.core.server] (ServerService Thread Pool -- 59) AMQ221003: trying to deploy queue jms.queue.DLQ
jboss-ivt_1  | 12:44:50,337 INFO  [org.wildfly.extension.messaging-activemq] (ServerService Thread Pool -- 57) WFLYMSGAMQ0002: Bound messaging object to jndi name java:jboss/exported/jms/RemoteConnectionFactory
jboss-ivt_1  | 12:44:50,472 INFO  [org.jboss.as.connector.deployment] (MSC service thread 1-3) WFLYJCA0007: Registered connection factory java:/JmsXA
jboss-ivt_1  | 12:44:50,615 INFO  [org.apache.activemq.artemis.ra] (MSC service thread 1-3) Resource adaptor started
jboss-ivt_1  | 12:44:50,616 INFO  [org.jboss.as.connector.services.resourceadapters.ResourceAdapterActivatorService$ResourceAdapterActivator] (MSC service thread 1-3) IJ020002: Deployed: file://RaActivatoractivemq-ra
jboss-ivt_1  | 12:44:50,618 INFO  [org.jboss.as.connector.deployment] (MSC service thread 1-4) WFLYJCA0002: Bound JCA ConnectionFactory [java:/JmsXA]
jboss-ivt_1  | 12:44:50,618 INFO  [org.wildfly.extension.messaging-activemq] (MSC service thread 1-2) WFLYMSGAMQ0002: Bound messaging object to jndi name java:jboss/DefaultJMSConnectionFactory
jboss-ivt_1  | 12:44:50,898 INFO  [org.jboss.as.connector.deployers.RADeployer] (MSC service thread 1-4) IJ020001: Required license terms for file:/opt/jboss/jboss-eap-7.0/standalone/tmp/vfs/temp/tempe03f18a52d83d131/content-572e26c965963bc3/contents/
jboss-ivt_1  | 12:44:51,110 WARN  [org.jboss.as.connector.deployers.RADeployer] (MSC service thread 1-4) IJ020017: Invalid archive: file:/opt/jboss/jboss-eap-7.0/standalone/tmp/vfs/temp/tempe03f18a52d83d131/content-572e26c965963bc3/contents/
jboss-ivt_1  | 12:44:51,116 INFO  [org.jboss.as.connector.deployers.RaXmlDeployer] (MSC service thread 1-1) IJ020001: Required license terms for file:/opt/jboss/jboss-eap-7.0/standalone/tmp/vfs/temp/tempe03f18a52d83d131/content-572e26c965963bc3/contents/
jboss-ivt_1  | 12:44:51,135 INFO  [org.jboss.as.connector.deployment] (MSC service thread 1-1) WFLYJCA0007: Registered connection factory java:/JMS2CF
jboss-ivt_1  | 12:44:51,136 INFO  [org.jboss.as.connector.deployment] (MSC service thread 1-1) WFLYJCA0007: Registered connection factory java:/jms/ivt/IVTCF
jboss-ivt_1  | 12:44:51,207 INFO  [org.jboss.as.connector.deployment] (MSC service thread 1-1) WFLYJCA0006: Registered admin object at java:/jms/ivt/IVTQueue
jboss-ivt_1  | 12:44:51,213 WARN  [org.jboss.as.connector.deployers.RaXmlDeployer] (MSC service thread 1-1) IJ020017: Invalid archive: file:/opt/jboss/jboss-eap-7.0/standalone/tmp/vfs/temp/tempe03f18a52d83d131/content-572e26c965963bc3/contents/
jboss-ivt_1  | 12:44:51,218 INFO  [org.jboss.as.connector.deployers.RaXmlDeployer] (MSC service thread 1-1) IJ020002: Deployed: file:/opt/jboss/jboss-eap-7.0/standalone/tmp/vfs/temp/tempe03f18a52d83d131/content-572e26c965963bc3/contents/
jboss-ivt_1  | 12:44:51,221 INFO  [org.jboss.as.connector.deployment] (MSC service thread 1-3) WFLYJCA0002: Bound JCA ConnectionFactory [java:/JMS2CF]
jboss-ivt_1  | 12:44:51,222 INFO  [org.jboss.as.connector.deployment] (MSC service thread 1-4) WFLYJCA0002: Bound JCA AdminObject [java:/jms/ivt/IVTQueue]
jboss-ivt_1  | 12:44:51,222 INFO  [org.jboss.as.connector.deployment] (MSC service thread 1-2) WFLYJCA0002: Bound JCA ConnectionFactory [java:/jms/ivt/IVTCF]
jboss-ivt_1  | 12:44:51,236 WARN  [org.jboss.as.ejb3] (MSC service thread 1-1) WFLYEJB0006: ActivationConfigProperty DestinationLookup will be ignored since it is not allowed by resource adapter: wmq.jmsra.rar
jboss-ivt_1  | 12:44:51,237 WARN  [org.jboss.as.ejb3] (MSC service thread 1-1) WFLYEJB0006: ActivationConfigProperty ConnectionFactoryLookup will be ignored since it is not allowed by resource adapter: wmq.jmsra.rar
jboss-ivt_1  | 12:44:51,335 INFO  [org.jboss.as.ejb3] (MSC service thread 1-1) WFLYEJB0042: Started message driven bean 'WMQ_IVT_MDB' with 'wmq.jmsra.rar' resource adapter
jboss-ivt_1  | 12:44:51,365 INFO  [org.hibernate.validator.internal.util.Version] (ServerService Thread Pool -- 59) HV000001: Hibernate Validator 5.2.4.Final-redhat-1
jboss-ivt_1  | 12:44:51,501 INFO  [org.wildfly.extension.undertow] (ServerService Thread Pool -- 58) WFLYUT0021: Registered web context: /WMQ_IVT
jboss-ivt_1  | 12:44:52,084 INFO  [org.jboss.as.server] (ServerService Thread Pool -- 32) WFLYSRV0010: Deployed "wmq.jmsra.rar" (runtime-name : "wmq.jmsra.rar")
jboss-ivt_1  | 12:44:52,085 INFO  [org.jboss.as.server] (ServerService Thread Pool -- 32) WFLYSRV0010: Deployed "wmq.jmsra.ivt.ear" (runtime-name : "wmq.jmsra.ivt.ear")
jboss-ivt_1  | 12:44:52,240 INFO  [org.jboss.as] (Controller Boot Thread) WFLYSRV0060: Http management interface listening on http://[0:0:0:0:0:0:0:0]:9990/management
jboss-ivt_1  | 12:44:52,245 INFO  [org.jboss.as] (Controller Boot Thread) WFLYSRV0051: Admin console listening on http://[0:0:0:0:0:0:0:0]:9990
jboss-ivt_1  | 12:44:52,246 INFO  [org.jboss.as] (Controller Boot Thread) WFLYSRV0025: JBoss EAP 7.0.0.GA (WildFly Core 2.1.2.Final-redhat-1) started in 8403ms - Started 471 of 536 services (133 services are lazy, passive or on-demand)

Conclusion

JBoss EAP 7 is very flexible. I used the first time the Deployment Overlay it is a very cool feature if you cannot modify the ear or war package. We also use the embed-server to configure JBoss instance offline and during the docker build. I would like also thx IBM Messaging team for WMQ Docker hub img, because this image was very useful to prove the correct JBoss and WMQ integration for this demo.