2012-01-17 3 views
0

Java EE 5 및 Websphere 7.0에 webproject가 있습니다. 스케줄러를 만들고 배포 응용 프로그램을 시작해야합니다. 내가 인터페이스를 EJB를 만들 :배포 완료 후 시작 스케줄러

@Local 
public interface ISchedulerBean { 

    public void executeTimer(Timer timer); 
    public void createTimer(); 
} 

무 상태 세션 빈은이 인터페이스를 구현 해봤 어떤 . 메서드 createTimer는 TimerService에서 timer 인스턴스를 만듭니다. 이 코드 부분은 잘 동작합니다. 또한 응용 프로그램 배포 후에 createTimer 메서드()를 호출해야합니다. 내가 시도 :

  1. 리스너의 servletContext 추가

    공용 클래스 SchedulerInitialiserContextListener는 ServletContextListener { EJB 개인 WebServiceLocator의 webServiceLocator를 조회하기 // 서비스를 구현을; private SchedulerService schedulerService;

    public SchedulerInitialiserContextListener() { webServiceLocator = new WebServiceLocator(); schedulerService = webServiceLocator.getSchedulerService(); INIT에서() 메소드를 SchedulerBean 주입하고 createTimer 전화 여기서

    public void contextDestroyed(ServletContextEvent ctx) { 
    } 
    
    public void contextInitialized(ServletContextEvent ctx) { 
        schedulerService.createTimer(); 
    } 
    

    }}

  2. 1 서블릿을 생성한다.

하지만 먼저 webspere에서 웹 응용 프로그램을 배포 청취자 전화, 서블릿을 초기화 만 모든 EJB이 위치한 ejb.jar를 배포하기 때문에이 작동하지 않습니다. Webshpere 로그 파일에서 확인할 수 있습니다. 그래서 내가 ejb를 던지려고 할 때 @EJB 어노테이션이나 룩업이 Exception을 얻는다. beacause ejb가 발견되지 않았다. ejb 모듈을 배포하거나 배포 순서를 변경 한 후 타이머를 시작하는 다른 방법이있을 수 있습니까?

답변

1

모듈의 시작 순서를 설정할 수 있습니다.

다음 당신하여 Rational 응용 프로그램 개발자와 개발 않는 가정 :

오른쪽 귀 프로젝트를 클릭하고 자바 EE 클릭 -> 열기를 WebSphere Application Server에 배포합니다.

응용 프로그램 섹션을 보면 모든 모듈이 표시되고 각 모듈에 대해 Start weight을 설정할 수 있습니다.

Context Listener가 포함 된 웹 프로젝트의 값이 가장 커야합니다.

  • 이 작업은 귀 프로젝트의 META-INF 하에서 ibmconfig 디렉토리를 만들고,
+0

감사합니다 당신이 당신의 빌드 프로세스에 패키지 있는지 확인하십시오! 너의 ansfer가 나를 도왔다. – Balconsky