2009-04-22 2 views
0

Java EE 컨테이너의 서비스와 제 3 자 확장 코드의 서비스를 제공해야하는 애플리케이션을 계획 중입니다. 기본적으로,이 앱이하는 일은 일련의 작업 항목을 찾고 (현재 계획은 최대 절전 모드를 사용하는 것입니다) 작업 항목 사용자에게 작업 항목을 보냅니다.다소 많거나 적게 컨테이너 역할을하는 응용 프로그램을 작성하려면 어떻게합니까?

작업 항목 소비자가 항목 세부 정보를로드하고 타사 확장 코드를 호출 한 다음 타사 코드가 실패하지 않은 경우 작업 항목의 일부 상태를 업데이트하고 완료된 모든 작업을 커밋합니다.

명시 적으로 Java EE 응용 프로그램으로 작성하지 않았습니다. 본질적으로, 내 응용 프로그램은 컨테이너의 많은 서비스를 제공해야합니다. 트랜잭션 관리, 연결 풀링 및 관리, 일정 규모의 배포 지원을 제공해야합니다. 어떻게하면 A) 직접 제공하거나, B) 제 3 자 라이브러리를 제공하여 제공 할 수 있습니까? 더 큰 프로젝트의 요구 때문에, Extension 작성자들은 Hibernate를 사용하게 될 것입니다.

내가 언급 한 모든 기능 중에서 트랜잭션 관리가 가장 중요하다는 점은 주목할 가치가 있습니다. 내 컨테이너에서 실행되는 내선 코드에이 서비스를 제공하려면 어떻게해야합니까?

답변

1

Spring은 트랜잭션 관리를 가지고있다. Apache DBCP를 사용하여 응용 프로그램 컨텍스트에서 DataSource를 정의 할 수 있습니다 (DataSource에 org.apache.commons.dbcp.BasicDataSourceorg.springframework.jdbc.datasource.DataSourceTransactionManager 사용).그런 다음 응용 프로그램의 모든 객체는 TransactionManager를 전달하면 프로그래밍 방식으로 자체 트랜잭션을 정의하거나 응용 프로그램 컨텍스트의 객체 정의에 AOP 인터셉터를 사용하여 트랜잭션 내에서 실행해야하는 메소드를 정의 할 수 있습니다.

또는 Spring에서 더 쉬운 접근법은 트랜잭션 내에서 실행해야하는 모든 메소드에서 @Transactional 주석을 사용하고 응용 프로그램 컨텍스트에 이와 같은 내용을 추가하는 것입니다 (transactionManager의 이름은 txManager라고 가정).

<tx:annotation-driven transaction-manager="txManager"/>

이 방법을 쉽게 그들이 그렇게 (세터를 받게 될 것이라고 단순히 @Transactional 어노테이션을 사용하거나 직접 PlatformTransactionManager를 통해 트랜잭션을 생성하여 트랜잭션 관리를 가질 수있는, 나중에 새 구성 요소를 받아 들일 것입니다 응용 프로그램 앱 컨텍스트에서 개체를 정의 할 때 전달할 수 있습니다).

4

안녕하세요, 저는 Spring Framework를 사용할 것을 권장합니다. 그것은 당신이 이야기하고있는 다양한 서비스를 모으는 좋은 방법을 제공합니다.

인스턴스가 사용자의 특정 요구에 충족하는 경우 :

  • 내가 아파치 평민 연결 풀링을 사용하는 스프링 기반의 독립 실행 형 응용 프로그램을 구축 풀링

    1. 트랜잭션 관리/연결. 또한 나는 봄에 내장 된 트랜잭션 MGMT의 일종을 가지고 있다고 생각합니다.
  • 배포 지원 I 배포 및 프런트 로더로 일을 실행하는 개미를 사용
    • . 그것은 꽤 잘 작동합니다. 나는 Spring 독립 실행 형 앱을 실행하기 위해 개미를 사용하여 별도의 프로세스를 포크합니다.
  • 스레딩.
    • 봄 스레드와 스레드 풀
      • 봄이 최대 절전 모드 및 기타 유사한 프로젝트와 잘 통합
    • DAO
  • 구성을 잘 다루는 석영에 대한 지원을하고
    • xml 속성 정의 사용 - Spring은 다중 환경 설정에 꽤 좋다.
  • +1

    한 작업을 훨씬 더 재미 없다. 나는 그것을 처음 보았 더라면 좋겠다. – duffymo

    +0

    좋은 답변이지만 Quartz는 스레딩이 아닌 스케줄링을위한 것입니다. 물론 스레드를 사용하지만 그 기능은 일정을 잡습니다. 그래도 좋은 대답. – Robin

    +0

    유감스럽게도, "봄에는 일종의 트랜잭션 관리가 내장되어 있다고 생각합니다."라는 말의 애스펙트는 내가하고있는 일 중 가장 힘든 부분이며, 내가 선택하기 전에 그립에 와야 할 부분입니다. 프레임 워크. 저는 이미 봄을 생각하고 있습니다 만, 제가 만들고 싶은 시스템을 지원할 수 있는지 알고 싶습니다. –

    1

    J2SE 환경에서 Java 트랜잭션 관리 및 연결 풀링 (JDBC + JMS)에 대해 Atomikos TransactionsEssentials을 시도 할 수 있습니다. 완벽한 - 어떤 appservers에 대한 필요가, 그리고 ;-)

    HTH 가이

    +0

    당신은 약간 집중하고 있어요, 가이 :) 당신은 저의 질문에 3 개만 대답했습니다. 마침내 솔루션을 선택해야했을 때 사이트 회원 이었으면 좋겠다. Atomikos는 좋아 보이지만 인프라는 이미 선택되었습니다. –

    관련 문제