+

Search Tips   |   Advanced Search

 

Java Management Extensions interoperability

 

Start with V6, WAS implements JMX V1.2, while WebSphere Application Server V5 implements JMX V1.0.

Differences between V5 and V6

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 and later implementation. The V6 and later JMX run time is enhanced to be aware of the version of the client with which it is communicating. The V6 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 administrative client can call a V6 and later deployment manager, node, or server. A V6 and later wsadmin script or a V6 and later administrative client can call a V5 node or server.

When a V5 wsadmin script or a V5 administrative client calls a V6 and later MBean, the instances of classes that are new in V6 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. The symptom is usually a serialization exception or a NoClassDefFoundException exception.

Due to changes in the JMX implementation from V5 to V6, 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 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 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 or later run times. Due to changes in the supported format for the ObjectName class from V5 to V6, the configuration ID in starting with V6 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 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.1 and Version 6.0.x

A serialization format mismatch exists between the JMX implementation in V6.1 and V6.0.x releases. When a V6.0.x wsadmin script or a V6.0.x administrative client tries to retrieve the ModelMBeanInfo interface of a V6.1 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 server:

$Help attributes MBeanObjectName
$Help operations MBeanObjectName
$Help all MBeanObjectName
where MBeanObjectName is a string representation of a V6.1 MBean Object. To avoid this problem, set the jmx.serial.form JVM custom property on the JVM custom properties page in the console. Create the custom property by specifying the name value-pair on the V6.1 Application Server that you 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 specification and compromise interoperability with future versions. Therefore, the recommendation is that you 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 > Application Servers > server1. . Then, under Server Infrastructure, click Java and Process Management > Process Definition > Java Virtual Machine > Custom Properties


 

Related tasks


Use administrative programs (JMX)