본문 바로가기
netty

netty spring start

by 키르시스 2021. 5. 17.
728x90


1. 항상 맨처음 메인에서 XML 들을 로딩한다.
--applicationContext = new ClassPathXmlApplicationContext("classpath*:spring/**/context-*.xml") 시작

2. XML의 가장 첫번쨰인 context-application 에서 .properties 파일 정보들을 로딩한다.

3. context-network 에서는 
3-1-1. 네티의 이벤트 루프 그룹을 설정해준다. <bean 생성 및 등록>
3-1-2. bootstrap에서 사용할 채널 옵션을 설정 해준다. <bean 생성 및 등록>
3-1-3. 채널 인바운드 아웃바운드 이벤트를 처리해주는 파이프라인 초기화 클래스를 등록한다. 
<bean 생성 및 등록>

3-1-4. 서버 부트 스트랩 팩토리에 위의 설정들을 등록 해준다.
<bean 생성 및 등록>

3-1-5. 서버 클래스(NettyTCPServer)를 bean등록
인자값으로 서버의 포트번호,
부트스트랩.
읽기 엔디안 방식.
쓰기 엔디안 방식.

3-2. 서버에서 동작의 병렬처리를 해줄 클래스 등록.
bean id="executorService" class="java.util.concurrent.Executors"
value="${launcher.threads}"
병렬처리의 최대 가능수는 context-application.xml에서 
로딩한 .properties 파일들에서 집어넣어줌.

3-2-1. context-network 에  bean id="launcher" 인 ExcutorServerLauncher 클래스를 등록
ExcutorServerLauncher 클래스가 동작할때 
필요한 인자값으로 executorService와 launchTasks로 두개가 정의되어있음.
executorService의 인자값은 위에서 등록한 Executors의 bean id와
launchTasks는 List<Callable<Object>> 이므로 서버의 bean id를 리스트에 추가해줌.

--applicationContext = new ClassPathXmlApplicationContext("classpath*:spring/**/context-*.xml") 끝

3-3-1. 스프링에서 InitializingBean을 인터페이스를 상속받은 클래스들에 한해서
afterPropertiesSet() 메소드를 스프링에서 호출을 한다.
InitializingBean은 스프링에서 사용되는 인터페이스 클래스이고
Bean등록시 마다 호출됨.
Bean을 등록하는 방법은 XML을 통해서도 가능하고 소스코드상에서도 가능함.
이 과정에서 서버에서 정보들을 DB에서 로딩하는 사전 동작을 수행 한다.

4. 메인 클래스에서 ExcutorServerLauncher 클래스의 Launch() 메소드 를 실행.
이때 이미 서버

5. netty.NettyTCPServer 는 Callable 인터페이스를 상속받은 클래스이므로 
네티 TCPServer의 call()메소드가 호출됨.

5-1. NettyTCPServer 에서는 부트스트랩팩토리에게(초기화가 된) 받은 부트스트랩을
bind() 메소드를 사용하여 해당 포트 번호에서 접속 대기를 함.

-------------------------------------------------------------------------

728x90

'netty' 카테고리의 다른 글

TCP/IP 통신 네티(netty)(1)  (0) 2021.05.24
JAVA pom.xml 오류 해결  (0) 2021.05.24
NETTY DECODER  (0) 2021.05.12
정보처리기사 시험 팁  (0) 2021.05.11
프로그래머 출장 전 + 출장 중 미세 팁  (0) 2021.05.10

댓글