2011-09-30 6 views
1

JBoss 서버를 생성하여 요청에서 데이터를 가져와 SQL 데이터베이스에 배치하는 REST 형 서블릿이 될 Java 응용 프로그램을 배포합니다.JBoss 서버의 Java 응용 프로그램에서 "Main loop"

내 주요 질문 : 요청에 따라 실행되지 않지만 메인 루프와 비슷한 JBoss 서버에서 클래스를 설정할 수 있습니까? 나는. "잠자기"한 다음 몇 가지 정보를 확인하고 무언가를하거나 잠을 다시 자면됩니다.

기본적으로 파일에 데이터를 많이 쓰고 일단 파일이 특정 지점까지 채워지면 모든 파일을 데이터베이스에 한 번에 작성하여 연결 오버 헤드를 줄입니다.

내 생각에 루프를 사용하여 모든 종류의 클래스를 작성하고 원하는 방식으로 실행되도록 할 수 있습니다 (내 "절전"기술이 동일한 JBoss 시간에 서블릿을 허용하는 것이 올바른 한). 운영).

내가 모르는 것은 주 루프를 끊임없이 실행하는 방법입니다. 그냥 생성자에서 그것을 호출 ?? 내가 서버에서 실행하는 방법을 알고있는 유일한 방법은 현재 web.xml에 매핑을 설정하고 서버에서 웹 페이지 요청 정보를 만드는 것입니다 ... 더 나은 (읽기 쉬운) 서비스가 있습니까? 사전에 그

감사와 같은 뭔가 보스보다 및 자바, 나는 이런 식으로 뭔가에 대한 설명은 꽤 열심히 검색 한하지만 내가 바로 키워드를 놓친 거지 같다 ...

답변

3

@Startup에서 look을하고 @Singleton 콩.

@Startup @Singleton 
public class MainLoopBean { 

    @PostConstruct 
    public void mainLoop() { 
    } 

} 

이상적으로해야 몇 이것을 timer service와 : 짧은에서

, 다음과 같이 쓸 수 있습니다. 일정량의 작업이 완료되고 일시 중지하려면 나중에 호출 할 메소드를 예약하고 리턴하십시오.

+0

추가 검토를 통해 빠른 답장을 보내 주셔서 감사합니다. 제가 찾고있는 것이 맞습니다! – Adam

+0

여러분을 환영합니다! 그것은 도움이 된 것을 기쁘게 생각합니다. :) – Behrang

1

연결 오버 헤드가 실제로 성능에 영향을주는 경우 JBoss에서 연결 풀링에 대한 설정을 변경할 수 있습니다. 이렇게하면 응용 프로그램이 더 간단하고 강력하며 확장 가능해질 것입니다. 하나의 파일에 파일을 쓰는 것은 여러 병렬 연결로 확장되지 않습니다. 또한 DB에 직접 쓰는 것보다 많은 IO를 필요로합니다.

+0

성능 문제와 관련하여 아직 실제 데이터를 관찰하지 못했습니다. 그러나이 아이디어는 여러 최종 사용자의 시스템에서 실행될 클라이언트의 무리로 세션 당 데이터 묶음이이 분석 데이터베이스에 전달됩니다. 나는 많은 연결이 열리고 닫히는 것이 불필요 할 것이라고 생각했다. 여러 개의 연결이있는 단일 파일에 대해서는 좋은 지적입니다. "thread safe"파일 입출력을 작성하는 것이 훨씬 더 어려울 것입니다. – Adam

1

왜 루프를 고려하고 있습니까? JMS 대기열과 리스너를 설정하면 어떤 일이 생길 때마다 응답 할 수 있습니다. 루프가 필요없고 특별한 후크도 필요 없습니다.

또는 실제로 더 복잡한 작업을 수행하려면 Java Connector Architecture를 살펴보십시오. Java Connector Architecture에서는 이러한 유형의 후크를 제공합니다.

관련 문제