我正在尝试在新的 JBoss AS7 (Everything) Final 上部署我的 web 服务(最初在 JBoss AS5 上运行)。
问题是我使用了 ServletContextListener 来初始化我的环境(fe 来初始化资源管理)。但是当我尝试在 JBoss AS 7 上部署 war 文件时,配置的 Servlet 在调用侦听器的 #contextInitialized-method 之前被实例化(因为找不到强制资源,所以会出现异常)。
我的听众:
@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 并将启动时加载设置为 0,但 JBoss AS7 说我已经声明了在这种情况下我不想要的 servlet 映射。
谢谢你的帮助!