AH! I have a fix... The problem with the BINARYSTREAM_BLOB was that the ObjectOutputStream was not being flushed before the read from the ByteArrayOutputStream... Just do an oos.flush() after the writeMessage function call... Of course you cross one wall you will hit another, now the messages are not being deleted from the database and there is an XAException on SpyXAResource.commit()... Darn!!!