안녕하세요? 네티4를 사용하여 사내 관리 서버를 만들어 사용하고 있는 개발자 입니다.
사용버전은 netty-all-4.0.33.Final 입니다.
이번에 EAM적용이 필요해서 기존 핸들러에 EAMInHandler를 삽입하여 개발하던중
문득 핸들러 인스턴스가 연결이 들어올때마다 새로 생성되는것으로 알고있는 기존 기억이 맞나 싶어서
생성문에 로그를 찍어보았습니다.
그런데 로그상으로는 클라이언트 요청이 들어올때마다 핸들러 인스턴스가 2개씩 생기더군요.
클라이언트 요청시에 핸들러 인스턴스가 생성되고 이벤트 처리 플로우에
해당 핸들러 인스턴스의 생명주기가 처리되는것은 이해하겠는데
인스턴스 자체는 왜 두개씩 생성이 되는지 궁금합니다.
-- 핸들러 등록 소스 일부 -
@Override
protected void initChannel(SocketChannel ch) throws Exception {
// TODO Auto-generated method stub
ch.pipeline()
.addLast("log", new LoggingHandler(ctx.logLevel()))
.addLast("encoder", new HttpResponseEncoder())
.addLast("decoder", new HttpRequestDecoder())
.addLast("aggregator", new HttpObjectAggregator(104857600))
.addLast("chunkedWriter", new ChunkedWriteHandler())
.addLast("1", new OptionsHandler(logId,true))
.addLast("10", new FacEAMHandler(logId))
.addLast("20", new HttpReqHandler(logId))
.addLast("40", new ExcuteHandler(logId,s_launcher));
}
-- 핸들러 생성부 일부 --
private int test;
public HttpReqHandler(String logId) {
this.logId = logId;
System.out.println("-------------------->>> ["+ ++test +"]["+this.getClass().getName()+"]["+this+"]");
}
-- 클라이언트 요청시마다 찍히는 로그 --
첫번째 요청
-------------------->>> [1][grigo.fac.handler.FacEAMHandler][grigo.fac.handler.FacEAMHandler@2049126b]
-------------------->>> [1][grigo.fac.handler.FacEAMHandler][grigo.fac.handler.FacEAMHandler@2e80f85a]
-------------------->>> [1][grigo.fac.handler.HttpReqHandler][grigo.fac.handler.HttpReqHandler@632203d6]
-------------------->>> [1][grigo.fac.handler.HttpReqHandler][grigo.fac.handler.HttpReqHandler@6bf57664]
-------------------->>> [1][grigo.fac.handler.ExcuteHandler][grigo.fac.handler.ExcuteHandler@47b2006d]
-------------------->>> [1][grigo.fac.handler.ExcuteHandler][grigo.fac.handler.ExcuteHandler@4428a374]
두번째 요청
-------------------->>> [1][grigo.fac.handler.FacEAMHandler][grigo.fac.handler.FacEAMHandler@381917e8]
-------------------->>> [1][grigo.fac.handler.HttpReqHandler][grigo.fac.handler.HttpReqHandler@3c268433]
-------------------->>> [1][grigo.fac.handler.ExcuteHandler][grigo.fac.handler.ExcuteHandler@79241dd3]
-------------------->>> [1][grigo.fac.handler.FacEAMHandler][grigo.fac.handler.FacEAMHandler@1135fa44]
-------------------->>> [1][grigo.fac.handler.HttpReqHandler][grigo.fac.handler.HttpReqHandler@150a6cba]
-------------------->>> [1][grigo.fac.handler.ExcuteHandler][grigo.fac.handler.ExcuteHandler@5008f07f]
읽어주셔서 감사합니다.