我需要将 Web 服务应用程序从 Tomcat 6(使用 JDK 1.5)迁移到 Tomcat 7(使用 JDK 1.6)(实际上是在 7.0.27 上测试)。JAX-WS 框架是 Metro 2.1。
我正在使用两个 ServletContextListener:
“WebAppListener”:初始化应用程序(配置,数据库连接的设置......)。
“com.sun.xml.ws.transport.http.servlet.WSServletContextListener”:创建 Web 服务的 Metro 监听器。
顺序很重要,因为我需要在我的 Web 服务上调用 @PostConstruct 方法之前完全初始化我的 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”订单?
谢谢。