Disable WebSphere MQ functionality in WebSphere Application Server
If we do not need to use WebSphere MQ functionality in an application server we can disable it by using either the console or an administrative command. We can also disable WebSphere MQ functionality in a client process by specifying a custom property.
When a WAS process or an application client process starts, and while this process is running, an amount of processing is performed to allow it to support WebSphere MQ-related functionality such as the WebSphere MQ messaging provider. By default this processing is performed regardless of whether any WebSphere MQ-related functionality is ever used. If we do not need to take advantage of any WebSphere MQ functionality, it is possible to disable all WebSphere MQ functionality in an application server or client process to give increased performance.
Disable WebSphere MQ functionality in a WAS process has the following effects:
- No WebSphere MQ messaging provider functionality is available on that particular server:
- Any defined WebSphere MQ messaging provider resources are not bound into JNDI, and so are unavailable to look up from inside the affected application server process, from other application server processes or application clients.
- It is still possible to define WebSphere MQ messaging provider resources. However the test connection button on either the create connection factory or create activation specification wizard, depending on the scope at which WebSphere MQ has been disabled, does not work.
- Any message driven beans that use message listener ports configured with WebSphere MQ messaging provider resources do not start.
- Any message driven beans that use WebSphere MQ messaging provider activation specifications do not start.
- It is not possible to recover any indoubt XA transactions involving WebSphere MQ messaging provider resources.
- Any attempt to look up a WebSphere MQ messaging provider resource from a remote server that does not have WebSphere MQ functionality disabled fails.
- It is not possible to use the WebSphere MQ queue connection properties function.
- No WebSphere MQ link functionality is available on that particular server:
- It is not possible to stop or start any WebSphere MQ links.
- It is not possible to stop or start any WebSphere MQ receiver channels.
- It is not possible to stop, start, or reset any WebSphere MQ sender channels.
- It is not possible to send messages to a WebSphere MQ queue manager. Any messages sent to a foreign bus based on a WebSphere MQ link remain on the transmission item stream for that WebSphere MQ link.
- It is not possible to receive messages from a WebSphere MQ queue manager.
- The inbound channel chains used by the WebSphere MQ link do not start.
- It is not possible to resolve indoubt sender channels.
- Attempts to use the Test connection functionality of the foreign bus connection that uses the WebSphere MQ link fail.
- It is not possible to fully delete a WebSphere MQ link, as any stored state about indoubt messages cannot be processed.
- No WebSphere MQ server functionality is available on that particular server:
- It is not possible to send messages to WebSphere MQ.
- It is not possible to receive messages from WebSphere MQ.
- The Test connection button does not work.
- No WebSphere MQ client link functionality works:
- It is not possible to stop or start any WebSphere MQ client links.
- It is not possible to send messages using a WebSphere MQ client link.
- It is not possible to receive messages using a WebSphere MQ client link.
- The inbound channel chains used by the WebSphere MQ link do not start.
- WebSphere MQ resource adapters do not start.
- WebSphere MQ Base Java functionality is unavailable.
- Any attempt to use any classes provided by WebSphere MQ fails.
Disable WebSphere MQ functionality in a WAS client process has the following effects:
- Any attempt to look up a WebSphere MQ messaging provider resource from a remote server that does not have WebSphere MQ functionality disabled fails.
- WebSphere MQ Base Java functionality is not available.
- Any attempt to make use of any classes provided by WebSphere MQ fails.
- To disable WebSphere MQ functionality in a WAS process, complete one of the following steps:
- Use the console, select the Disable WebSphere MQ check box on the required WebSphere MQ messaging provider panel.
- Use the manageWMQ administrative command with the disableWMQ flag.
In a single server environment, we can only disable WebSphere MQ at the server scope. When we have saved the changes and restarted the application server, all WebSphere MQ functionality is disabled on that server.
In a network deployment environment, we can disable WebSphere MQ at all scopes in order to give fine grained configuration flexibility:
- At the cell scope, all WebSphere MQ functionality is disabled on all application servers in the cell.
- At the node scope, all WebSphere MQ functionality is disabled on all application servers that are part of that node.
- At the cluster scope, all WebSphere MQ functionality is disabled on all application servers in that cluster.
- At the server scope, all WebSphere MQ functionality is disabled in that particular application server.
The value of the Disable WebSphere MQ check box at a higher scope takes precedence over the value at a lower scope. For example, if we do not select the check box at the server scope but do select it for a higher (for example, cell) scoped WebSphere MQ messaging provider, the value at the cell scope takes precedence and WebSphere MQ functionality is therefore disabled in all application servers in the cell, regardless of whether the check box is selected at the server scope. The changes take effect when we have saved them and restarted all affected processes in the cell.
- To disable WebSphere MQ functionality in a WAS client process, specify the custom property com.ibm.ejs.jms.disableWMQSupport=true.
Example
Consider the following example: A network deployment configuration with two nodes: node1 and node2. Node1 has two servers on it, server1 and server2. Node2 has a single server on it, server3. Server3 and server1 are part of a cluster, cluster1. The WebSphere MQ messaging provider panel at cluster1 scope has the WebSphere MQ disabled check box selected and the changes saved. When cluster1 has been restarted, all WebSphere MQ functionality is disabled on server3 and server1.
It is worth noting that it is possible to have WebSphere MQ functionality disabled on all processes in a network deployment configuration without all scopes having WebSphere MQ functionality disabled. Using the scenario in the previous example, if all nodes in the topology (deployment manager node, node1 and node2) have WebSphere MQ functionality disabled, then all the processes in the topology also have WebSphere MQ functionality disabled.
What to do next
When the server starts, it is possible to detect whether WebSphere MQ functionality has been disabled on that server because messages with the following IDs are output:
- WMSG2016I is output when the server starts if WebSphere MQ has been disabled.
- CWSIC3650I is output once for any configured WebSphere MQ links that are running on the server.
- CWSIC3713I is output once for any configured WebSphere MQ client links that are running on the server.
Related tasks
Manage messaging with the WebSphere MQ messaging provider Configure custom properties for the WebSphere MQ resource adapter
JMS provider settings
Related information:
WebSphere MQ servers [Collection] WebSphere MQ server [Settings] WebSphere MQ client links [Collection] Foreign bus connections [Collection] WebSphere MQ links [Collection]