티스토리 뷰
현재 netty3.8.0_final을 사용 중에 있는데,
netty에서 Bootstrap 생성, 설정 한 후, connect() 를 하고 동기식으로 다음 로직을 실행할 때
원래는 외부에 connect()의 결과를 리턴 해 주기 위해 아래처럼 await 관련 메소드를 썼었는데, 이럴 경우, 하나의 프로그램에서 여러 netty클라이언트를 사용해서 처리할 경우, dead lock이 걸릴 수도 있다는 예외(?)를 netty가 친절(?)하게 알려 준다. ㅜㅜ;
예외 메세지는 요렇다.
java.lang.IllegalStateException: await*() in I/O thread causes a dead lock or sudden performance drop. Use addListener() instead or call await*() from a different thread.
어쩌구저쩌구...
반드시 동기식으로 진행되어야 하는 상황이 아니라면 아래처럼 리스너를 등록해서 netty가 던져주는 이벤트를 받아서 처리해 주도록 한다.
좀더 해 보니, connect() 뿐만 아니라 close() 와 bootstrap.releaseExternalResources() 도 임의로 호출하면 안되고 리스너를 통해서 호출이 되도록 해야 예외발생이 안 된다.~!!!
그리하야~ close() 와 관련된 리스너는 아래와 같이 했다.
정말 멀고도 험한 네트워킹의 길.. 정말 강호의 고수님들에게 경의를 표한다. :)
'About 개발~~' 카테고리의 다른 글
[HttpClient] 응답헤더에 넣어줄 content-length 구하기 (0) | 2014.01.06 |
---|---|
[참고] 2013년 모바일 트렌드 분석 및 2014년 전망 자료 (0) | 2013.12.30 |
[Redis] Jedis exist() 사용 관련 오류 (0) | 2013.12.16 |
[HttpClient] 아파치 HttpClient 에서 POST로 데이터 요청해 보기~ (0) | 2013.12.10 |
[Redis] redis, jedis 사용시 팁~ (0) | 2013.12.05 |
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
TAG
- netty
- 주저리주저리
- network
- spring
- 중도
- 오토캠핑
- 자바
- 스프링
- 스마트tv
- SVN
- myBatis
- JavaScript
- 주저리
- json
- 단상
- http
- QR코드
- 안드로이드
- 개화예술공원
- java
- db
- 톰캣
- 이클립스
- 중도캠핑장
- 발번역
- 개발
- 무제
- 캠핑
- MySQL
- socket
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
글 보관함