JBoss AS7:在Servlet实例化后调用的ServletContextListener#contextInitialized

时间:2011-07-19 10:37:55

标签: servlets servlet-3.0 jboss7.x

我正在尝试在新的JBoss AS7(Everything)Final上部署我的webservice(最初在JBoss AS5上运行)。
问题是我使用ServletContextListener来初始化我的环境(例如,初始化资源管理)。 但是当我尝试在JBoss AS 7上部署war文件时,配置的Servlet在调用侦听器的#contextInitialized方法之前被实例化(因为无法找到必需的资源,因此会出现异常)。

我的听众:

@WebListener
public class StandardStartup implements ServletContextListener {
    @Override
    public void contextDestroyed(final ServletContextEvent arg0) {
        //destroy environment
    }

    @Override
    public void contextInitialized(final ServletContextEvent arg0) {
        //initialize environment
    }
}

我的web.xml:

<?xml version="1.0"?>
<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
 <display-name>any.displayname</display-name>
 <listener>
  <display-name>Startup</display-name>
  <listener-class>any.StandardStartup</listener-class>
 </listener>
 <servlet>
  <servlet-name>AnyServlet</servlet-name>
  <servlet-class>any.AnyServlet</servlet-class>
  <load-on-startup>10</load-on-startup>
 </servlet>
 <servlet-mapping>
  <servlet-name>AnyServlet</servlet-name>
  <url-pattern>/AnyServlet</url-pattern>
 </servlet-mapping>
</web-app>

有人可以解释为什么在servlet实例化之前没有调用监听器(可能有可能的解决方法)或者知道我做错了什么? PS。:我试图将监听器实现为Servlet并将load-on-startup设置为0,但是JBoss AS7说我已经声明了一个我不想要的servlet映射。

感谢您的帮助!

0 个答案:

没有答案