Offline message retrieval problem

I am using pubsub to send messages to a client. I haven’‘t logged on for days and hundreds of messages were in the JIVEOFFLINE table. WHen I connect, some of the messages come through. but many don’'t and their rows are left on JIVEOFFLINE. I see in the “error” log in the Wildfire logs console, the following entries:

2007.01.29 15:29:03 org.jivesoftware.wildfire.OfflineMessageStore.getMessages(OfflineMessageStore.ja va:190) Error retrieving offline messages of username: abc1234

org.dom4j.DocumentException: Error on line 76 of document : Character reference " " is an invalid XML character. Nested exception: Character reference " " is an invalid XML character.

at org.dom4j.io.SAXReader.read(SAXReader.java:482)

at org.dom4j.io.SAXReader.read(SAXReader.java:365)

at org.jivesoftware.wildfire.OfflineMessageStore.getMessages(OfflineMessageStore.j ava:168)

at org.jivesoftware.wildfire.handler.PresenceUpdateHandler.initSession(PresenceUpd ateHandler.java:212)

at org.jivesoftware.wildfire.handler.PresenceUpdateHandler.process(PresenceUpdateH andler.java:100)

at org.jivesoftware.wildfire.handler.PresenceUpdateHandler.process(PresenceUpdateH andler.java:153)

at org.jivesoftware.wildfire.PresenceRouter.handle(PresenceRouter.java:92)

etc.

What do you think the problem is?

Hey Chris,

Can you get the original text that was sent so we can reproduce the problem locally? Probably some character was included that when stored was converted to some “illegal” xml character. Anyway, I would like to get to the bottom of this problem and provide a user friendly treatment if at all possible.

Thanks,

– Gato

Thanks for your reply. I know there are some peculiar characters in the suspect message. I worked around the problem by editing the MESSAGE field in JIVEOFFLINE and removing the offending entity. Original message:

So I can work around the problem by avoiding placing � in the message. But a couple of things puzzle me. There are other, unprintable characters in the message, but they don’‘t seem to cause a problem. Also, if my client is available at the time the message is sent, no problem. The message gets delivered. It’'s only when the client is not available and a row in JIVEOFFLINE is written that the problem occurs. If I remove the � entities directly in JIVEOFFLINE, then make the client available, all the messages in JIVEOFFLINE for that client get delivered.

I noticed the entity doesn’‘t display unless you view the post in plain text. It’'s supposed to be: 

Message was edited by: cpfoley71

Message was edited by: cpfoley71