簡體   English   中英

如何配置列表 <?> 輸入hazelcast-client.xml以進行自定義字節數組序列化

[英]How to configure List<?> type in hazelcast-client.xml for custom Byte array serialization

我使用ByteArraySerializer創建了一個自定義序列化類,如下所示。

public class ProgramListSerializer implements ByteArraySerializer<List<Program>> {
public static final TypeReference<List<Program>> LIST_PROGRAM_TYPE = new TypeReference<List<Program>>() {};

private ObjectMapper mapper = new ObjectMapper(new SmileFactory());

public ProgramListSerializer() {
}

public int getTypeId() {
    return 1001;
}

public byte[] write(List<Program> object) throws IOException {
    return this.mapper.writeValueAsBytes(object);
}

public List<Program> read(byte[] buffer) throws IOException {
    return this.mapper.readValue(buffer, LIST_PROGRAM_TYPE);
}

public void destroy() {
}}

現在我需要在hazelcast-client.xml中配置它,我嘗試定義如下。

<serialization>
<serializers>
  <serializer class-name="com.XXX.serializer.ProgramListSerailizer" type-class="java.util.List&lt;com.xxx.Program&gt;"/>
</serializers>

Hazelcast無法識別該班級。 引起原因:com.hazelcast.nio.serialization.HazelcastSerializationException:java.lang.ClassNotFoundException:java.util.List

有什么辦法可以在hazelcast-client.xml中為具有泛型的collection(List,Set)定義類型類?

在不測試定義是否可以正確加載的情況下,可以通過正確轉義“ <”和“>”字符來修正定義:

“ <” =“ <”“>” =“>”

因此:

型級= “java.util.List的<com.xxx.Program>”

抱歉,轉義字符正確呈現,應該是

"&lt;" = "<"
"&gt;" = ">"

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM