2014-06-19 3 views
6

서블릿 컨텍스트 수신기의 contextInitialized() 메소드에서 EJB 서비스를 호출해야합니다. 애플리케이션은 JBoss에서 실행 중입니다. 컨텍스트 리스너가 제대로 작동하지만 JNDI 조회를 통해 EJB Bean에 액세스 할 수 없습니다.ServletContextListener에서 컨텍스트 검색을 통해 EJB bean에 액세스하는 방법

EJB bean이 JNDI 트리로 Y 인드되기 전에 JBOSS의 웹 전개가 _ 생하기 때.입니다. 이것을 극복하는 방법? EJB가 완전히 배포 된 후에 JNDI 바인드를 초기에 구성하거나 웹 배포를 시작하는 방법이 있습니까?

서비스 호출 전에 contextInitialized() 메서드에서 서비스를 호출했는데 내 JBoss5.1.0 GA에서 정상적으로 작동하고 다른 시스템에서 같은 버전의 JBoss에서 작동하지 않습니다.

응용 프로그램은 데이터베이스의 일부 마스터 데이터를로드하여 웹 레이어 (캐싱 유형)에서 사용할 수 있도록하기 때문에이 기능이 필요합니다. JBOSS 시동 장치가이 요구 사항에 적합합니까? 그렇다면 어떻게 데이터를 웹 레이어에서 사용할 수있게 할 수 있습니까?

다른 방법이있는 경우 제안하십시오. contextInitialized()에있는 EJB에 대한

답변

1
  • 설문 조사. 따라서 특정 시간 동안 그냥자는 대신 EJB에 연결을 시도하십시오. 실패 할 경우 EJB를 사용할 수있을 때까지 절전 모드로 들어가서 다시 시도하십시오. 이 경우 컨텍스트 초기화가 차단됩니다.

  • 캐시를 게으른 것으로 구현하십시오. 첫 번째 쿼리 중에 캐시를 채우십시오 (동일한 폴링 프로 시저를 사용하십시오 : EJB에 연결하고 사용 가능할 때까지 다시 시도하십시오). 이 경우 캐시 블록.

  • 배포를 두 부분으로 나눌 수 있습니다. 하나는 EJB 용이고 다른 하나는 웹 응용 프로그램 용입니다. 그런 다음 EJB가 바인딩 될 때까지 웹 응용 프로그램의 첫 번째 배포 및 배포를 배포합니다 (로그 파일을 보거나 명령 줄 응용 프로그램에서 EJB에 바인딩하여 시도).

+0

지연을 수행하는 방법이 있습니까? 웹 배포? 이것이 가능하다면 EJB와 WEB가 하나의 EAR – Murugesh

+0

에 묶여있는 곳인지 모르겠습니다. 동일한 .ear 파일에있는 war 모듈과 EJB 모듈 사이에는 암시 적 종속성이 있습니다. 나는 모듈의 직렬 로딩을 정의하기 위해 application.xml이나 jboss-app.xml에서 어떤 방법을 찾지 못했다. 물론 JBoss 소스 코드를 살펴볼 수도 있습니다. 어떻게 든 이걸 JBoss 버그라고 생각합니다. 모든 EJB가 배포되기 전에 웹 모듈을로드해서는 안되므로 해결 방법 중 하나를 적용 할 수없는 경우 버그를 제출할 수 있습니다. – Beryllium

관련 문제