문제

나는 읽었다 게시물 최근 Smack 포럼에

Java EE 서버에서 데몬 스레드를 시작하는 것은 크지 않습니다.

기본적으로 Smack의 XMPPConnection은 들어오는 데이터를 모니터링하기 위해 하나의 데몬 스레드를 시작하고 다른 하나는 각각/jabber 서버에서 나가는 데이터를 보냅니다. 이 시나리오에서 데몬 스레드를 사용하여 쓰기/읽기를 듣는 것이 합리적입니까?

도움이 되었습니까?

해결책

예, XMPPConnection은 두 개의 스레드를 만듭니다. 하나는 듣고/읽기를위한 하나와 하나는 쓰기를위한 것입니다. 그러나 이것들은 xmppconnection 인스턴스만큼 오래 살며 영원히 아니라고 생각합니다.

"Java EE 서버에서 데몬 스레드를 시작하는 것은 큰 일입니다."

Spec Compliant EJB를 작성하고 있습니까? 그렇다면, 이것은 적용됩니다. 사양은 그것을하지 않는다고 말합니다. EJB 2.1 사양 :

"엔터프라이즈 Bean은 스레드를 관리하려고 시도해서는 안됩니다. 엔터프라이즈 Bean은 스레드를 시작, 중지, 일시 중단 또는 재개하거나 스레드의 우선 순위 또는 이름을 변경하려고 시도해서는 안됩니다. 엔터프라이즈 Bean은 스레드 그룹을 관리하지 않아야합니다."

아니면 Tomcat에서 실행중인 WebApp입니까? 이 경우 근본적인 문제가 없습니다. 스레드가 없으면 Smack 클라이언트가 서버와 통신 할 수 없습니다.

다른 팁

나는 독립형 프로그램 인 클라이언트 연결에 Smack API를 사용했습니다. 먼저 J2EE 컨테이너 내부에서 Smack API의 선택 (또는 목적)을 다시 방문해야합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top