Skip to Main Content

Java EE (Java Enterprise Edition) General Discussion

Announcement

For appeals, questions and feedback about Oracle Forums, please email oracle-forums-moderators_us@oracle.com. Technical questions should be asked in the appropriate category. Thank you!

Object from log4j is a String, should be pojo!

843830Jul 11 2005
Can anyone work out what I�m doing wrong?

I�ve written an appender that extends JMS appender, and also a MDB to process the messages.

The logging message is a simple data container class called MonitorMessage.

However, the data object does not seem to be (de)serializing properly and is arriving in the MDB as a String. The Data class does implement serializable!

The junit test looks like this:
---
public void testSimpleMonAppender() {
MonitorMessage msg = new MonitorMessage( new Integer( 1 ) );
LOG.info( msg );
}

---
The relevant code in the MDB is:
---
public void onMessage( Message msg ) {
LOGGER.debug( "Got a monitoring message!" );
ObjectMessage om;
LoggingEvent event;
MonitorMessage message;

if( msg instanceof ObjectMessage ) {
om = (ObjectMessage)msg;
try {
// Get the logging event from the message
event = (LoggingEvent)om.getObject();
// Check the message type
LOGGER.debug("The message is an instance of " + event.getMessage().getClass());
LOGGER.debug("At level " + event.getLevel().toString());
if(event.getMessage() instanceof MonitorMessage) {
message = (MonitorMessage)event.getMessage();
LOGGER.debug("The id is " + message.getMessageIdentifier());
}
else if(event.getMessage() instanceof java.lang.String) {
LOGGER.debug("The string is " + event.getMessage());
}

else {
LOGGER.debug(event.getMessage().toString());
}
}
catch( javax.jms.JMSException ex ) {
LOGGER.error( "JMS exception when getting the logging event : ", ex );
}
}
else {
try {
LOGGER.warn( "Warning - the message type is " + msg.getJMSType() + ", the expected type was ObjectMessage" );
}
catch( javax.jms.JMSException ex ) {
LOGGER.error( "JMS exception when getting the JMS message type: ", ex );
}
}
LOGGER.debug( "Processed monitoring message!" );
}
}
---
The log4J debug from the MDB looks like this:
---
) - Processed monitoring message!

2005-07-06 11:34:57,268 [ExecuteThread: '13' for queue: 'weblogic.kernel.Default'] DEBUG (MonitorSubscriberBean.java:65)

- Got a monitoring message!

2005-07-06 11:34:57,270 [ExecuteThread: '13' for queue: 'weblogic.kernel.Default'] DEBUG (MonitorSubscriberBean.java:77)

- The message is an instance of class java.lang.String

2005-07-06 11:34:57,271 [ExecuteThread: '13' for queue: 'weblogic.kernel.Default'] DEBUG (MonitorSubscriberBean.java:78)

- At level INFO

2005-07-06 11:34:57,271 [ExecuteThread: '13' for queue: 'weblogic.kernel.Default'] DEBUG (MonitorSubscriberBean.java:84)

- The string is [ messageIdentifier = 1

2005-07-06 11:34:57,272 [ExecuteThread: '13' for queue: 'weblogic.kernel.Default'] DEBUG (MonitorSubscriberBean.java:104

) - Processed monitoring message!

---

What am I doing wrong?!

Tia,

Caroline.
Comments
Locked Post
New comments cannot be posted to this locked post.
Post Details
Locked on Aug 8 2005
Added on Jul 11 2005
0 comments
273 views