Details
Description
It is impossible to use combination of HTTP transport with LevelDB as persistent store: when trying to send a persistent message the broker throws a NullPointerException (see attachment Exception).
This happens because HTTP transport uses XStream library for deserealization, which follows Java Serialization rules. As a result, transient field dataLocator is null after deserialization. Later, LevelDB invokes getDataLocator, and that's when NPE is thrown.
Proposed patch adds private method readResolve, which is invoked after deserialization, and which initializes dataLocator field.