wiki の例を使用して POJO をシリアル化しようとしていますが、「プロトコル メッセージに無効なタグ (ゼロ) が含まれています」というメッセージが表示されます。POJO を byte[] に変換し、メッセージ ブローカーに送信し、取得して逆シリアル化する必要があります。これをテストするための単体テストがあり、動作しているように見えますが、ブローカーを介して渡すと壊れます。これは私のコードです:
private final Schema<MyObject> schema = RuntimeSchema.getSchema(MyObject.class);
private final LinkedBuffer buffer = LinkedBuffer.allocate(LinkedBuffer.DEFAULT_BUFFER_SIZE);
//Serialization
byte[] result = ProtostuffIOUtil.toByteArray(myObject, schema, buffer);
// Send result to message broker
// Receive result from message broker
//Deserialization
MyObject myObject = schema.newInstance();
ProtostuffIOUtil.mergeFrom(b, myObject, schema); <--- Exception thrown
スタック トレースは次のとおりです。
Caused by: java.lang.RuntimeException: Reading from a byte array threw an IOException (should never happen).
at com.dyuproject.protostuff.IOUtil.mergeFrom(IOUtil.java:53) ~[protostuff-core-1.0.7.jar:1.0.7]
at com.dyuproject.protostuff.ProtostuffIOUtil.mergeFrom(ProtostuffIOUtil.java:96) ~[protostuff-core-1.0.7.jar:1.0.7]
... 19 more
Caused by: com.dyuproject.protostuff.ProtobufException: Protocol message contained an invalid tag (zero).
at com.dyuproject.protostuff.ProtobufException.invalidTag(ProtobufException.java:98) ~[protostuff-core-1.0.7.jar:1.0.7]
at com.dyuproject.protostuff.ByteArrayInput.readFieldNumber(ByteArrayInput.java:220) ~[protostuff-core-1.0.7.jar:1.0.7]
at com.dyuproject.protostuff.runtime.MappedSchema.mergeFrom(MappedSchema.java:179) ~[protostuff-runtime-1.0.7.jar:1.0.7]
at com.dyuproject.protostuff.IOUtil.mergeFrom(IOUtil.java:43) ~[protostuff-core-1.0.7.jar:1.0.7]
at com.dyuproject.protostuff.ProtostuffIOUtil.mergeFrom(ProtostuffIOUtil.java:96) ~[protostuff-core-1.0.7.jar:1.0.7]...
私が間違っていることは何ですか?ありがとう!