2010-08-22 21 views
7

Jboss 4.2.3.GA üzerinde bir Stripes web uygulaması çalıştırıyorum ve JBoss'u başlattığımda bir yöntemi çağırmaya çalışıyorum. Bir ServletContextListener şöyle oluşturuldu:Neden contextInitialized() birden çok kez çağrıldı?

public class TimerContextListener implements ServletContextListener { 

    @Inject 
    private TimerManager timerManager; 

    public void contextInitialized(ServletContextEvent servletcontextevent) { 
     ((Injector) servletcontextevent.getServletContext().getAttribute(GuiceServletContextListener.KEY)).injectMembers(this); 
     timerManager.stopAllTimers(); 
     timerManager.startTimer(); 
    } 

    public void contextDestroyed(ServletContextEvent servletcontextevent) { 

    } 
} 

ve ben şöyle web.xml''deki bir girdi eklendi: Ben sunucuyu başlattığınızda

<listener> 
     <listener-class>com.lawless.web.servletContextListeners.TimerContextListener</listener-class> 
    </listener> 

ama contextInitialized() 3 kez aradım oluyor. Sorunun ne olabileceği hakkında bir fikrin var mı? Teşekkürler.

+1

Eğer gördüğünüzü düşündüğünüz Gördüğünüz emin olmak için 'contextInitialized' üstündeki temel' System.out.println' koyun. Bu arada, bu tür bir problemi gördüm: [Tomcat'in web uygulamasını iki kez başlatması] için geliştirme aşamasında kullanılmak üzere Tomcat'ı NetBeans'e bağladığınızda bilinen bir hata (https://stackoverflow.com/q/16702011/642706) . –

cevap

5

Tamam, anladım. 3 kez çağrıldım çünkü jboss-web.xml'de tanımlanmış 3 sanal ana bilgisayarım vardı. Bu davranışa neden neden olduğuna emin değilim. Eğer herkes bunu takdir etmemin sebebini açıklayabilirse.

6

Her web uygulaması için yalnızca bir tane ServletContext olacaktır. Uygulamayı dağıtırken ServletContext oluşturulacaktır (3 Sanal Ana Bilgisayar 3 farklı IP adresi ile 3 farklı ana bilgisayara dağıtmak anlamına gelir). ServletContext oluşturulduktan sonra, aynı uygulamadaki tüm servletler ve JSP dosyaları tarafından kullanılacaktır. Web uygulama senaryosunda ServletContext uygulama kapsam değişkenleri olarak da adlandırılır.

Kaynağı - http://www.javabeat.net/2009/02/servletcontextlistener-example/

İlgili konular