2010-08-22 17 views
7

मैं Jboss 4.2.3.GA पर एक धारियों वेब अनुप्रयोग चल रहा हूँ और एक विधि कॉल करने के लिए जब मैं JBoss शुरू कोशिश कर रहा हूँ। मैं बहुत की तरह एक ServletContextListener बनाया:संदर्भ प्रारंभिक() को कई बार क्यों कहा जाता है?

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) { 

    } 
} 

और मैं बहुत तरह web.xml में एक प्रवेश कहा:

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

लेकिन contextInitialized() 3 बार बुलाया जा रहा है, जब मैं अपने सर्वर शुरू करते हैं। कोई विचार क्या मुद्दा हो सकता है? धन्यवाद।

+1

अपने 'contextInitialized' के शीर्ष पर रखो एक बुनियादी' System.out.println' सुनिश्चित करें कि आप देख रहे हैं आप क्या सोचते हैं आप देख रहे हैं हो सकता है। वैसे मैं इस तरह की समस्या को देखा है: एक ज्ञात बग जब में [बिलाव वेब एप्लिकेशन डबल की शुरूआत] विकास के परिणामों में उपयोग के लिए NetBeans करने के लिए बिलाव को hooking (https://stackoverflow.com/q/16702011/642706) । –

उत्तर

5

ठीक है, मैं यह पता लगा। इसे 3 बार कहा जा रहा था क्योंकि मेरे पास jboss-web.xml में 3 वर्चुअल होस्ट परिभाषित किए गए थे। निश्चित नहीं है कि यह उस व्यवहार का कारण क्यों बनता है। अगर कोई कारण बता सकता है तो मैं इसकी सराहना करता हूं।

6

केवल एक ServletContext प्रत्येक वेब अनुप्रयोग के लिए नहीं किया जाएगा। जबकि आवेदन की तैनाती (3 आभासी मेजबान 3 अलग IP पते के साथ 3 अलग मेजबान को तैनाती का मतलब है) ServletContext बनाया जाएगा। एक बार जब ServletContext बनाई गई है, यह सब सर्वलेट्स और एक ही आवेदन में JSP फ़ाइलों द्वारा उपयोग किया जाएगा। ServletContext को वेब एप्लिकेशन परिदृश्य में एप्लिकेशन स्कोप चर के रूप में भी जाना जाता है।

स्रोत - http://www.javabeat.net/2009/02/servletcontextlistener-example/

संबंधित मुद्दे