MessageFormatException when receiving an ObjectMessage from the EMS server.

MessageFormatException when receiving an ObjectMessage from the EMS server.

book

Article ID: KB0085698

calendar_today

Updated On:

Products Versions
TIBCO Enterprise Message Service -
Not Applicable -

Description

Resolution:
Description:
= = = = = ==
The following MessageFormatException was thrown when receiving an ObjectMessage from the EMS server from an application running in IBM’s WebSphere 6.1:

javax.jms.MessageFormatException: Deserialization failed: com.citigroup.gsu.edelivery.engine.commons.EngineServiceObject
at com.tibco.tibjms.TibjmsObjectMessage.getObject(TibjmsObjectMessage.java:240)

Environment
= = = = = ==
All Platforms
The EMS Java client application uses EMS 5.1.0 and higher Java client library: tibjms.jar.


Resolution
= = = = = =
Pre EMS 5.1 used the thread context class loader to instantiate from an object message.  However, this did not work under all circumstances, particularly when instantiating simple primitive types.  Also the thread context class loader mechanism did not work with some newer application servers such as Weblogic application server 10.3. The remedy was to use the default class loader. The change was made in the following change request: CR:1-95Y3CH.

1-95Y3CH
EMS 5.1
Fixed an error that could cause Java clients to receive a ClassNotFoundException when using Object messages. Deserializing an Object message when the object is a class instance that represents primitive types sometimes resulted in an exception.

For some application servers like WebSphere application server 6.1 and Weblogic application server prior to 10.3, the object message could not be correctly initialized using the default class loader. You can switch to the thread context class loader by specifying “com.tibco.tibjms.use_extended_objinpstrm” as a Java argument to the application server startup.

Example usage:

–Dcom.tibco.tibjms.use_extended_objinpstrm

Issue/Introduction

MessageFormatException when receiving an ObjectMessage from the EMS server.