DXT*_*R66 10 java web-services java-ee jboss7.x
在开发Java EE应用程序时,我经常遇到"问题",在应用程序启动,停止等时执行操作.例如,对于Weblogic,有一种机制(应用程序生命周期监听器).但是如果你想让你的应用程序免受应用程序的限制.特定于服务器,您必须找到不同的解决方案.有些人建议使用在启动时加载的servlet,并"滥用" init()/ destroy().
其他人说使用a ServletContextListener.对我来说,最后一个听起来最好(根据java doc for ServletContextListener.不幸的是,今天我尝试了JBoss 7,似乎jax-ws webservices在任何其他之前被初始化Servlet,因此在ServletContextListener获得通知之前.
简而言之 - 我只是在这里面对一些应用程序服务器特定问题 - 或者是否有任何"更合适",标准化的Java EE方式来注册事物,做任何事情,在任何web服务,servlet之前,无论如何初始化?
如果你的网络服务是这样注释的
@javax.jws.WebService(...)
public interface YourServiceEndpoint
Run Code Online (Sandbox Code Playgroud)
它们还不是真正的servlet,但 JBoss (Jax-WS) 会将它们变成一家初创公司。
ServletContextListner我正在使用 jboss-4.2.3,并且在调用我的方法之前我也会收到这些消息。
[org.jboss.wsf.framework.management.DefaultEndpointRegistry] register: jboss.ws:context=crm,endpoint=YourService
Run Code Online (Sandbox Code Playgroud)
但我想知道,这个 Web 服务在完整的应用程序启动之前是否可用,因为几乎在部署结束时我收到以下消息
[org.jboss.wsf.stack.jbws.WSDLFilePublisher] WSDL published to: ... YourServlet(..).wsdl
Run Code Online (Sandbox Code Playgroud)
所以我猜,这是一个与 jboss 相关的问题。也许我们应该在另一个应用程序服务器上进行测试来证明这一点。