Configuring JMS servers for Maximo Manage

To add a JMS server bundle, you specify standalonejms for the server bundle type when Maximo® Manage is deployed.

About this task

This configuration creates a single-pod Liberty JMS server.

By default, ephemeral storage for the JMS server uses the /jmsstore directory in the container. Generally, users require persistent storage for messaging. To provide persistent storage, provision a persistent storage volume for Maximo Application Suite. Then, configure a persistent volume claim for the JMS bundle when you deploy the application. You can specify a different directory for the JMS storage while setting server configuration through the additional server configuration parameters for the bundle.

Procedure

  1. Log in to Maximo Application Suite as a system administrator.
  2. From Suite administration, select Workspaces from the side navigation menu and then select the Manage tile.
  3. On the Manage workspace details page, click Actions, and select Update configuration.
  4. In the Server bundles row, click the edit icon.
  5. In the Server bundles section, if the System managed checkbox is selected, clear it. Click Add bundle.
  6. In the Name column, enter a name for the bundle, such as jmsserver.
  7. In the Type column, select standalonejms.
  8. To configure the queues, complete the following steps:
    1. In the Additional properties column for your JMS server bundle, click View.
    2. Optional: Set a different route subdomain.
    3. In the Additional server config section, use XML to specify default and custom queues.
      You can specify a queue as:
      • Outbound sequential
      • Outbound continuous
      • Inbound sequential
      • Inbound continuous
      You specify a queue as continuous by leaving the Sequential check box deselected and specify a queue as outbound by leaving the Inbound check box deselected.
      <?xml version="1.0" encoding="UTF-8"?>
      <server description="new server">
      
          <!-- Enable features -->
            <featureManager>
              <feature>wasJmsSecurity-1.0</feature>
              <feature>wasJmsServer-1.0</feature>
          </featureManager>
          <applicationManager autoExpand="true"/>
          <wasJmsEndpoint host="*" wasJmsSSLPort="7286" wasJmsPort="7276" />
          <messagingEngine>
              <fileStore path="/jmsstore"/>
              <queue id="sqoutbd" maintainStrictOrder="true" maxMessageDepth="100000" failedDeliveryPolicy="KEEP_TRYING" maxRedeliveryCount="-1"/>
              <queue id="sqinbd" maintainStrictOrder="true" maxMessageDepth="200000" failedDeliveryPolicy="KEEP_TRYING" maxRedeliveryCount="-1"/>
              <queue id="cqinerrbd" maxMessageDepth="100000" exceptionDestination="cqinerrbd"/>
              <queue id="cqinbd" maxMessageDepth="100000" exceptionDestination="cqinerrbd"/>
              <queue id="cqouterrbd" maxMessageDepth="100000" failedDeliveryPolicy="KEEP_TRYING"/>
              <queue id="cqoutbd" maxMessageDepth="100000" exceptionDestination="cqouterrbd"/>
              <queue id="notferrbd" maxMessageDepth="100000" failedDeliveryPolicy="KEEP_TRYING"/>
              <queue id="notfbd" maxMessageDepth="100000" exceptionDestination="notferrbd"/>
          </messagingEngine>
      </server>
      
      Note: The fileStore path can be modified to use a different directory to store JMS messages. If you are using persistent volumes, make sure that the fileStore path is configured correctly under the persistent volume directory. For example, if your persistent volume is mounted on directory /nfs, then the fileStore path might be /nfs/jmsstore.
    4. Click Save to save the additional server bundle properties.
      The queues are established in the JMS server.

To update the Liberty server running the Maximo server bundles:

  1. In the Maximo server, update the remoteServerAddress with the following information before you use the XMLs in 10.b, 11.b, and 12.b.
    <InstanceId>
    Name of your Maximo Application Suite instance.
    <workspaceId>
    Name of your workspace.
    <serverbundlename>
    Name of your JMS server bundle, for example, jmsserver.
    Note: Your remoteServerAddress must be in the following format:
    remoteServerAddress="<InstanceId>-<workspaceId>-<serverbundlename>.mas-<InstanceId>-manage.svc:7276:BootstrapBasicMessaging"
    For example, if your Maximo Application Suite server URL is: https://main.home.ivt810x-01.ibmmasivt.com/
    • Your instance ID is: ivt810x-01
    • Your workspace ID is: main
    • Your JMS server bundle name is: jmsserver
    The resulting remoteServerAddress address is:
    remoteServerAddress="ivt810x—01-main-jmsserver.mas-ivt810x-01-
    manage.svc:7276:BootstrapBasicMessaging"
    
  2. If you have a single server (all) bundle, to prepare the other Maximo Manage server bundles for the JMS queues, complete the following steps:
    1. In the Additional properties column for the server bundle, click View.
    2. In the Additional server config section, specify features for the queues that you want to add and jmsActivationSpec details, as shown in the following example.
      <?xml version='1.0' encoding='UTF-8'?>
      <server description="new server">
      <featureManager>
      <feature>jndi-1.0</feature>
      <feature>wasJmsClient-2.0</feature>
      <feature>jmsMdb-3.2</feature>
      <feature>mdb-3.2</feature>
      </featureManager>
      
          <jmsQueueConnectionFactory jndiName="jms/maximo/int/cf/intcf" connectionManagerRef="mifjmsconfact"><properties.wasJms remoteServerAddress="InstanceId-<workspaceId>-<serverbundlename>.mas-<InstanceId>-manage.svc:7276:BootstrapBasicMessaging"/></jmsQueueConnectionFactory>
          <connectionManager id="mifjmsconfact" maxPoolSize="20"/>
      
          <jmsQueue jndiName="jms/maximo/int/queues/sqout"><properties.wasJms queueName="sqoutbd"/></jmsQueue>
          <jmsQueue jndiName="jms/maximo/int/queues/sqin"><properties.wasJms queueName="sqinbd"/></jmsQueue>
          <jmsQueue jndiName="jms/maximo/int/queues/cqin"><properties.wasJms queueName="cqinbd"/></jmsQueue>
          <jmsQueue jndiName="jms/maximo/int/queues/cqinerr"><properties.wasJms queueName="cqinerrbd"/></jmsQueue>
          <jmsQueue jndiName="jms/maximo/int/queues/cqout"><properties.wasJms queueName="cqoutbd"/></jmsQueue>
          <jmsQueue jndiName="jms/maximo/int/queues/cqouterr"><properties.wasJms queueName="cqouterrbd"/></jmsQueue>
          <jmsQueue jndiName="jms/maximo/int/queues/notf"><properties.wasJms queueName="notfbd"/></jmsQueue>
          <jmsQueue jndiName="jms/maximo/int/queues/notferr"><properties.wasJms queueName="notferrbd"/></jmsQueue>
      
      
          <jmsActivationSpec id="maximo-all/mboejb/JMSContQueueProcessor-1" maxEndpoints="5"><properties.wasJms destinationLookup="jms/maximo/int/queues/cqin" maxConcurrency="5" maxBatchSize="20" connectionFactoryLookup="jms/maximo/int/cf/intcf"/></jmsActivationSpec>
          <jmsActivationSpec id="maximo-all/mboejb/JMSContQueueProcessor-2" maxEndpoints="1"><properties.wasJms destinationLookup="jms/maximo/int/queues/cqinerr" maxConcurrency="1" maxBatchSize="20" connectionFactoryLookup="jms/maximo/int/cf/intcf"/></jmsActivationSpec>
          <jmsActivationSpec id="maximo-all/mboejb/JMSContOutQueueProcessor-1" maxEndpoints="5"><properties.wasJms destinationLookup="jms/maximo/int/queues/cqout" maxConcurrency="5" maxBatchSize="20" connectionFactoryLookup="jms/maximo/int/cf/intcf"/></jmsActivationSpec>
          <jmsActivationSpec id="maximo-all/mboejb/JMSContOutQueueProcessor-2" maxEndpoints="1"><properties.wasJms destinationLookup="jms/maximo/int/queues/cqouterr" maxConcurrency="1" maxBatchSize="20" connectionFactoryLookup="jms/maximo/int/cf/intcf"/></jmsActivationSpec>
      </server>
      
      Remember: As you can see in the example, you need to specify jmsActivationSpec for both outbound and inbound continuous queues as well as outbound and inbound continuous error queues.
  3. If you have a mea bundle, to prepare the other Maximo Manage server bundles for the JMS queues, complete the following steps:
    1. In the Additional properties column for the server bundle, click View.
    2. In the Additional server config section, specify features for the queues that you want to add and jmsActivationSpec details, as shown in the following example.
      <?xml version='1.0' encoding='UTF-8'?>
      <server description="new server">
      <featureManager>
      <feature>jndi-1.0</feature>
      <feature>wasJmsClient-2.0</feature>
      <feature>jmsMdb-3.2</feature>
      <feature>mdb-3.2</feature>
      </featureManager>
      
          <jmsQueueConnectionFactory jndiName="jms/maximo/int/cf/intcf" connectionManagerRef="mifjmsconfact"><properties.wasJms remoteServerAddress="<InstanceId>-<workspaceId>-<serverbundlename>.mas-<InstanceId>-manage.svc:7276:BootstrapBasicMessaging"/></jmsQueueConnectionFactory>
          <connectionManager id="mifjmsconfact" maxPoolSize="20"/>
      
          <jmsQueue jndiName="jms/maximo/int/queues/sqout"><properties.wasJms queueName="sqoutbd"/></jmsQueue>
          <jmsQueue jndiName="jms/maximo/int/queues/sqin"><properties.wasJms queueName="sqinbd"/></jmsQueue>
          <jmsQueue jndiName="jms/maximo/int/queues/cqin"><properties.wasJms queueName="cqinbd"/></jmsQueue>
          <jmsQueue jndiName="jms/maximo/int/queues/cqinerr"><properties.wasJms queueName="cqinerrbd"/></jmsQueue>
          <jmsQueue jndiName="jms/maximo/int/queues/cqout"><properties.wasJms queueName="cqoutbd"/></jmsQueue>
          <jmsQueue jndiName="jms/maximo/int/queues/cqouterr"><properties.wasJms queueName="cqouterrbd"/></jmsQueue>
          <jmsQueue jndiName="jms/maximo/int/queues/notf"><properties.wasJms queueName="notfbd"/></jmsQueue>
          <jmsQueue jndiName="jms/maximo/int/queues/notferr"><properties.wasJms queueName="notferrbd"/></jmsQueue>
      
          <jmsActivationSpec id="maximomea/mboejb/JMSContQueueProcessor-1" maxEndpoints="5"><properties.wasJms destinationLookup="jms/maximo/int/queues/cqin" maxConcurrency="5" maxBatchSize="20" connectionFactoryLookup="jms/maximo/int/cf/intcf"/></jmsActivationSpec>
          <jmsActivationSpec id="maximomea/mboejb/JMSContQueueProcessor-2" maxEndpoints="1"><properties.wasJms destinationLookup="jms/maximo/int/queues/cqinerr" maxConcurrency="1" maxBatchSize="20" connectionFactoryLookup="jms/maximo/int/cf/intcf"/></jmsActivationSpec>
          <jmsActivationSpec id="maximomea/mboejb/JMSContOutQueueProcessor-1" maxEndpoints="5"><properties.wasJms destinationLookup="jms/maximo/int/queues/cqout" maxConcurrency="5" maxBatchSize="20" connectionFactoryLookup="jms/maximo/int/cf/intcf"/></jmsActivationSpec>
          <jmsActivationSpec id="maximomea/mboejb/JMSContOutQueueProcessor-2" maxEndpoints="1"><properties.wasJms destinationLookup="jms/maximo/int/queues/cqouterr" maxConcurrency="1" maxBatchSize="20" connectionFactoryLookup="jms/maximo/int/cf/intcf"/></jmsActivationSpec>
      
      </server>
      Remember: As you can see in the example, you need to specify jmsActivationSpec for both outbound and inbound continuous queues as well as outbound and inbound continuous error queues.
  4. If you have report, cron, or UI bundles, complete the following steps for each of them:
    1. In the Additional properties column for the server bundle, click View.
    2. In the Additional server config section, specify features for queues that you want to add, as shown in the following example:
      <?xml version='1.0' encoding='UTF-8'?>
      <server description="new server">
      <featureManager>
      <feature>jndi-1.0</feature>
      <feature>wasJmsClient-2.0</feature>
      <feature>jmsMdb-3.2</feature>
      <feature>mdb-3.2</feature>
      </featureManager>
      
          <jmsQueueConnectionFactory jndiName="jms/maximo/int/cf/intcf" connectionManagerRef="mifjmsconfact"><properties.wasJms remoteServerAddress="<InstanceId>-<workspaceId>-<serverbundlename>.mas-<InstanceId>-manage.svc:7276:BootstrapBasicMessaging"/></jmsQueueConnectionFactory>
          <connectionManager id="mifjmsconfact" maxPoolSize="20"/>
      
          <jmsQueue jndiName="jms/maximo/int/queues/sqout"><properties.wasJms queueName="sqoutbd"/></jmsQueue>
          <jmsQueue jndiName="jms/maximo/int/queues/sqin"><properties.wasJms queueName="sqinbd"/></jmsQueue>
          <jmsQueue jndiName="jms/maximo/int/queues/cqin"><properties.wasJms queueName="cqinbd"/></jmsQueue>
          <jmsQueue jndiName="jms/maximo/int/queues/cqinerr"><properties.wasJms queueName="cqinerrbd"/></jmsQueue>
          <jmsQueue jndiName="jms/maximo/int/queues/cqout"><properties.wasJms queueName="cqoutbd"/></jmsQueue>
          <jmsQueue jndiName="jms/maximo/int/queues/cqouterr"><properties.wasJms queueName="cqouterrbd"/></jmsQueue>
          <jmsQueue jndiName="jms/maximo/int/queues/notf"><properties.wasJms queueName="notfbd"/></jmsQueue>
          <jmsQueue jndiName="jms/maximo/int/queues/notferr"><properties.wasJms queueName="notferrbd"/></jmsQueue>
      
      </server>
      Remember: As you can see in the example, you can specify continuous and sequential type for both outbound and inbound queues.
  5. Click Save again to save the additional server bundle properties.
  6. After you complete the workspace updates, activate the changes.

What to do next

After you configure the stand-alone JMS servers, you can log in to Maximo Manage and configure your JMS queues. For more information, see JMS queue configuration.