2010-02-18 8 views
1

고객이 요청할 때 여러 작업을 전송해야하는 Swing 응용 프로그램을 설계해야합니다. 각 작업은 값을 반환하기 위해 10-30 분이 걸릴 동일한 쉘 스크립트를 실행 중입니다. (작업이 응용 프로그램 서버 또는 웹 서비스로 실행되지 않습니다.) 그런 다음 Swing 응용 프로그램은 반환 값에 따라 다음에 수행 할 작업을 결정해야합니다. 내 질문에 JMS를 사용하여 작업을 보낼 수 있는지입니다. 그렇지 않다면 내가 뭘 조사 할 것을 제안합니까? 멀티 스레딩 ....Java Swing App에서 JMS를 사용할 수 있습니까?

대단히 고마워요!

답변

4

여기서는 첫 번째 근사치가 멀티 스레드입니다. SwingWorker을 살펴보고 백그라운드 스레드에서 프로세스를 시작하고 진행 상황을 모니터링합니다 (실행중인 경우 사용자를 표시하는 것처럼 콘솔에 출력되는 내용을 볼 수도 있음). 이는 명백한 선택입니다 .

재사용을 허용하고 프로세스가 완료 될 때까지 실행된다는 것을 보증하기 위해 JMS가 당신에게 (그리고 데스크탑에서 실행될 경량 JMS 구현을 찾아야 만하는) JMS는 무엇을 해결할 것입니다. 셸 스크립트에서 20 분이 걸리는 것이 재시도 대상인 것처럼 들리지는 않지만, 그렇다면 스레드가 죽어서 프로세스가 잊혀지는 대신 메시지가 실제로 처리되는 것이 중요합니다 사용자가 java 응용 프로그램을 닫으면 JMS가 볼 대상 유형입니다.

+0

제안 해 주셔서 감사합니다. SwingWorker를 살펴 보겠습니다. – mengmenger

2

JMS는 Swing 기반 응용 프로그램에서 가장 확실히 사용될 수 있습니다. JMS 대기열을 청취하고 다른 대기열 또는 주제에 응답하는 서비스가 쉘 스크립트를 서버에서 실행해야하는 경우.

데스크탑 응용 프로그램에서 JMS 대기열 또는 주제를 사용하는 데 제한이 없습니다.

+0

나는 당신이 말한 것을 가지고 있습니다. 쉘 스크립트는 서비스에 의해 서버에서 실행되지 않습니다. 이것은 순수 스윙 응용 프로그램입니다. 멀티 스레딩을 살펴볼 것입니다. 고맙습니다! – mengmenger

+0

로컬 시스템에서 긴 작업을 실행하려면 스윙 앱에 멀티 스레딩이 필요합니다. – orj

2

JMS는 일반적으로 프로세스 간 및 클라이언트/서버 간 통신에 사용되며 실제로 처리하려는 서버로 보내지 않는 한 여기에서 찾고있는 것이 아닙니다.하지만 그렇게 들리지는 않습니다 이리. 스윙 앱에 대기열에 새 작업을 추가하는 버튼 (작업에서 셸 스크립트를 실행하는 버튼)이있는 것처럼 작업 대기열을 찾는 것처럼 들립니다. 그런 다음 여러 스레드가 대기열의 작업을 수행하고 스크립트를 실행할 수 있습니다.

+0

감사합니다! 멀티 스레딩을 사용하겠습니다. – mengmenger

1

Quartz와 같은 작업 스케줄러를 사용할 수도 있고 그렇지 않을 수도 있습니다. 어쩌면 그것은 과잉 공격 일 수도 있습니다. 아마도 당신이 필요로하는 것 일 수도 있습니다.

관련 문제