我有一个部署到WebSphere的应用程序EAR。如何为每次启动应用程序时应调用一次性初始化代码的应用程序创建生命周期监听器?
我需要类似于WebLogic Server的类weblogic.application.ApplicationLifeCyleListener
和weblogic.application.ApplicationLifecycleEvent
。
答案 0 :(得分:6)
EJB 3.1规范添加了单例会话bean ,它可以以便携式,独立于供应商的方式用于应用程序初始化。
从Developing Singleton Session Beans引用,以下示例说明了使用@Startup
注释启动初始化的单例会话bean:
@Singleton
@Startup
public class ConfigurationBean implements Configuration {
@PostConstruct
public void initialize() {
// 1. Create the database table if it does not exist.
// 2. Initialize settings from the database table.
// 3. Load a cache.
// 4. Initiate asynchronous work (for example, work to a messaging queue or to
// calls to asynchronous session bean methods.
}
// ...
}
如果您使用的是EJB 3.1,它是Java EE 6规范的一部分,那么这是应用程序初始化的标准方法。 WebSphere 8和8.5支持此规范级别。
如果您使用的是旧版本的WebSphere或规范,并且您不想升级,那么您可以使用Startup Beans,这是在以前的版本中用于此目的的WebSphere扩展。
也是Udo的回答+1。
答案 1 :(得分:2)
我不确定是否有针对websphere的生命周期监听器。但是,您可以创建在启动时初始化的虚拟servlet。
<servlet>
<display-name>YourServlet</display-name>
<servlet-name>YourServlet</servlet-name>
<servlet-class>com.example.YourServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>YourServlet</servlet-name>
<url-pattern>/YourServlet</url-pattern>
</servlet-mapping>
您不需要调用该servlet。它将加载自己。
答案 2 :(得分:2)
使用Java EE ServletContextListener?