JBoss AS7: ServletContextListener # contextInitialized вызывается после создания сервлета - PullRequest
2 голосов
/ 19 июля 2011

Я пытаюсь развернуть свой веб-сервис (изначально работающий на JBoss AS5) на новом JBoss AS7 (все) Final.
Проблема в том, что я использовал ServletContextListener для инициализации моей среды (например, для инициализации управления ресурсами),Но когда я пытаюсь развернуть файл war на JBoss AS 7, настраиваемые сервлеты создаются перед тем, как вызывается # 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>

Может кто-нибудь объяснить мне, почему слушатель не вызывается до создания сервлетов (возможно, с возможным обходным путем) илизнает, что я делаю не так?PS: я пытался реализовать слушатель как сервлет и установить загрузку при запуске равной 0, но JBoss AS7 говорит, что я объявил отображение сервлета, которое в этом случае мне не нужно.

Спасибоза вашу помощь!

...