处理Java EE应用程序生命周期的“标准化”方法

时间:2011-07-22 08:34:08

标签: java web-services java-ee jboss7.x

在开发Java EE应用程序时,我常常遇到“问题”,当应用程序启动,停止等时执行操作。例如,对于Weblogic,有一种机制(应用程序生命周期监听器) 。但是如果你想让你的应用程序免受应用程序的限制。特定于服务器,您必须找到不同的解决方案。有些人建议使用在启动时加载的servlet,并“滥用”init() / destroy()

其他人说使用ServletContextListener。对我来说,最后一个听起来最好(根据ServletContextListener的java文档。不幸的是,今天我尝试了JBoss 7,似乎jax-ws webservices在任何其他Servlet之前被初始化,因此之前ServletContextListener收到通知。

长话短说 - 我在这里只是面对一些应用程序服务器特定问题 - 或者是否有任何“更合适”的标准化Java EE方式来注册事物,做任何事情,在任何web服务,servlet之前,无论如何初始化?

1 个答案:

答案 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相关的问题。也许我们应该在另一个应用服务器上进行测试以证明这一点。