我正在尝试在新的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映射。
感谢您的帮助!