10

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

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

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

4

1 回答 1

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

于 2011-07-22T09:24:22.123 回答