+

Search Tips   |   Advanced Search

Java Management Extensions interoperability


Starting with V6.0, WAS implements Java Management Extensions (JMX) V1.2, while WAS V5 implements JMX V1.0.

Differences between V5 and V6.0 and later

WAS ND v7.0 supports communication with earlier levels of the server through the SOAP connector. The earlier levels of the server cannot be more than two releases earlier. V6 and later of WAS cannot communicate with servers on V5 through an RMI connector.

Due to the evolution of the JMX specification, the serialization format for JMX objects, such as the javax.management.ObjectName object, differs between the V5 implementation and the V6.0 and later implementation. The V6.0 and later JMX run time is enhanced to be aware of the version of the client with which it is communicating. The V6.0 and later run time makes appropriate transformations on these incompatible serialized formats to support communication between the different version run times.

A V5 wsadmin script or a V5 admin client can call a V6.0 and later dmgr, node, or server. A V6.0 and later wsadmin script or a V6.0 and later admin client can call a V5 node or server.

When a V5 wsadmin script or a V5 admin client calls a V6.0 and later MBean, the instances of classes that are new in V6.0 and later cannot be passed back to V5 because these classes are not present in the V5 environment. The problem occurs infrequently. However, it usually occurs when an exception embeds a nested exception that is new starting with V6.0. The symptom is usually a serialization exception or a NoClassDefFoundException exception.

Due to changes in the JMX implementation from V5 to V6.0, different exceptions are created when a method on an MBean is invoked for V5 than when a method on an MBean is invoked for V6.0 and later . For example, when a method gets or sets an unknown attribute for V5, the MBeanRuntimeException exception is created. When a method gets or sets an unknown attribute for V6.0 and later, the MBeanException exception that wraps a ServiceNotFoundException exception is created.

An instance of a user-defined class that implements the Serializable interface that is passed as a parameter or return value during MBean invocation, or sent as part of a notification, cannot contain a non-transient instance variable that is in the javax.management.package package. If the instance does, it cannot be properly deserialized when passed between V5 and V6.0 or later run times.

Due to changes in the supported format for the ObjectName class from V5 to V6.0 and later, the configuration ID in starting with V6.0 and later contains a vertical bar (|), whereas in V5, the ID contains a colon (:). This change is reflected in the output for wsadmin clients. For example, for a V5 client, the output is:

wsadmin> $AdminConfig list Cell DefaultCellNetwork(cells/DefaultCellNetwork:cell.xml#Cell_1)
whereas for a V6.0 and later client, the output is:

wsadmin> $AdminConfig list Cell DefaultCellNetwork(cells/DefaultCellNetwork|cell.xml#Cell_1)
The change to the configuration ID generally is not a problem because configuration IDs are generated dynamically. When a V5 client passes a configuration ID that contains a colon, the JMX run time, for upward compatibility, automatically transforms the configuration ID that contains a colon into a configuration ID that contains a vertical bar. Similarly, a reverse transformation is performed for backward compatibility.

Do not save the configuration ID and then try to use it later. Only query the ID and use it.

 

Differences between V6.0.x, and V6.1 and later

WAS ND v7.0 supports communication with earlier levels of the server through the SOAP connector. The earlier levels of the server cannot be more than two releases earlier. V6 and later servers can communicate with each other through an RMI connector, with one restriction. The javax.management.MBeanInfo class and its subclasses do not iteroperate between V6.1.02 and version 6.0.2. You will receive a java.lang.IllegalArgumentException exception when attempting to send any instance of these classes between a V6.1 and V6.0.2. This restriction affects clients that perform the following operations.

A serialization format mismatch exists between the JMX implementation in V6.1 and later and V6.0.x releases. When a V6.0.x wsadmin script or a V6.0.x admin client tries to retrieve the ModelMBeanInfo interface of a V6.1 and later MBean, the expected field names are not found in the deserialized object because of the case difference between the versions. For example, the following wsadmin function does not work when a V6.0.x wsadmin script connects to a V6.1 and later server:

$Help attributes MBeanObjectName
$Help operations MBeanObjectName
$Help all MBeanObjectName

...where MBeanObjectName is a string representation of a V6.1 and later MBean Object. To avoid this problem, set the jmx.serial.form JVM custom property on the JVM custom properties page in the admin console. Create the custom property by specifying the name value-pair on the V6.1 and later Application Server that we are connecting to from a V6.0.x client. The field names are forced to lower case to be compatible with what the V6.0.x client expects. The lower case field names contradict the JMX spec and compromise interoperability with future versions. Therefore, the recommendation is set this property only when it is absolutely needed in a mixed version environment.

Property name jmx.serial.form
Data type string
Value 1.2.0 or 1.2.1

To access the JVM custom properties page, click:

Servers | Server Types | WebSphere application servers | server1 | Server Infrastructure | Java and process management | Process Definition | Java virtual machine | Custom properties




 

Related tasks


Use admin programs (JMX)