当开发
Java EE应用程序时,我经常遇到“问题”,以便在应用程序启动时停止等等.现在对于Weblogic来说,有一个机制(应用程序生命周期监听器).但是如果你想保持你的应用程序免费的应用程序的东西.服务器具体,你必须找到一个不同的解决方案.有些建议使用在启动时加载的servlet,并且“滥用”init()/ destroy().
其他人说使用ServletContextListener.对我来说,最后一个听起来是最好的(根据java doc for ServletContextListener
.不幸的是,今天我尝试了JBoss 7,似乎jax-ws webservices在任何其他Servlet之前初始化,因此在ServletContextListener获取通知之前.
长篇小说 – 我只是在这里面临一些应用服务器的具体问题 – 或者是否有任何“更合适”的标准Java EE注册方式,在任何webservice,servlet之前进行任何初始化?
解决方法
如果您的网络服务如此注释
@javax.jws.WebService(...) public interface YourServiceEndpoint
它们不是真正的servlet,但是JBoss(Jax-WS)将把它们变成一个启动.
我正在使用jboss-4.2.3,我也收到这些消息之前,我的ServletContextListner被调用.
[org.jboss.wsf.framework.management.DefaultEndpointRegistry] register: jboss.ws:context=crm,endpoint=YourService
但是我想知道,如果这个webservice在完整的应用程序启动之前可用,因为几乎在部署结束时我收到以下消息
[org.jboss.wsf.stack.jbws.WSDLFilePublisher] WSDL published to: ... YourServlet(..).wsdl
所以我猜,这是一个jboss相关的问题.也许我们应该测试另一个应用服务器来证明.