2012-09-19 2 views
1

JBoss 7.1.1 및 servlet-api 2.5를 사용하고 있습니다.ServletContextListener.contextDestroyed에서 JNDI 조회

응용 프로그램 종료시 JNDI에있는 일부 개체를 종료해야합니다.


public class MyServletContextListener implements ServletContextListener { 
    ... 

    @Override 
    public void contextDestroyed(ServletContextEvent sce) { 
     ((TaskClient) new InitialContext().lookup("myName")).disconnect(); 
    } 
} 

을하지만 예외를 얻을 :

나는이 목적을 위해 ServletContextListener을 사용하고 내가 응용 프로그램이 모든 것이 괜찮 실행되고있는 객체를 조회하려고하면

Error looking up myName, service service 
jboss.naming.context.java.myName is not started

합니다.

도움 주셔서 감사합니다.


public class MyJbpmServletContextListener implements ServletContextListener { 
    public static final String TASK_CLIENT_JNDI_NAME = "myJbpmTaskClient"; 
    private Log logger = SLF4JLogFactory.getLog(getClass()); 

    @Override 
    public void contextInitialized(ServletContextEvent sce) { 
     try { 
      TaskClient tc = ... 
      // long initialization of TaskClient 
      InitialContext context = new InitialContext(); 
      context.bind(TASK_CLIENT_JNDI_NAME, client); 
     } catch (NamingException exception) { 
      logger.error("Cannot bind task client", exception); 
     } 
    } 

    @Override 
    public void contextDestroyed(ServletContextEvent sce) { 
     try { 
      ((TaskClient) new InitialContext().lookup(TASK_CLIENT_JNDI_NAME)).disconnect(); 
     } catch (NamingException exception) { 
      logger.error("Cannot obtain task client", exception); 
     } 
    } 
}

목적은 경로 TASK_CLIENT_JNDI_NAME 때 응용 프로그램이 실행을 다음에 액세스 : 나는 JNDI에 데이터를 바인딩하는 방법


갱신

. 하지만 contextDestroyed라고 할 때 나는 NamingException입니다.

언제 어떻게 파괴되는지 모르겠습니다. 나는 리바 인하거나 바인드 해제하지 않는다고 확신합니다.


UPDATE2 또한 JNDI 경로 java:comp/myName, java:comp/env/myName, java:/myName, java:jboss/myName을 사용했습니다. 동작은 동일합니다. 응용 프로그램이 실행될 때 객체를 검색 할 수 있으며 ServletContextListener.contextDestroyed 메서드가 호출 될 때 객체를 찾을 수 없습니다.

+1

응용 프로그램을 어떻게 종료합니까? JBoss 인스턴스를 중지합니까? – WeMakeSoftware

+0

@Funtik JBoss 인스턴스를 종료하고 응용 프로그램의 배포를 취소하면 동작이 동일합니다. –

+0

응용 프로그램을 종료하겠다고 언급했습니다. 어떻게 그걸합니까? JBoss 관리 콘솔을 사용하고 있습니까? 아니면 그냥 JBoss의 전체 인스턴스를 종료 하시겠습니까? – WeMakeSoftware

답변

0

저에게 JBoss 버그처럼 보입니다. AS7-5746