2012-02-23 4 views
2

관리를 위해 웹 인터페이스가 포함 된 TCP 서버를 구현해야합니다.Java EE 응용 프로그램 : TCP 서버 + 웹 인터페이스

기본적으로 tcp 서버는 새로운 연결을 청취하고 웹 인터페이스를 통해 이러한 연결에 관한 정보를보고 그들과 상호 작용할 수 있습니다 (예 : 메시지 보내기 및 수신 된 메시지보기) ...

내 관심사는 웹 응용 프로그램과의 "TCP 서버"통합에 있습니다. 받은 메시지의 경우 공유 DB를 간단하게 사용할 수 있지만 TCP 서버에 연결된 피어에게 메시지를 보내야합니다.

가장 좋은 건 현재 JCA에 있습니다. 어떤 연구는 좋은 샘플을 가리킨다 : http://code.google.com/p/jca-sockets. 샘플에서는 메시지 구동 빈을 사용하여 포트 9000을 통해 수신 된 메시지를 처리하여 에코 서버로 사용합니다.

Java EE 6의 새로운 기능입니다. 왜 샘플이 한 가지 방법으로 처리되었는지 (예 : 왜 MDB입니까?) 알아 내려고 노력했습니다.

JCA에는 상당히 복잡한 사양이 있습니다. 그래서 처음에는 데이터를 교환하기 위해 연결을 활성화 상태로 유지하기 위해 위의 샘플을 적용하려고합니다. 내 다음 단계는 서블릿을 통해 주어진 피어 (peer)에게 전달할 문자열을 받아들이도록 조정하는 것입니다.

누군가 나를 도와 줄 수 있습니까?

+0

왜 '간단한'관리 UI를 만들고 싶습니까? 특히 어려운 일정이있는 경우에는 어떻습니까? 어쩌면 평범한 구식 JSP + HTML이 고려해야 할 옵션입니까? – home

+0

동의합니다. 나는 "이상적인"것으로 알려진 것을 제안했지만, 정말로 그 문제에 관해 유용한 어떤 것이 나를 도울 것입니다. 또한 JSF + Richfaces는 사용 편의성 때문입니다. 내 프런트 엔드 기술은 거의 null이므로 일부 멋진 API를 사용하려고합니다. –

+0

동의합니다. IMHO 특히 '현대적인'UI 기술에 익숙하지 않은 경우 간단한 JSP + HTML UI를 만드는 것이 더 쉽습니다. 그것은 단지 덜 복잡하고 배울 점이 많지 않습니다. 상식은 그게 그다지 환상적이지 않다는 것입니다 ... – home

답변

2

우선, Java EE와 TCP를 함께 사용하는 것이 최선의 방법은 아닙니다. 웹 UI가있는 간단한 TCP 서비스가 필요한 경우에는 일부 웹 컨테이너가 연결된 Java SE를 사용하는 것이 좋습니다 (잘 작동 함).

한편, 귀사가 보유하고있는 기존 Java EE 인프라에 애플리케이션을 통합해야하는 경우 JCA가 최선의 방법입니다. JCA는 그러한 종류의 것들을 위해 설계된 것은 아니지만 TCP 네트워킹이 작동하는 데 필요한 종류의 스레드 관리를 위해 자유로운 EE 서브 시스템입니다.

위에서 언급 한 JCA 소켓은 JCA 앱의 가장 좋은 예가 아닙니다. WorkManager 스레드를 차단하여 일반 Java의 블로킹 소켓을 사용하지만 이는 그리 효과적이지 않습니다. 이제는 상황이 훨씬 좋아졌으며 매우 효과적인 원시 네트워킹을 위해 Java NIO와 Netty가 있습니다. 나는 JCA connector for TCP interactions을 가지고 있는데, 이것은 당신 자신의 빌드를위한 해골을 제공 할 것입니다. 자유롭게 확장하고 기고하십시오.

P. MDB에 대하여 : 메시지 구동 빈은 비동기식 수신 메시지 처리의 "합법적 인"JCA 접근 방식입니다. TCP는 비동기식이기 때문에 응용 프로그램에 모든 것이 제대로 작동 할 수 있도록해야합니다. Outcoming 데이터 전송은 Bean에 주입 할 다양한 ConnectionFactory 인터페이스를 통해 이루어집니다. 위의 링크는 참조 ConnectionFactory 구현뿐만 아니라 ConnectionFactory 및 MDB 메시징 접근 방식을 모두 사용하는 간단한 테스터 앱을 제공합니다.