Netty 3.9를 사용 중입니다. 나는 http://en.wikipedia.org/wiki/Netty_%28software%29#Netty_TCP_Example에서 얻은 간단한 클라이언트 서버 설정을 가지고있다. Java 검색 계획 객체를 클라이언트에서 서버로 보내기위한 예제를 확장했습니다.Netty 인코딩/디코딩 Java 오브젝트
검색 계획 객체는 직렬화 및 비 직렬화 메소드가있는 타사 객체입니다. 직렬화는 객체를 byte [] 배열에 씁니다. 내 클라이언트 파이프 라인 팩터리는 다음과 같습니다.
this.bootstrap.setPipelineFactory(new ChannelPipelineFactory() {
@Override
public ChannelPipeline getPipeline() throws Exception {
return Channels.pipeline(
new StringDecoder(CharsetUtil.UTF_8),
new StringEncoder(CharsetUtil.UTF_8),
new DelimiterBasedFrameDecoder(
ALLOWED_CHARACTER_BUFFER_SIZE, Delimiters
.lineDelimiter()),
/* We also add our Clients own ChannelHandler. */
new ClientChannelHandler());
}
});
StringDecoder 및 StringEncoder가 올바르지 않다고 생각합니다. 내가 볼 수없는 일종의 ByteEncoder/Decoder가 필요하다고 생각합니다. 이것들을 써야합니까? 나는 아무리 내가 실패 객체를 "직렬화"할 일을 클라이언트
byte[] byteVersion = searchPlanRepo.serialize(missionNum); // serialize the search plan
searchPlanStr = new String(byteVersion, StandardCharsets.UTF_8);
에 있지만 서버에 문자열로 변환하지 않습니다이 코드를 시도했다.
"java.lang.ClassCastException가 : java.lang.String의이 payload.mission.SearchPlanType 캐스트 할 수없는"
내 질문 :
- 내가이 필요하십니까 나는 계속해서 오류 메시지가 사용자 정의 바이트 인코더/디코더? 어떤 예가 있습니까?
- 직렬화가 단순 해 보인다 : 바이트 배열에서 문자열이지만 문자열에서 바이트 배열로의 직렬화가 작동하지 않습니다. 나는 뭔가를 놓치고 있다고 확신한다. 누구든지 올바른 방향으로 나를 가리킬 수 있습니까?
시간을내어 읽어 주셔서 감사합니다. :)
필
당신은 직렬화 코덱을보고있을 수 있습니다