2

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]...

私が間違っていることは何ですか?ありがとう!

4

0 に答える 0