JBoss (버전 5) 기반의 응용 프로그램에서 UDP 패킷을 수신 대기해야합니다.Java EE (EJB 3.0) 환경에서 DatagramSocket 읽기
가장 쉬운 방법은 JBoss @Service 싱글 톤 Bean을 사용하여 특정 포트에서 DatagramSocket을 열고 receive (...) 메소드를 호출하는 것입니다. 첫 번째 부분은 매우 쉽습니다 - 나는 그것을 테스트하고 예상대로 작동합니다. 두 번째 부분 - 패킷 수신은 더 복잡합니다.
그런 코드의 디자인에 대해 궁금합니다. DatagramSocket javadoc에 기술되어 있기 (위해) 때문에, receive는 블록 조작입니다. 패킷이 취득 될 때까지 블록됩니다. 확장 성이 뛰어나고 스레드 안전성을 보장하는 코드 작성 방법은 무엇입니까?
열린 연결로 싱글 톤에 대한 참조를 보유하는 상태 비 저장 빈을 작성하는 것에 대해 생각해 보았습니다. 이러한 빈은 receive 메소드를 호출합니다. 그러나 JBoss가 어떻게 관리하는지 (하나의 bean 호출은 receive()와 패킷이 도착할 때까지) 차단됨). 사용할 패턴이 있습니까?
빠른 답변 감사합니다. 불행히도 다른 많은 기능을 가진 큰 프로젝트의 일부이며 일반적으로 비 고유 EJB 솔루션을 사용하지 않는 것이 좋습니다. –
@ Piotrek-De - 귀하는 귀하의 애플리케이션에 리소스 어댑터로 낙타를 배포 할 수 있다고 생각합니다. 이것은 사양을 준수하며 리소스 어댑터는 이러한 용도로 선호되는 J2EE 솔루션입니다. –