본문 바로가기

IT for developer/Netty

Netty 예제 분석 - ObjectEcho


 ObjectEcho

이번 예제의 특징은 자바 객체를 송수신하다는 점이다.


우선 클라이언트 프로그램을 살펴보자.
67          bootstrap.setPipelineFactory(new ChannelPipelineFactory() {
68              public ChannelPipeline getPipeline() throws Exception {
69                  return Channels.pipeline(
70                          new ObjectEncoder(),
71                          new ObjectDecoder(),
72                          new ObjectEchoClientHandler(firstMessageSize));
73              }
74          });


ChannelBuffer<--> String 변환을 하는 StringEncoder와 StringDecoder가 아니라 ObjectEncoder 와 ObjectDecoder를 사용한 것을 볼 수 있다. 이는 ChannelBuffer<-->자바객체 변환을 수행한다. (객체 Serialization, Deserialization 수행)

예제 패턴으로 봤을 때 메세지를 처리하는 실제 핸들러 (이 예제서는 ObjectEchoClientHandler) 전에 데이터를 인코딩 또는 디코딩하는 핸들러가 등록되어 있음을 볼수 있다. 추후에 자신만의 인코딩/디코딩방법으로 통신하고자할 때 디코더, 인코더를 직접 구현해서 등록하면 될 듯하다.


나머지는 Echo 예제와 동일하다.