目前我们有一个包含多个模块的Web应用程序。 我们正在使用以下技术堆栈
Application Server: IBM Websphere 7.0(生产),Apache Tomcat 7.0.X(开发) 我们使用JAX-WS注释将类标记为Web服务,除此之外我们不在Data Objects中使用任何JAXB注释,我们将此任务留给ws runtime。
在Apache Tomcat上部署应用程序后,Web服务不会在AS上发布。 作为解决方案,我们需要在spring上下文文件中添加“org.springframework.remoting.jaxws.SimpleJaxWsServiceExporter”属性,然后Web服务才能完美地运行。但是当我们在WAS上部署应用程序时,Web服务无需设置前面提到的属性即可发布。当我们第一次向网络服务提出请求时,它的反应很慢,在本期研究期间,我们发现了以下内容;
className_used_in_web_service_method$JaxbAccessorM_getFieldName_setFieldName_java_util_Set from: <unknown>
。这只是第一次发生。
我们试图在应用程序启动时加载这些,但无法成功。
任何人都可以帮助我们解决这个问题吗?答案 0 :(得分:0)
在web.xml中尝试AxisServlet加载启动
答案 1 :(得分:0)
您是否尝试使用SimpleHttpServerJaxWsServiceExporter
代替SimpleJaxWsServiceExporter
?
一旦完成端点配置,似乎SimpleHttpServerJaxWsServiceExporter
启动了web服务。
答案 2 :(得分:0)
您可以创建自己的ServletContextListener
例如:
package kernel.flowcontrol;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
public class WsLifecycleListener implements ServletContextListener {
@Override
public void contextInitialized(ServletContextEvent servletContextEvent) {
// some init work ...
}
@Override
public void contextDestroyed(ServletContextEvent servletContextEvent) {}
}
并将其添加到web.xml
:
<listener>
<listener-class>kernel.flowcontrol.WsLifecycleListener</listener-class>
</listener>