IBM Support

Manually configuring JMS queues for Notifications in WebSphere

Question & Answer


Question

Beginning with Maximo 7.6.0.5, additional Integration objects can be used with the Asset Health Insights Reliability Engineering Work Center for notifications. Notifications are used to communicate the status of your assets and locations. The Configuration Tool will create them automatically.

Cause

This information is in the current Knowledge Center but combining into a single tech note may be helpful.

Answer

Note: With this document, all WebSphere node, cell and server information is from Out of the Box Maximo 7.6.0.5.


Creating the service integration bus destination for the notification (NOTFBD) queue:

  1. From the WebSphere Application Server Network Deployment Administrative Console, click Service Integration > Buses to open the Buses dialog box.
  2. Click intjmsbus to open the Buses > intjmsbus dialog box.
  3. Click Destinations under Destination resources to open the Buses > intjmsbus > Destinations dialog box.
  4. Click New to open the Create new destination dialog box.
  5. Leave Queue checked as the destination type, and click Next to open the Create new queue dialog box.
  6. Type NOTFBD in the Identifier field, then click Next to open the Create a new queue for point-to-point messaging dialog box.
  7. Select the Bus Member pull-down and choose Node=ctgNode01:Server=MXServer as the bus member that will store and process messages for the NOTFBD bus destination queue.
  8. Click Next to open the Confirm queue creation dialog box.
  9. Review your selections, then click Finish to complete the creation of the NOTFBD bus destination queue.
  10. Navigate the path Buses > intjmsbus > Destinations, then click NOTFBD to open the configuration dialog box.
  11. Click None as the Exception destination value.
  12. Check the box for "Keep count of failed deliveries per message."
  13. Click Apply.
  14. Click Save.


Creating the service integration bus destination for the notification error (NOTFERRBD) queue:

  1. From the WebSphere Application Server Network Deployment Administrative Console, click Service Integration > Buses to open the Buses dialog box.
  2. Click intjmsbus to open the Buses > intjmsbus dialog box.
  3. Click Destinations under Destination resources to open the Buses > intjmsbus > Destinations dialog box.
  4. Click New to open the Create new destination dialog box.
  5. Leave Queue checked as the destination type, and click Next to open the Create new queue dialog box.
  6. Type NOTFERRBD in the Identifier field, then click Next to open the Create a new queue for point-to-point messaging dialog box.
  7. Select the Bus Member pull-down and choose Node=ctgNode01:Server=MXServer as the bus member that will store and process messages for the NOTFERRBD bus destination queue.
  8. Click Next to open the Confirm queue creation dialog box.
  9. Review your selections, then click Finish to complete the creation of the NOTFERR bus destination queue.
  10. Navigate the path Buses > intjmsbus > Destinations, then click NOTFERRBD to open the configuration dialog box.
  11. Specify NOTFERRBD as the exception destination. Set the Maximum failed deliveries value to 5.
  12. Check the box for "Keep count of failed deliveries per message."
  13. Click Apply.
  14. Click Save.


Adding the NOTFERRBD exception destination to the NOTFBD bus destination queue:

  1. At Service Integration > Buses, click intjmsbus to open the Buses > intjmsbus dialog box again.
  2. Click Destinations under Destination resources to open the Buses > intjmsbus > Destinations dialog box.
  3. Select NOTFBD.
  4. Specify NOTFERRBD as the exception destination. Set the Maximum failed deliveries value to 5.
  5. Click Apply.
  6. Click Save.


Creating the notification (NOTF) JMS queue:

  1. From the WebSphere Application Server Network Deployment administrative console, click Resources > JMS > Queues.
  2. From the Scope drop-down list, select Cell=ctgCell01.
  3. Click New.
  4. Verify that the Default Messaging Provider is selected and click OK.
  5. Enter the following information, and click OK.
  • Name: NOTF This value must contain only upper-case letters.
    JNDI name: jms/maximo/int/queues/notf
    Bus name: intjmsbus
    Queue name: NOTFBD

6. Click OK.
7. Click Save.

Creating the notification error (NOTFERR) JMS queue:

  1. From the WebSphere Application Server Network Deployment administrative console, click Resources > JMS > Queues.
  2. From the Scope drop-down list, select Cell=ctgCell01.
  3. Click New.
  4. Verify that the Default Messaging Provider is selected and click OK.
  5. Enter the following information, and click OK.
  • Name: NOTFERR This value must contain only upper-case letters.
    JNDI name: jms/maximo/int/queues/notferr
    Bus name: intjmsbus
    Queue name: NOTFERRBD.

6. Click OK.
7. Click Save.

Creating JMS activation specification for the notification queue (notfact):

  1. From the WebSphere Application Server Network Deployment administrative console, click Resources > JMS > Activation Specifications.
  2. From the Scope menu, select Cell=ctgCell01, and then click Apply.
  3. Click New to complete the General Properties section for the new JMS activation specification.
  4. Click OK.
  5. Enter the following information, and click OK.
  • Name: notfact This value must only contain lower-case letters.
    JNDI name: notfact This value must be the same as the one used for the Name field.
    Destination type: Queue
    Destination JNDI name/lookup: jms/maximo/int/queues/notf
    Bus name: intjmsbus
    Maximum concurrent MDB invocations per endpoint: 10

6. Click OK.
7. Click Save.

Creating JMS activation specification for the notification error queue (notfacterr):

  1. From the WebSphere Application Server Network Deployment administrative console, click Resources > JMS > Activation Specifications.
  2. From the Scope menu, select Cell=ctgCell01, and then click Apply.
  3. Click New to complete the General Properties section for the new JMS activation specification.
  4. Click OK.
  5. Enter the following information, and click OK.
  • Name: notfacterr This value must only contain lower-case letters.
    JNDI name: notfacterr This value must be the same as the one used for the Name field.
    Destination type: Queue
    Destination JNDI name: jms/maximo/int/queues/notferr
    Bus name: intjmsbus
    Maximum concurrent MDB invocations per endpoint: 10

6. Click OK.
7. Click Save.

Enable the Message Driven Beans for the Integration Framework maximo.ear file.

1. Open the file (default) /opt/IBM/SMP/maximo/applications/maximo/mboejb/ejbmodule/META-INF/ejb-jar_notf.xml

The file contains three sections that have Message Driven Beans (MDBs) commented out and will look like this: 

<!-- MEA MDB
  <message-driven id="MessageDriven_JMSContQueueProcessor_1">
    <ejb-name>JMSContQueueProcessor-1</ejb-name>
    <ejb-class>psdi.iface.jms.JMSContQueueProcessor</ejb-class>
    <transaction-type>Container</transaction-type>
    <message-destination-type>javax.jms.Queue</message-destination-type>
    <env-entry> <env-entry-name>MESSAGEPROCESSOR</env-entry-name>
      <env-entry-type>java.lang.String </env-entry-type>
      <env-entry-value>psdi.iface.jms.QueueToMaximoProcessor</env-entry-value>
    </env-entry>
  </message-driven> -->
 <!-- Notf MDB
  <message-driven id="MessageDriven_JMSNotificationProcessor_1">
    <ejb-name>JMSNotificationProcessor-1</ejb-name>
    <ejb-class>psdi.iface.jms.JMSContQueueProcessor</ejb-class>
    <transaction-type>Container</transaction-type>
    <message-destination-type>javax.jms.Queue</message-destination-type>
    <env-entry> <env-entry-name>MESSAGEPROCESSOR</env-entry-name>
      <env-entry-type>java.lang.String</env-entry-type>
      <env-entry-value>com.ibm.tivoli.maximo.notification.NotificationMessageProcessor</env-entry-value>
    </env-entry>
  </message-driven> -->
 <!-- Notf MDB for error queue
  <message-driven id="MessageDriven_JMSNotificationProcessor_2">
    <ejb-name>JMSNotificationProcessor-2</ejb-name>
    <ejb-class>psdi.iface.jms.JMSContQueueProcessor</ejb-class>
    <transaction-type>Container</transaction-type>
    <message-destination-type>javax.jms.Queue</message-destination-type>
    <env-entry>
      <env-entry-name>MESSAGEPROCESSOR</env-entry-name>
      <env-entry-type>java.lang.String</env-entry-type>
      <env-entry-value>com.ibm.tivoli.maximo.notification.NotificationMessageProcessor</env-entry-value>
     </env-entry>
    <env-entry>
      <env-entry-name>MDBDELAY</env-entry-name>
      <env-entry-type>java.lang.Long</env-entry-type>
      <env-entry-value>30000</env-entry-value>
    </env-entry>
    <env-entry>
      <env-entry-name>ERRORQUEUE</env-entry-name>
      <env-entry-type>java.lang.String</env-entry-type>
      <env-entry-value>1</env-entry-value>
    </env-entry>
  </message-driven> -->
<!-- MEA MDB for error queue
  <message-driven id="MessageDriven_JMSContQueueProcessor_2">
    <ejb-name>JMSContQueueProcessor-2</ejb-name>
    <ejb-class>psdi.iface.jms.JMSContQueueProcessor</ejb-class>
    <transaction-type>Container</transaction-type>
    <message-destination-type>javax.jms.Queue</message-destination-type>
    <env-entry>
      <env-entry-name>MESSAGEPROCESSOR</env-entry-name>
      <env-entry-type>java.lang.String</env-entry-type>
      <env-entry-value>psdi.iface.jms.QueueToMaximoProcessor</env-entry-value>
    </env-entry>
    <env-entry>
      <env-entry-name>MDBDELAY</env-entry-name>
      <env-entry-type>java.lang.Long</env-entry-type>
      <env-entry-value>30000</env-entry-value>
    </env-entry>      
    <env-entry>
      <env-entry-name>ERRORQUEUE</env-entry-name>
      <env-entry-type>java.lang.String </env-entry-type>
      <env-entry-value>1</env-entry-value>
    </env-entry>      
  </message-driven>
-->

Uncomment the MDBs.  Uncommented, the MDBs will look like this:

<!-- MEA MDB -->
  <message-driven id="MessageDriven_JMSContQueueProcessor_1">
    <ejb-name>JMSContQueueProcessor-1</ejb-name>
    <ejb-class>psdi.iface.jms.JMSContQueueProcessor</ejb-class>
    <transaction-type>Container</transaction-type>
    <message-destination-type>javax.jms.Queue</message-destination-type>
    <env-entry> <env-entry-name>MESSAGEPROCESSOR</env-entry-name>
      <env-entry-type>java.lang.String </env-entry-type>
      <env-entry-value>psdi.iface.jms.QueueToMaximoProcessor</env-entry-value>
    </env-entry>
  </message-driven> -->
 <!-- Notf MDB  -->
  <message-driven id="MessageDriven_JMSNotificationProcessor_1">
    <ejb-name>JMSNotificationProcessor-1</ejb-name>
    <ejb-class>psdi.iface.jms.JMSContQueueProcessor</ejb-class>
    <transaction-type>Container</transaction-type>
    <message-destination-type>javax.jms.Queue</message-destination-type>
    <env-entry> <env-entry-name>MESSAGEPROCESSOR</env-entry-name>
      <env-entry-type>java.lang.String</env-entry-type>
      <env-entry-value>com.ibm.tivoli.maximo.notification.NotificationMessageProcessor</env-entry-value>
    </env-entry>
  </message-driven> -->
 <!-- Notf MDB for error queue  -->
  <message-driven id="MessageDriven_JMSNotificationProcessor_2">
    <ejb-name>JMSNotificationProcessor-2</ejb-name>
    <ejb-class>psdi.iface.jms.JMSContQueueProcessor</ejb-class>
    <transaction-type>Container</transaction-type>
    <message-destination-type>javax.jms.Queue</message-destination-type>
    <env-entry>
      <env-entry-name>MESSAGEPROCESSOR</env-entry-name>
      <env-entry-type>java.lang.String</env-entry-type>
      <env-entry-value>com.ibm.tivoli.maximo.notification.NotificationMessageProcessor</env-entry-value>
     </env-entry>
    <env-entry>
      <env-entry-name>MDBDELAY</env-entry-name>
      <env-entry-type>java.lang.Long</env-entry-type>
      <env-entry-value>30000</env-entry-value>
    </env-entry>
    <env-entry>
      <env-entry-name>ERRORQUEUE</env-entry-name>
      <env-entry-type>java.lang.String</env-entry-type>
      <env-entry-value>1</env-entry-value>
    </env-entry>
  </message-driven>
<!-- MEA MDB for error queue -->
  <message-driven id="MessageDriven_JMSContQueueProcessor_2">
    <ejb-name>JMSContQueueProcessor-2</ejb-name>
    <ejb-class>psdi.iface.jms.JMSContQueueProcessor</ejb-class>
    <transaction-type>Container</transaction-type>
    <message-destination-type>javax.jms.Queue</message-destination-type>
    <env-entry>
      <env-entry-name>MESSAGEPROCESSOR</env-entry-name>
      <env-entry-type>java.lang.String</env-entry-type>
      <env-entry-value>psdi.iface.jms.QueueToMaximoProcessor</env-entry-value>
    </env-entry>
    <env-entry>
      <env-entry-name>MDBDELAY</env-entry-name>
      <env-entry-type>java.lang.Long</env-entry-type>
      <env-entry-value>30000</env-entry-value>
    </env-entry>      
    <env-entry>
      <env-entry-name>ERRORQUEUE</env-entry-name>
      <env-entry-type>java.lang.String </env-entry-type>
      <env-entry-value>1</env-entry-value>
    </env-entry>      
  </message-driven>
 

2. Open the file (default) /opt/IBM/SMP/maximo/applications/maximo/mboejb/ejbmodule/META-INF/ibm-ejb-jar-bnd_notf.xmi

The file contains a section that has Message Driven Beans (MDBs) commented out and will look like this:

<!-- MEA MDB
  <ejbBindings xmi:type="ejbbnd:MessageDrivenBeanBinding" xmi:id="MessageDrivenBeanBinding_1" activationSpecJndiName="intjmsact">
    <enterpriseBean xmi:type="ejb:MessageDriven" href="META-INF/ejb-jar.xml#MessageDriven_JMSContQueueProcessor_1"/>
  </ejbBindings>
-->
<!-- NOTF MDB
  <ejbBindings xmi:type="ejbbnd:MessageDrivenBeanBinding" xmi:id="MessageDrivenBeanBinding_3" activationSpecJndiName="notfact">
    <enterpriseBean xmi:type="ejb:MessageDriven" href="META-INF/ejb-jar.xml#MessageDriven_JMSNotificationProcessor_1"/>
  </ejbBindings>
-->
<!-- MEA MDB for error queue
  <ejbBindings xmi:type="ejbbnd:MessageDrivenBeanBinding" xmi:id="MessageDrivenBeanBinding_1" activationSpecJndiName="intjmsacterr">
    <enterpriseBean xmi:type="ejb:MessageDriven" href="META-INF/ejb-jar.xml#MessageDriven_JMSContQueueProcessor_2"/>
  </ejbBindings>
-->
<!-- NOTF MDB for error queue
  <ejbBindings xmi:type="ejbbnd:MessageDrivenBeanBinding" xmi:id="MessageDrivenBeanBinding_1" activationSpecJndiName="notfacterr">
    <enterpriseBean xmi:type="ejb:MessageDriven" href="META-INF/ejb-jar.xml#MessageDriven_JMSNotificationProcessor_2"/>
  </ejbBindings>
-->
Uncommented, the MDBs will look like this:
<!-- MEA MDB -->
  <ejbBindings xmi:type="ejbbnd:MessageDrivenBeanBinding" xmi:id="MessageDrivenBeanBinding_1" activationSpecJndiName="intjmsact">
    <enterpriseBean xmi:type="ejb:MessageDriven" href="META-INF/ejb-jar.xml#MessageDriven_JMSContQueueProcessor_1"/>
  </ejbBindings>

<!-- NOTF MDB -->
  <ejbBindings xmi:type="ejbbnd:MessageDrivenBeanBinding" xmi:id="MessageDrivenBeanBinding_3" activationSpecJndiName="notfact">
    <enterpriseBean xmi:type="ejb:MessageDriven" href="META-INF/ejb-jar.xml#MessageDriven_JMSNotificationProcessor_1"/>
  </ejbBindings>

<!-- MEA MDB for error queue -->
  <ejbBindings xmi:type="ejbbnd:MessageDrivenBeanBinding" xmi:id="MessageDrivenBeanBinding_1" activationSpecJndiName="intjmsacterr">
    <enterpriseBean xmi:type="ejb:MessageDriven" href="META-INF/ejb-jar.xml#MessageDriven_JMSContQueueProcessor_2"/>
  </ejbBindings>

<!-- NOTF MDB for error queue -->
  <ejbBindings xmi:type="ejbbnd:MessageDrivenBeanBinding" xmi:id="MessageDrivenBeanBinding_1" activationSpecJndiName="notfacterr">
    <enterpriseBean xmi:type="ejb:MessageDriven" href="META-INF/ejb-jar.xml#MessageDriven_JMSNotificationProcessor_2"/>
  </ejbBindings>

NOTE:  The MDBs are to be uncommented for the IF ear only.  For the UI and CRON maximo ear files, the MDBs stay commented out in both the ejb-jar.xml and the ibm-ejb-jar-bnd.xmi files.

3. Rebuild and redeploy the MAXIMO.ear file.

[{"Business Unit":{"code":"BU055","label":"Cognitive Applications"},"Product":{"code":"SSLKT6","label":"IBM Maximo Asset Management"},"ARM Category":[{"code":"a8m50000000CbClAAK","label":"System->Configuration"}],"ARM Case Number":"","Platform":[{"code":"PF025","label":"Platform Independent"}],"Version":"7.5.0;7.6.0;7.6.1","Line of Business":{"code":"LOB02","label":"AI Applications"}},{"Business Unit":{"code":"BU053","label":"Cloud & Data Platform"},"Product":{"code":"SSWT9A","label":"IBM Control Desk"},"ARM Category":[{"code":"a8m500000008b3TAAQ","label":"Miscellaneous Category (Portal, UI, Maximo, Install)"}],"Platform":[{"code":"PF025","label":"Platform Independent"}],"Version":"7.5.0;7.6.0;7.6.1","Line of Business":{"code":"LOB36","label":"IBM Automation"}}]

Document Information

Modified date:
18 August 2020

UID

swg21993675