2011-06-10 8 views
0

필자는 필자가 필자의 필터에서 인스턴스화해야하는 싱글 톤을 가지고 있으며 몇 가지 이유 때문에 몇 번의 시도에서 인스턴스를 얻을 수 없습니다. (JBoss EAP 5.1에 배포 된 응용 프로그램) 수정하지 않은 동일한 해결책은 Jetty 응용 프로그램 서버에서 올바르게 작동합니다. 미리 답변 해 주셔서 감사합니다. 감사합니다JBoss에서 singleton의 intance를 얻는 방법?

, 당신은 그것에게 구식 방법을, 어떤 의존성 주입 프레임 워크 (봄, Guice)를 사용하지 않으려면

로마

답변

1

:

설치 ServletContextListener

contextInitialized(ServletContextEvent sce)에서 싱글 톤을 생성하고 속성으로 저장하십시오. ServletContext

필터가 초기화 될 때의 FilterConfig 인터페이스 내부에 전달되는 ServletContext로부터의 싱글 인스턴스를 얻을 수 있어야 필터의 init method

1

왜 당신이 당신의 필터에 싱글이 필요합니까? 웹 애플리케이션, 세션 및 요청 컨텍스트를 통해 원하는 모든 데이터를 입력 할 수 있습니다.

즉, 코드를 보지 않고 인스턴스를 잡기 위해 클래스 정적 변수를 사용할 확률이 100 %라고 말했습니까? 그렇다면 클래스가 클래스 로더에 의해 범위가 지정된다는 점에 유의하십시오. 이는 애플리케이션 서버에서 이러한 관용구를 사용하는 것이 나쁜 생각 인 이유 중 하나입니다 (클래스 로더 계층 구조를 사용하여 구현되도록 보장됩니다). JBoss와 Jetty는 분명히 다른 접근법을 가지고 있습니다.

+0

우리는 독점적 인 의존성 주입을 사용하고 있습니다. –

관련 문제