在开发Java EE应用程序时,我常常遇到“问题”,当应用程序启动,停止等时执行操作。例如,对于Weblogic,有一种机制(应用程序生命周期监听器) 。但是如果你想让你的应用程序免受应用程序的限制。特定于服务器,您必须找到不同的解决方案。有些人建议使用在启动时加载的servlet,并“滥用”init()
/ destroy()
。
其他人说使用ServletContextListener
。对我来说,最后一个听起来最好(根据ServletContextListener
的java文档。不幸的是,今天我尝试了JBoss 7,似乎jax-ws webservices在任何其他Servlet
之前被初始化,因此之前ServletContextListener
收到通知。
长话短说 - 我在这里只是面对一些应用程序服务器特定问题 - 或者是否有任何“更合适”的标准化Java EE方式来注册事物,做任何事情,在任何web服务,servlet之前,无论如何初始化?
答案 0 :(得分:1)
如果您的网络服务注释如此
@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
但我想知道,如果在完整的应用程序启动之前这个web服务是可用的,因为差不多在部署结束时我收到了以下消息
[org.jboss.wsf.stack.jbws.WSDLFilePublisher] WSDL published to: ... YourServlet(..).wsdl
所以我猜,这是一个与jboss相关的问题。也许我们应该在另一个应用服务器上进行测试以证明这一点。