Netty4에서 Handler 생성시 인스턴스가 2개 생성되는 이유를 알고 싶습니다.

122 views
Skip to first unread message

김창희

unread,
Oct 18, 2021, 4:42:34 AM10/18/21
to Netty Korean User Group
안녕하세요? 네티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]




읽어주셔서 감사합니다.


hen Ann

unread,
Oct 24, 2021, 7:58:50 PM10/24/21
to nett...@googlegroups.com
Browser엣 request 하신다면, 실제로 request가 2번 발생하는지 확인해보세요.
pre-flight request라든가 favicon request가 발생하는 것은 아닐까요?

2021년 10월 18일 (월) 오후 5:42, 김창희 <echo...@gmail.com>님이 작성:
--
이 메일은 Google 그룹스 'Netty Korean User Group' 그룹에 가입한 분들에게 전송되는 메시지입니다.
이 그룹에서 탈퇴하고 더 이상 이메일을 받지 않으려면 netty-ko+u...@googlegroups.com에 이메일을 보내세요.
웹에서 이 토론을 보려면 https://groups.google.com/d/msgid/netty-ko/67b70add-9e6c-418e-a6b5-452701d36cffn%40googlegroups.com을(를) 방문하세요.

김창희

unread,
Oct 25, 2021, 8:13:20 PM10/25/21
to Netty Korean User Group
아 제가 우문이었는지도 모르겠네요.
감사합니다.
직접 콜을 해보면 결과가 확실하겠네요.
저녁에 테스팅후 결과 올려놔야겠네요

답변 감사드립니다.


2021년 10월 25일 월요일 오전 8시 58분 50초 UTC+9에 khn...@gmail.com님이 작성:
Reply all
Reply to author
Forward
0 new messages