IBM Support

Setting up both a WebLogic Cluster and Maximo Enterprise Adapter for Maximo 6

Question & Answer


Question

What is one sample way to set up Maximo with MEA to work with a WebLogic Cluster?

Answer

When using the Maximo Enterprise Adapter (MEA) in a clustered environment the following should be considered.

For best performance with minimal impact to users, the Maximo Enterprise Adapter (MEA) can be configured to run on a single WebLogic application server instance of Maximo while users log in and work with a User Interface (UI) cluster of Maximo instances.

In the below example, you will need 4 WebLogic application servers.

One application server will be created for the redirector service.

One application server will be used for the stand-alone Maximo application used specifically for inbound MEA transaction processing.

The other two application servers will be used to set up a cluster of application servers for use as the User Interface cluster. All outbound transactions will be generated by the User Interface cluster members running Maximo.

In the sample configuration below, there are 2 application servers in the UI cluster and 1 application server in the stand-alone application server.

Below you will find instructions for setting up a cluster environment for 2 UI instances of Maximo and 1 instance of Maximo for the Maximo Enterprise Adapter.

Before you begin:



Follow the instructions outlined below, use the names listed directly below for your servers

Name the Admin server AdminMAXSERV
Name the Redirector server Redirector
Name the first Maximo application server for the UI cluster MAXIMOUI1
Name the second Maximo application server for the UI cluster MAXIMIUI2
Name the stand-alone Maximo application server MAXIMOMEA

Creating your application servers



1 From the Start menu, choose Programs > BEA WebLogic Platform 8.1 > Configuration Wizard
2. On the screen "Create or Extend a Configuration", click Create a new WebLogic Configuration and click Next
3. On the screen "Select a Configuration template", In the left pane, select the Basic WebLogic Server Domain template, and click Next
4. On the screen "Choose Express or Custom Configuration", select the Custom option and click Next
5. On the screen "Configure the Administration Server", fill in these fields with the following values, then click Next
Name: AdminMAXSERV
Listen Port: for example, 9010

6. On the screen "Managed Servers, Clusters, and Machines Options", select Yes and click Next
7. On the screen "Configure Managed Servers" Click Add and create the first managed server:
Name: MAXIMOUI1
Listen Port: for example, 9020

8. On the Configure Managed Servers (same screen), click Add and create the second managed server:
Name: MAXIMOUI2
Listen Port: for example, 9030

9. On the Configure Managed Servers (same screen), click Add and create the third managed server:
Name: MAXIMOMEA
Listen Port: for example, 9040

10. Configure Managed Servers (same screen), click Add and create the fourth managed server:
Name: Redirector
Listen Port: for example, 9050

11. Click Next

12. On the screen Configure Clusters, click Add and enter these values, then click Next:
Name: for example, MAXIMOCLUSTER
Multicast address: accept the default value
Multicast port: accept the default value

13. On the screen Assign Servers to Clusters, assign the MAXIMIOUI1 and MAXIMOUI2 servers in the left pane to the cluster by clicking the right arrow button, then click next
NOTE: Do not assign the MAXIMOMEA or Redirector servers to the cluster

14. On the screen Configure Machines, if you have other servers add them. If not, click Next

15. On the screen Database (JDBC) Options, select No and click Next

16. On the screen Messaging (JMS) Options, "Do you use the Maximo Enterprise Adapter (MEA)?", select NO and click next

17. On the screen Configure Windows Options, select whether you want to Create a Start Menu shortcut and to Install Administrative Server as a Windows Service, then click Next

18. On the screen Build Start Menu Entries, accept the defaults and click Next

19. On the screen Configure Server Start Mode and Java SDK, select a WebLogic Configuration Startup Mode (either Development or Production), then choose the Sun SDK and Click Next

For more information, see Production Mode versus Development Mode in the Administrator's guide

20. On the screen Create WebLogic Configuration, enter maximodomain in the Configuration Name field and click Create

21. On the screen Creating Configuration, when the configuration completes, click Done

Configuring your startup scripts


See the Administrator's Guide section "Editing the startup scripts" to complete the configuration of the startup scripts

NOTE: When setting the maximum heap size for the MAXIMOMEA application server JVM, the admin guide says to set this to 1024MB, however, since this application server will not be used by users directly, the memory size can be increased to 2048MB so that it can handle a larger volume of messages without running out of memory

Starting the Admin server and Administration console


See the Administrator's Guide section "Starting the Admin server and Administration console" to start your Admin server

Configuring the HTTP cluster servlet


When configuring the HTTP Cluster Servlet, the only ports to be specified are those for MAXIMOUI1 and MAXIMOUI2. Do not include the MAXIMOMEA application server.

1. Verify that a separate, non-clustered Managed Server exists to host the HTTP Cluster Servlet.
In "Configuring the Multiple Application Servers for Load Balancing" a server called Redirector was created to do this.

2. Use a text editor to open the web.xml file, located in the <Maximoroot>\appserver\weblogic\clusterweb\WEB-INF folder.
Edit the web.xml file as follows:
Look for the servlet named HttpClusterServlet.
Edit the WeblogicCluster parameter value and specify a list of all Managed Server addresses and port numbers, separated by a pipe (|) character.
The syntax for this parameter value is as follows:

<Managed Server1 IP Address>:<HTTP port>:<HTTPS port>|<Managed Server2 IP Address>:<HTTP port>:<HTTPS port>|<Managed Server3 IP Address>:<HTTP port>:<HTTPS port>

where <Managed Server IP Address> is the IP address of the Managed server and the <HTTP port> is the port where you are running the Managed Server. The :<HTTPS port> entry is used if you are configured with SSL security and can be omitted if you are not using it.

This is an example of an unedited HttpClusterServlet section. The line you must edit is in italics.

<servlet>
<servlet-name>HttpClusterServlet</servlet-name>
<servlet-class>
weblogic.servlet.proxy.HttpClusterServlet
</servlet-class>
<init-param>
<param-name>WebLogicCluster</param-name>
<paramvalue>myserver1:7736:7737|myserver2:7736:7737</param-value>
   </init-param>
</servlet>


The example below shows the <init-param> section edited for a particular configuration of two Managed Servers, with the edited portion in bold:

<init-param>
<param-name>WebLogicCluster</param-name>
<param-value>172.22.15.14:9020|172.22.15.14:9030</param-value>
</init-param>
Save the web.xml file.

3. From the WebLogic Administration Console, click on the Web Applications Module node in the left pane.
In the right pane, click Deploy a new Web Application Module.

4. Navigate to the clusterweb folder, which will be found at c:\maximo\appserver\weblogic\clusterweb

5. Click Target Module

6. Select the Redirector server for deployment

7. Click Continue. The screen refreshes and you can review your choices or make changes.

8. Click Deploy and make sure that the status message reads "Success"

9. Restart the Admin Server.

10. To access the Administration console, use this URL:
http://<machinename>:<port>/console
where <machinename> is the name of the machine and <port> is the port number where the Admin Server is started

Refer to the Oracle web site for general information on load balancing in a cluster.

Creating your connection pool for use with JMS resources



1) log in to the WebLogic console and navigate to services/jdbc/connection pools
2) select the link "configure a new jdbc connection pool"
3) select your database type (note: this should be your MAXIMO database type, i.e. Oracle, as this is where we will access the JMS resources)
4) select your database driver i.e. Oracle's driver (Thin). Click "continue".
5) enter the name of your connection pool as follows:
jmsqueueconnectionpool

6) fill in the fields for your database. i.e. MAXIMO database name, hostname, userid, password. This is the schema owner user ID and password.
7) click "continue"
8) click "Test driver configuration"
9) if the connection is successful, you will be brought to the "create and deploy" screen.
10) select the independent application server MAXIMOMEA and all servers in the cluster as the targets.
11) click the "create and deploy" button

Defining the jdbc data source for use with JMS resources



1) log in to the WebLogic console and navigate to services/jdbc/data sources
2) click "create a new jdbc data source"
3) enter the name and JNDI name as follows:
jmsqueuedatasource

4) click continue
5) select the connection pool created above, then click continue.
6) next, target the data source to the independent server instance MAXIMOMEA and all members of the cluster and click the "create" button

Creating your data stores for use with JMS resources



NOTE: the prefix values are very important, if you do not have unique names for prefix values on each store, messages can become corrupt as they will all use the same store files.

In the WebLogic console, navigate in the left pane to servers/JMS/stores

1) click the link "create a new JMS jdbc store"
2) enter the name as mxintcqinstore
3) select the connection pool created above
4) enter a prefix value of "mxintcqin", then click "apply"

5) create another new JMS jdbc store
6) enter the name as mxintsqinstore
7) select the connection pool created above
8) enter a prefix value of "mxintsqin", then click "apply"

9) create a third JMS jdbc store
10) enter the name as mxintsqoutstore
11) select the connection pool created above
12) enter a prefix value of "mxintsqout", then click "apply"

Creating your JMS resources for use in a clustered environment



1. In the WebLogic console, navigate in the left pane to services/JMS/Connection factories

Click the link to configure a new JMS connection factory

In the name field, enter "MEA Connection Factory"

In the JNDI field, enter "jms/mro/int/qcf/intqcf"

In the Default Delivery Mode, select "Persistent"

Scroll to the bottom of the screen and click the "Create" button

On the target and deploy screen, select the independent server MAXIMOMEA and all members of the cluster to deploy this connection factory to

Click "Apply"

Next, click on the transactions tab

Place a checkmark in the checkbox beside "XA Connection Factory Enabled"

Click "Apply"

2. From the left pane in the WebLogic console, navigate to services/JMS/Servers

a) Click the link to Configure a new JMS Server

b) In the name field, enter "mxintsqinserver"

c) In the Persistent Store field, select the store "mxintsqinstore"

d) Click the "Create" button

e) On the Target and Deploy tab, select your MEA server instance from the dropdown (i.e. MAXIMOMEA) and click the "Apply" button

Repeat the steps a) to e) above to create the next JMS server

Name this one "mxintcqinserver" using the store "mxintcqinstore", and target to the MAXIMOMEA server as above

Repeat the steps above again, but only from a) to d) to create the third JMS server

Name this one "mxintsqoutserver" using store "mxintsqoutstore", but for this server, target it to the MAXIMIUI1 (migratable) server as this queue is the only one used for outbound transactions from the UI cluster

3. From the left pane in the WebLogic console, navigate to services/JMS/servers/mxintsqinserver/destinations

Click the link to configure a new JMS queue

In the name field, enter "mxintsqin"

In the JNDI name field, enter "jms/mro/int/queues/sqin

In the Enable Store dropdown, select "true"

Click the "Create" button

4. From the left pane in the WebLogic console, navigate to services/JMS/servers/mxintsqoutserver/destinations

Click the link to configure a new JMS queue

In the name field, enter "mxintsqout"

In the JNDI name field, enter "jms/mro/int/queues/sqout"

In the Enable Store dropdown, select "true"

Click the "Create" button

5. From the left pane in the WebLogic console, navigate to services/JMS/servers/mxintcqinserver/destinations

Click the link to configure a new JMS queue

In the name field, enter "mxintcqin"

In the JNDI name field, enter "jms/mro/int/queues/cqin"

In the Enable Store dropdown, select "default"

Click the "Create" button. There is one more step for this queue that is not needed on the queues created in step 5 and 6.

Click the "Redelivery" tab

In the "Redelivery Delay Override" field, enter "30000" (this equals a 30 second delay for redelivery of errors on the continuous queue to avoid performance degradation)

Click the "Apply" button

6. Restart all application servers


NOTE: For each JDBC data store created above, two tables will automatically be created in your MAXIMO schema with the prefix names you entered when creating the new stores

MXINTCQINJMSSTATE
MXINTCQINJMSSTORE

MXINTSQINJMSSTATE
MXINTSQINJMSSTORE

MXINTSQOUTJMSSTATE
MXINTSQOUTJMSSTORE


Build and deploy multiple EAR files from the same Maximo directory.



You will need to build multiple ear file builds of Maximo where some of the files to be included in each ear file will be different from the next ear file, you do not need multiple instances of the Maximo installation folder.

For example, the User Interface (MAXIMOCLUSTER) application server requires one ear file that disables the MEA Inbound crontasks and the MAXIMOMEA application server requires an ear file that disables the MEA Outbound crontasks.

For each file that will be modified, making it different for one ear from the next, make a copy of that file and name it appropriately. An example of the files that would be unique to each ear file for the above scenario might look like this:

\maximo\applications\maximo\properties
maximo.properties
maximo.propertiesUI
maximo.propertiesMEA

\maximo\applications\maximo\META-INF\
application.xml
application.xmlUI
application.xmlMEA

maximo\applications\maximo\META-INF\
deployment-application.xml
deployment-application.xmlUI
deployment-application.xmlMEA

Where there are 3 copies of each file, one with the default name, the next named for the User Interface (Cluster) ear, and one named for the MEA ear.

In this scenario, for the creation of two different ear files you would make two copies of the file buildmaximoear.cmd and give them names such as the following:

buildmaximoear-UI.cmd
buildmaximoear-MEA.cmd

These would be the files you use to build your individual ear files.

These are the steps to change the new cmd files to build your unique ear files:

1. Edit the buildmaximoear-UI.cmd file,
a. At the top, enter the following shell commands:

copy /Y \maximo\applications\maximo\properties\maximo.propertiesUI \maximo\applications\maximo\properties\maximo.properties

copy /Y \maximo\applications\maximo\META-INF\applicationUI.xml \maximo\applications\maximo\META-INF\application.xml

copy /Y maximo\applications\maximo\META-INF\deployment-applicationUI.xml maximo\applications\maximo\META-INF\deployment-application.xml

b. Change the EAR_FILENAME variable to reflect the unique ear file name for the UI and MEA, for example:

set EAR_FILENAME=maximoUI.ear

3. You can then run this build scripts to build the ear files. In this case, the resulting ear file will be named maximoUI.ear.
4. Repeat the above steps to create the maximoMEA.ear as well, changing references for UI to MEA.

Prepare and Deploy the UI application server


Since we want all MEA Inbound crontasks to run in the MAXIMOMEA instance, they are listed here as DONOTRUN for the UI application (MAXIMOCLUSTER).
1. Edit the maximo.propertiesUI file and add the donotrun option as below:
mxe.crontask.donotrun=JMSQSEQCONSUMER.SEQQIN,IFACETABLECONSUMER.IFACEIN,BBcron.BBCRON1,......

Note: Use of the above donotrun option is recommended over the target-enabled option because the donotrun option is Cluster-aware. Therefore, if the crontask is running in one application server, and that application server is shut down, another application server can take over running the crontasks.

Also, be sure to go through your list of crontasks and note each instance in the correct case and add it to the mxe.crontask.donotrun parameter in the maximo.propertiesUI, each separated by a comma

2. Build the maximoUI.ear file – using the buildmaximoear-UI.cmd.

3. Now that you have created and configured the MAXIMOCLUSTER, you should now deploy your maximoUI.ear (enterprise application - EAR) to the MAXIMOCLUSTER.

4. Lastly, start/restart the MAXIMOCLUSTER server.

Preparing the Maximo application for deployment to the MEA application server



To make sure that the MDB used by the MEA application is deployed correctly, edit the following files and make sure the meajmsejb.jar is uncommented:

1. Locate and edit this file under \maximo\applications\maximo\META-INF\application.xmlMEA

Open the file using a text editor and uncomment the following:

Make sure the following looks like this:

<!-- JMS MDB is not deployed by default -->
<module>
<ejb>/meajmsejb/ejbmodule</ejb>
</module>


2. Locate and the edit this file under \maximo\applications\maximo\META-INF\deployment-applicationMEA.xml

Open the file using a text editor and uncomment the following:

<!-- JMS MDB is not deployed by default -->
<module id="EjbModule_1077124925237">
<ejb>meajmsejb.jar</ejb>
</module>


3. Save and close the file.

6. Locate the \maximo\applications\maximo\properties\maximo.propertiesMEA file and change the mxe.name property to a name that represents that this is the ear file for the MEA instance, i.e. MXServerMEA.

7. Uncomment the line mxe.crontask.donotrun if it is commented out
Edit the line so that all crontasks except for the JMSQSEQCONSUMER.SEQQOUT crontask will run on this server:
e.g.
mxe.crontask.donotrun=JMSQSEQCONSUMER.SEQQOUT

This will be the only crontask entry because this is the only crontask that we do not want to run.

8. Save and close the file

9. Build the maximoMEA.ear

10. Deploy the maximoMEA.ear to the MAXIMOMEA application server (refer to the system administrator's guide for deployment information)

11. Restart the MAXIMOMEA application server



Web services:

When deploying web services, you will need to set up the web service administration URL and port to point to the MAXIMOMEA application server IP address and port.
When sending transactions to these interfaces, you will need to point your web service client to the IP address and port of the MAXIMOMEA application server IP address and port, not the cluster address for the UI instances.
This is to prevent any inbound transaction processing from web service invocation from taking place on the UI cluster. It is also important to make sure that the Integration Global Directory is in a location that all application servers in a multi-node environment can access. See the next section for information on the Integration Global Directory.

The Integration Global Directory:

When you deploy a web service, a file called server-config.wsdd is updated with the service you have just deployed. This file will be written under to root folder of the Integration Global Directory. If WebLogic application servers will be distributed in a multi-node environment, the integration global directory must exist in a shared location that all application servers can access.

This directory is used for transaction reprocessing, which is where the error xml files are written if they fail to deliver to their destination. This location is also used to store schema and wsdl files as well as the deployed web services.

This shared location can be either a mapped drive or UNC share (Windows), or a mount point (Unix). The user specified to run the WebLogic services must have access to read and write to this share or mount point. This includes the node manager if in use. In Windows, do not use a local system account but rather a domain account as local system accounts to not have access to mapped drives or UNC shares.

You set the integration global directory path in the External Systems application, in the select action menu called “Integration Administration Setup”.

Important note:



Importing data can only be performed while logged into the MEA instance where the Message Driven Bean is deployed. Exporting data can only be performed while logged into one of the UI cluster members.

[{"Product":{"code":"SSLKT6","label":"IBM Maximo Asset Management"},"Business Unit":{"code":"BU059","label":"IBM Software w\/o TPS"},"Component":"MEA: Generic","Platform":[{"code":"PF002","label":"AIX"},{"code":"PF016","label":"Linux"},{"code":"PF027","label":"Solaris"},{"code":"PF033","label":"Windows"}],"Version":"6.2;6.2.1;6.2.2;6.2.3;6.2.4;6.2.5;6.2.6;6.2.7;6.2.8","Edition":"All Editions","Line of Business":{"code":"LOB59","label":"Sustainability Software"}},{"Product":{"code":"SSLKT6","label":"IBM Maximo Asset Management"},"Business Unit":{"code":"BU059","label":"IBM Software w\/o TPS"},"Component":"Not Applicable","Platform":[{"code":"","label":""}],"Version":"","Edition":"","Line of Business":{"code":"LOB59","label":"Sustainability Software"}}]

Product Synonym

MAXIMO

Document Information

Modified date:
13 April 2021

UID

swg21293677