웹 응용 프로그램을 설계 할 때 많은 양의 데이터를 지속적으로 처리하고 웹 인터페이스를 사용하여 결과를 제시해야합니다.J2EE - 지속적으로 실행되는 구성 요소/데몬 구현
작동 방식은 다음과 같이 대략 간다 :
- 전자 센서 어레이는 항상 같은 빨리 가능한 한 및 DB로로드 (USB
- A "변기"애플리케이션 프로세스 데이터를 통해 램으로 데이터를 유출 스테이징 영역)은 트리거를 사용
- 다른 스키마 (데이터 영역 내의 데이터 저장 결과)의 DB 수행 계산
- 클라이언트 웹 애플리케이션 수요 에 등 그래프/보고서의 데이터 처리 표시 할 수
:
- 데이터베이스 서버 - PostgreSQL의는
- 는 관리 웹 인터페이스, 즉 플러 셔를 모니터링 할 수 있습니다 되세요 (즉, 시간당 처리되는 레코드 또는 그와 유사한 것), 별도의 데몬으로 구현 된 경우이를 제어하십시오.
- 변기 및 클라이언트 응용 프로그램은 이상적으로 이제 저를 귀찮게 계속 문제를
J2EE을 사용하여 자바로 작성된 나는 답을 찾을 수 없습니다 :이 지속적으로 변기 구성 요소를 작성에 대한 이동하는 방법, 즉 프로세스 J2EE에서 백그라운드로 실행됩니다. 웹을 수색하여
는 기본적으로 세 가지 가능성 등장 :
는가) 메시지 구동 빈으로 플러 셔 쓰기 JMS를 사용하여 마스터 응용 프로그램을 제어 할 수 있습니다. 그러나 : MDB가 계속 실행되는 것에 대한 생각이 맘에 들지 않습니다. 가능한 경우조차도 확실하지 않습니다.
b) 플러 셔를 EJB로 작성하고 Timer/Scheduling 서비스를 사용하여 제어하십시오. 그러나 이벤트는 실제로 타이밍이 맞지 않습니다. 단지 그렇게하지 말라고 할 때까지 무한 루프로 실행해야합니다. 기술의 잘못된 사용법처럼 보입니다.
c) 플러 셔를 별도의 Java 응용 프로그램으로 작성하고 OS 서비스 (Linux 또는 Windows)로 실행하고 EJB에서 호출 한 ProcessBuilder를 통해 시작 스크립트를 사용하여 제어합니다. 상태를 모니터하려면 JMS를 사용하십시오. 그러나 이것은 지나치게 복잡한 솔루션, 플랫폼 의존 및 어쩌면 신뢰할 수없는 것으로 보이며 EJB는 자체 스레드를 생성하거나 관리해서는 안되기 때문에 ProcessBuilder는 기본적으로 그렇게합니다. 단지 잘못되었습니다.
기본적으로 이들 중 어느 것도 나에게 맞는 것이 아니며 Java/J2EE 세계에서 우리가 옳은 해결책은 무엇인지 알 수 없습니다.
내가 독립형 자바 프로세스와 "변기"응용 프로그램을 작성합니다 당신 토마스
MDB를 지속적으로 실행하는 것이 좋습니다. 실제로, 그것이 그들이 일하기로되어있는 방법입니다. MDB를 배포 한 다음 메시지가 도착하자마자 처리합니다. 즉, 나는 MDB가이 상황에서 옳다고 생각하지 않는다. 센서 데이터를 JMS 메시지에 랩핑 한 다음, 불필요한 복잡성을 추가하는 것처럼 보이는 큐에 놓는 또 다른 프로세스가 필요합니다. –
답변 해 주셔서 감사합니다. 매우 도움이됩니다. MDB의 주제에 대해 자세히 설명하기 위해, 나는 그 뒤에있는 원칙을 가지고있다. 그러나이 경우에 그것을 분명히하자. 나는 끊임없이 실행하는 것이 의미하는 것은 bean에게 메시지를 보내면된다. 무한 루프에서 실행, 데이터 처리 및 플러시. 그리고 이것은 컨테이너가 빈을 적절히 관리 할 수 없기 때문에 잘못되었다. (예를 들어), 메소드 실행은 예를 들어 웹 인터페이스에서 전송 된 중지 메시지 나 서버 종료시에만 종료되기 때문이다. –
지금 네가하는 말을 알아. 나는 그것이 MDB 앱에 대한 끔찍한 디자인이 될 것이라고 동의한다. –