Web サービス アプリケーションを Tomcat 6 (JDK 1.5 を使用) から Tomcat 7 (JDK 1.6 を使用) に移行する必要があります (実際には 7.0.27 でテストしています)。JAX-WS フレームワークは Metro 2.1 です。
私は 2 つの ServletContextListeners を使用しています。
"WebAppListener" : アプリケーションを初期化します (構成、データベース接続のセットアップ...)。
「com.sun.xml.ws.transport.http.servlet.WSServletContextListener」: Web サービスを作成する Metro リスナー。
@PostConstruct メソッドが Web サービスで呼び出される前に、Web アプリを完全に初期化する必要があるため、順序は重要です。
Tomcat 6 では、これは見事に機能します。
INFO: Starting Servlet Engine: Apache Tomcat/6.0.36
mars 16, 2013 5:13:13 PM org.apache.catalina.startup.HostConfig deployWAR
INFO: Deploying web application archive WSWebApp.war
************************ IN WebAppListener.contextInitialized ***********************
************************ IN WSMyWebService.postConstruct ****************************
ただし、Tomcat 7 でのまったく同じ戦争:
mars 16, 2013 6:45:24 PM org.apache.catalina.startup.HostConfig deployWAR
INFO: Deploying web application archive C:\home\tomcat\webapps\WSWebApp.war
************************ IN WSMyWebService.postConstruct ****************************
************************ IN WebAppListener.contextInitialized ***********************
リスナーが呼び出される順序は、web.xml に表示される順序だと思いましたか?
Tomcat 7 でこの順序が変更されたのはなぜですか? しかし、もっと重要なことは、「Tomcat6」の注文を元に戻すにはどうすればよいですか?
ありがとう。