2

我正在尝试在新的 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 映射。

谢谢你的帮助!

4

0 回答 0