Você está na página 1de 12

Setting up WebSphere Persistent Queues & Multi Cluster

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 MEA can be configured to run on a single instance of
Maximo while users log in and work with User Interface (UI) Instances of Maximo.
In this case, you will need separate application servers (MEA and UI instances).
To share these resources, all resources will need to be defined at the cell level within the WebSphere
console. The reason for this is although the MEA instance will do all of the processing of inbound
transactions, outbound transaction events will still occur from the UI instances upon saving Maximo records.
This means that the UI instances need to have access to the JMS resources used by the MEA in order to be
able to send outbound messages.
The MEA instance which will be responsible for processing inbound MEA transactions from the continuous
queue will need to have the Message Driven Bean (MDB) deployed along with the Maximo application to it's
own application server and therefore will need a maximo.ear build that is slightly different than the UI
instances which will not need the Message Driven Bean running within them.
Below you will find instructions for setting up a cluster environment for UI instances of Maximo and a standalone application server for Maximo MEA transaction processing.
In the example configuration below, we will use the following names:
MAXIMOMEA is the application server for the Maximo Enterprise Adapter instance
MAXIMOSERVER is the application server for the Maximo User Interface
MAXIMOCLUSTER is the cluster
MAXIMOUI1 is a clustered server for the UI
MAXIMOUI2 is a clustered server for the UI
Before you begin:
Follow the instructions in the Maximo System Administrator's Guide to create your initial application server
Name the server MAXIMOSERVER
Follow the steps again and create a second application server
Name this server MAXIMOMEA
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 large volumes of messages
Creating a cluster and cluster members
1. Open the Administrative Console.
2. Click Servers > Clusters in the navigation pane.
3. Click New in the Server Cluster pane.
4. In Step 1 of the Enter Basic Cluster Information panel, perform the following actions:
a) Type MAXIMOCLUSTER in the Cluster name field.
b) Select the Prefer local box.
c) Select Do not include an existing server in this cluster button.
d) Click Next.

5. In Step 2 of the Create New Clustered Servers panel, perform the following actions:
a) Type MAXIMOUI1 in the Member name field.
b) Accept the defaults in the Select Node and Weight fields.
c) Select Generate Unique Http Ports.
d) Select the Existing application server button, and choose MAXIMOSERVER (this is the application server
name created initially for Maximo) from the drop down list.
e) Click Apply.
6. Repeat step 5 to create a second cluster member, and in the Member name field enter MAXIMOUI2.
NOTE You do not have to perform step 5-d when you create additional clustered servers, because
MAXIMOUI2 automatically defaults to the template you selected for MAXIMOUI1.
7. Click Next.
8. Click Finish to create the cluster and clustered servers.
9. Click Save.
10. Select Synchronize changes with Nodes, then click Save again.
Update Virtual Hosts
This procedure describes how to verify port numbers used by the clustered servers. It also explains how to
update the virtual host with the port number information.
A virtual host enables a single host machine to resemble multiple host machines. Each virtual host has a
logical name and a list of one or more DNS aliases by which it is known.
1. To verify port numbers of the clustered application servers, perform the following actions:
a) In the navigation pane, click Servers > Application Servers.
b) In the Application Servers panel, click MAXIMOUI1.
c) Under the Communication heading, click Ports.
d) Note the WC_defaulthost port for use in Step 3 below (for example, step 3-h requires a WC_defaulthost
port.)
2. Repeat Step 1 for MAXIMOUI2.
3. In the navigation pane, click Environment > Virtual Hosts.
Complete the following actions:
a) Click New to add a new virtual host for the cluster, then enter MAXIMOCLUSTER_host for the Name.
b) Click Apply.
c) Click Host Aliases under Additional Properties.
d) Click New in the Host Alias panel to add Host name and port number values to the host aliases list.
e) Enter the following:
Host Name: *
Port: 80 (same as port number for the IBM HTTP Server)
f) Click OK.
g) Click Host Aliases, then click New.
h) Enter the following:
Host Name: *
Port: 9081 (same as port number for MAXIMOUI1)
i) Click OK.
j) Click Host Aliases, then click New.
k) Enter the following:
Host Name: *
Port: 9082 (same as port number for MAXIMOUI2)
l) Click OK.
4. To save the configuration, complete the following actions:

a) Click Save.
b) Check Synchronize changes with Nodes.
c) Click Save.
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------Creating data source providers for JMS stores
Set two data sources in the WebSphere console for use by the JMS resources
Note that each data source will require a unique schema, one will be used by the MEA instance, and the
other by the cluster. This is a WebSphere requirement that two message engines require unique schema
names. As you add bus members, each member added will cause a unique message engine to be created. In
this configuration there are two members, the MEA instance and the cluster.
Since two schemas will be required for this configuration, and the first schema name will be the maximo
schema, work with your DBA to create a second schema in the same database specifically for use by the
second data source before proceeding with the steps below.
The user that owns the second schema must be able to create tables.
Creating the data source provider
1. Log in to the WebSphere console, and from the left pane, select Resources/JDBC Providers
2. On the JDBC providers screen, set the scope to be the cell and click "Apply"
This can be done by clearing all fields before clicking the apply button
3. Click the "new" button
4. In the General Properties, select your database type and provider type (i.e. oracle and oracle driver). In
the implementation type dropdown select "XA data source"
5. click next
6. In the name field, enter
oraclexa
7. In the classpath text box, enter (be sure to correct the path to reflect your oraclethin.jar path):
C:\maximo\applications\maximo\lib\oraclethin.jar
8. click "apply" and save and synchronize with other nodes.
Creating the first data source
1.
2.
3.
4.

Navigate to your JDBC provider called oraclexa


click the link on the right side of the screen called "data sources"
click the "new" button
In the name field enter the value:

oraclexads
5. In the JNDI name field, enter the value:
jdbc/oraclexads
6. Select a data store helper class for your oracle version:
i.e. Oracle 9i and prior data store helper
7. In the URL field, enter your JDBC URL (this can be found in your maximo.properties if you are not sure)
jdbc:oracle:thin:@satbfuller:1521:maximo

8. Click apply, save and synchronize with other nodes

Creating your first authentication data entry


1. Navigate to your JDBC provider called oraclexa, then click data sources and select your data source called
oraclexads
2. On the right side of the screen, under Related Items, click the link for "J2ee Connection Architecture
Authentication data entries"
3. click the "new" button
4. In the alias field, enter a value you would like to use: i.e. maximo
5. enter the username and password used to connect to the database: i.e. maximo/maximo
6. Enter a Description that identifies this entry
7. Click apply
8. Save and synchronize with other nodes
9. Navigate back to your data source called oraclexads
10. In the dropdown field for "Component managed authentication alias", select your data alias (i.e.
maximo)
11. Click apply and save and synchronize with other nodes
12. Navigate to your data source again and click the test button at the top of the screen to test your data
source
Once the test has succeeded, you can proceed to the next data source
Creating the second data source
1.
2.
3.
4.

Navigate to your JDBC provider oraclexa


click the link on the right side of the screen called "data sources"
click the "new" button
In the name field enter the value:

oraclexads2
5. In the JNDI name field, enter the value:
jdbc/oraclexads2
6. Select a data store helper class for your oracle version:
i.e. Oracle 9i and prior data store helper
7. In the URL field, enter your JDBC URL (this will be the URL to your new schema used for the second
store)
jdbc:oracle:thin:@satbfuller:1521:maximo2
8. Click apply, save and synchronize with other nodes

Creating your second authentication data entry


1. Navigate to your JDBC provider called oraclexa, then click data sources and select your data source called
oraclexads2
2. On the right side of the screen, under Related Items, click the link for "J2ee Connection Architecture
Authentication data entries"
3. click the "new" button
4. In the alias field, enter a value you would like to use: i.e. maximo2
5. enter the username and password used to connect to the database: i.e. maximo/maximo

6. Enter a Description that identifies this entry


7. Click apply
8. Save and synchronize with other nodes
9. Navigate back to your data source called oraclexads2
10. In the dropdown field for "Component managed authentication alias", select your data alias (i.e.
maximo2)
11. Click apply and save and synchronize with other nodes
12. Navigate to your data source again and click the test button at the top of the screen to test your data
source
Once the test has succeeded, you can proceed to the next section
Creating JMS resources for use in a clustered environment
Creating the JMS buses:
1.
2.
3.
4.
5.
6.

Log in to the WebSphere console and navigate in the left pane to Integration/buses
Click the "new" button to create a new bus
In the name field, enter "meajmsbus"
Deselect the "secure" checkbox
Change the "high message threshold" to 500,000 messages
Click "apply"

7. Navigate again in the left pane to Integration/buses


8. Click the "new" button to create a second new bus
9. In the name field, enter "uijmsbus"
10. Deselect the "secure" checkbox
11. Change the "high message threshold" to 500,000 messages
12. Click "apply"
Adding members to the bus:
1.
2.
3.
4.
5.
6.

Navigate in the left pane to Integration/buses


Select the first bus created above called meajmsbus
Under "additional properties", select "bus members"
Click the "Add" button
Add the MAXIMOMEA server as a bus member by selecting that under the server section
In the data source JNDI name field, enter:

jdbc/oraclexads
7. click Next
8. click finish
9. Navigate in the left pane to Integration/buses
10. Select the second bus created above called uijmsbus
11. Add the MAXIMOCLUSTER by selecting that under the cluster section
12. In the data source JNDI name field, enter:
jdbc/oraclexads2
13. Save and synchronize with other nodes.
Setting the data store schema and authentication alias
1. Select the bus member (MEA instance) of your meajmsbus bus
2. from the list of message engines, select your message engine

3. Under "additional properties" click "data store"


4. In the data source JNDI name field, enter
jdbc/oraclexads
5. In the schema name field, enter your maximo schema name (i.e. maximo)
6. In the authentication alias dropdown, select the alias created for the data source above
7. click OK
8. Navigate back to your list of buses and select the uijmsbus
9. Select the bus member (Cluster) of your uijmsbus bus
9. From the list of message engines, select your message engine
10. Under "additional properties" click "data store"
11. In the data source JNDI name field, enter
jdbc/oraclexads2
12. In the schema name field, enter your second schema created above by your DBA (i.e. maximo2)
13. In the authentication alias dropdown, select the second alias created for this data source above
14. Click OK
15. Save and synchronize with other nodes
Creating bus destinations
1. Log in to the WebSphere console and navigate to Service Integration/buses
2. Select your bus meajmsbus
3. Under "Additional properties" click "destinations"
4. click the "new" button
5. Set the destination type as "queue" and click next
6. In the identifier field, enter "cqinbdcls"
7. Assign the queue in the next screen to the MAXIMOMEA application server
8. Click next
9. Click finish
10. Repeat the steps above to create the sqinbdcls destination and assigning it to the MAXIMOMEA
application server
11.
12.
13.
14.
15.
16.
17.
18.
19.

Navigate in the WebSphere console to Service Integration/buses


Select your bus uijmsbus
Under "Additional properties" click "destinations"
Click the "new" button
Set the destination type as "queue" and click next
In the identifier field, enter "sqoutbdcls"
Assign the queue in the next screen to the UI Cluster
Click next
Click finish

20. Navigate in the WebSphere console to each destination created above on both buses
21. For each destination above, set the "exception destination" to "none", then click Apply
22. Save and synchronize with other nodes
Creating the MEA connection factories
1.
2.
3.
4.
5.
6.
7.

Log in to the WebSphere console


Navigate in the left pane to Resources/JMS providers/default messaging
Set the scope to the cell and click apply, making sure node, cluster, and server fields are empty
Under "connection factories", select "JMS queue connection factory"
Click the "new" button
In the name field, enter "meaconfact"
In the JNDI name field, enter

jms/mro/int/qcf/intqcfmea
8. Select the bus meajmsbus from the dropdown
9. Click "apply" and save and synchronize with other nodes
10.
11.
12.
13.

Under "connection factories, select "JMS queue connection factory"


Click the "new" button
In the name field, enter "uiconfact"
In the JNDI name field, enter

jms/mro/int/qcf/intqcfui
14. Select the bus uijmsbus from the dropdown
15. Click "apply" and save and synchronize with other nodes
Creating JMS queues
Continuous inbound queue:
1. Log in to the WebSphere console and navigate to Resources/JMS providers/default messaging
2. Ensure that the scope is set to the Cell, and Under "destinations", click "jms queue"
3. Click the "new" button
4. Enter the name as "cqincls"
5. In the JNDI name field, enter "jms/mro/int/queues/cqincls
6. Select the meajmsbus as the bus for this queue
7. In the queue name field, enter the destination name for this as "cqinbdcls"
8. Click "OK"
Sequential inbound queue:
1.
2.
3.
4.
5.
6.
7.
8.

Log in to the WebSphere console and navigate to Resources/JMS providers/default messaging


Under "destinations", click "jms queue"
Click the "new" button
Enter the name as "sqincls"
In the JNDI name field, enter "jms/mro/int/queues/sqincls
Select the meajmsbus as the bus for this queue
In the queue name field, enter the destination name for this as "sqinbdcls"
Click "OK"

Sequential outbound queue:


1.
2.
3.
4.
5.
6.
7.
8.
9.

Log in to the WebSphere console and navigate to Resources/JMS providers/default messaging


Under "destinations", click "jms queue"
Click the "new" button
Enter the name as "sqoutcls"
In the JNDI name field, enter "jms/mro/int/queues/sqoutcls
Select the uijmsbus as the bus for this queue
In the queue name field, enter the destination name for this as "sqoutbdcls"
Click "OK"
Save and synchronize with other nodes

Creating the JMS Activation Specification


1.
2.
3.
4.
5.
6.
7.

Log in to the WebSphere console and navigate to Resources/JMS providers/default messaging


Ensure that the scope is set to the Cell
Under additional properties, click "jms activation specification"
Click the "new" button
In the name field, enter "meajmsactcls"
In the JNDI name field, enter "meajmsactcls"
In the "Destination JNDI name" field, enter "jms/mro/int/queues/cqincls"

8. Make sure the destination type is "queue"


9. Select your bus "meajmsbus" as the bus for this specification
10. Set Maximum batch size to 10
11. Set Maximo end points to 5
12. Click OK and save and synchronize with other nodes
13. Stop and Restart all IBM services
Preparing the MEA application
For the MAXIMOMEA application instance, edit the following files and uncomment the meajmsejb.jar:
1. locate the file under maximo/applications/maximo/META-INF/application.xml
2. Open the file using a text editor and uncomment the following (they may already be in the state below):
Make sure the following looks like this:
<!-- JMS MDB is not deployed by default -->
<module>
<ejb>/meajmsejb/ejbmodule</ejb>
</module>
3. locate the file under maximo/applications/maximo/META-INF/deployment-application.xml
4. Open the file using a text editor and uncomment the following (they may already be in the state below):
<!-- JMS MDB is not deployed by default -->
<module id="EjbModule_1077124925237">
<ejb>meajmsejb.jar</ejb>
</module>
5. The activation specification JNDI name is not the default (i.e. meajmsact) so you will need to edit the
following file, and change the value as below to your new JNDI name:
maximo/applications/maximo/meajmsejb/ejbmodule/META-INF/ibm-ejb-jar-bnd.xmi
6. Locate the following line:
<ejbBindings xmi:type="com.ibm.ejs.models.base.bindings.ejbbnd:MessageDrivenBeanBinding"
xmi:id="MessageDrivenBeanBinding_1" activationSpecJndiName="meajmsact">
7. change the name of the activation specification name at the end of the line to reflect the name of the
specification created above
activationSpecJndiName="meajmsactcls"
8. Edit the maximo.properties file and set mxe.name to a unique value such as MXServerMEA and save
9. 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.
10. Build the maximo.ear

11. Deploy the maximo.ear to the MEA application server MAXIMOMEA (refer to the system administrator's
guide for deployment information)
NOTE: During the deploy you will be asked for the application name, and the field will default with the value
"MAXIMO". You must change this for the MEA instance so that the UI instances can use MAXIMO as the
application name. Enter the application name as MAXIMOMEA.
12. Restart the application server and start the Maximo application
Changes required in Maximo
1. Launch the Maximo application and log in:
http://host:port/maximo
2. Navigate to configuration/cron task setup
3. Bring up the JMSQSEQCONSUMER crontask
4. For the SEQQIN instance, change the queue name to match your inbound sequential queue name:
jms/mro/int/queues/sqincls
5. For the SEQQOUT instance, change the queue name to match your outbound sequential queue name:
jms/mro/int/queues/sqoutcls
6. Save your changes.
7. Next, navigate to the Integration/External Systems application
8. Select any external system and then from the action menu, select add/modify queues
9. Create your three new queues with the following values:
Continuous inbound queue:
Queue JNDI name: jms/mro/int/queues/cqincls
Queue Connection Factory: jms/mro/int/qcf/intqcfmea
Sequential: NO
Inbound: Yes
Maximum Try count: 0
Sequential inbound queue:
Queue JNDI name: jms/mro/int/queues/sqincls
Queue Connection Factory: jms/mro/int/qcf/intqcfmea
Sequential: Yes
Inbound: Yes
Maximum Try count: 0
Sequential outbound queue:
Queue JNDI name: jms/mro/int/queues/sqoutcls
Queue Connection Factory: jms/mro/int/qcf/intqcfui
Sequential: Yes
Inbound: NO
Maximum Try count: 0
10. You will then need to bring up each external system and change the queue names associated with each
system in the top right side of the screen to match those created above.
11. Save your changes.

Prepare the UI application and deploy


For the UI instances, edit the following files and comment out the meajmsejb.jar:
1. locate the file under maximo/applications/maximo/META-INF/application.xml
2. Open the file using a text editor and comment out the following:
Make sure the following looks like this:
<!-- JMS MDB is not deployed by default
<module>
<ejb>/meajmsejb/ejbmodule</ejb>
</module>
-->
3. locate the file under maximo/applications/maximo/META-INF/deployment-application.xml
4. 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>
-->
5. Edit the maximo.properties file and set mxe.name to a unique value such as MXServerUI and save
6. Uncomment the line mxe.crontask.donotrun if it is commented out
Edit the line so that no crontasks except for the JMSQSEQCONSUMER.SEQQOUT crontask will run on this
server:
e.g.
mxe.crontask.donotrun=JMSQSEQCONSUMER.SEQQIN,IFACETABLECONSUMER.IFACEIN,BBcron.BBCRON1,..
....
Since we want all crontasks to run in the MEA instance, all crontasks will be listed here except for the
JMSQSEQCONSUMER.SEQQOUT. This crontask will need to run in the cluster.
Crontasks a cluster aware as long as they are specified where to run using the maximo.properties. If using
the Target Enable feature to force the MEA crontasks to run in specific servers, they are not cluster aware
and no failover will occur if the server running a specific MEA crontask fails.
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.properties, each separated by a comma.
7. Build the maximo.ear file
Deploying the maximo.ear to the cluster
Now that you have created and configured the MAXIMOCLUSTER, you must deploy your enterprise
applications within the cluster
1. In the navigation pane, click Applications > Install New Applications
2. Select the appropriate option and navigate to where the EAR files reside
3. Select maximo.ear, then click Open in the dialog box
4. In the "Preparing for the application installation screen" select the following:

Generate default bindings


Do not specify unique prefix for beans
Do not override existing bindings
Use default virtual host name for Web modules, and enter
MAXIMOCLUSTER_host.
5. In the Install New Application window, accept the default settings and click Next
6. In Step 2, "Map modules to servers," you map Web modules to the MAXIMOCLUSTER cluster. Complete
the following actions:
a) From the Clusters and Servers box, select the MAXIMOCLUSTER cluster and webserver1.
b) Check all module boxes and click Apply
7. In Steps 3, 4, and 5, accept the defaults and click Next.
8. In Step 6, complete the following actions:
a) Select all items from the Web module column.
b) For each Web module, select MAXIMOCLUSTER_host from the Virtual host list and click Next
9. In Steps 7 and 8, accept the defaults and click Next
10. In the final step, review your settings then click Finish
The deployment process takes several minutes to complete.
11. In the confirmation page, when you see the message "Application Maximo installed successfully",
perform the following actions:
a) Click Save to Master Configuration
b) Save Synchronize changes with Nodes
Start the MAXIMOCLUSTER Cluster
1. In the navigation pane, click Servers > Clusters
2. Select MAXIMOCLUSTER, then click Ripplestart
3. To access the cluster, open HTTP://<node name>:<port>/maximo where <port> is the port number of
the IBM HTTP server (80)
Deploying 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.

Notes:

http://www.redbooks.ibm.com/redbooks/pdfs/sg247645.pdf
Maximo Asset Management 7.1 Implementer Guide
Maximo Asset Management 7.1 Deployment Guide

Tivoli Service Request Manager 7.1 Implementation


Tivoli Asset Management for IT 7.1
Integration Guide : Tivoli Service Request Manager
Implementing IBM Tivoli Service Request Manager V7.1 Service Catalog

Você também pode gostar