4

我有一个应用程序 EAR 部署到 WebSphere。如何为应用程序创建一个生命周期侦听器,该侦听器应在每次启动应用程序时调用一次性初始化代码?我需要有一些类似于 WebLogic Server 的类weblogic.application.ApplicationLifeCyleListenerweblogic.application.ApplicationLifecycleEvent.

4

3 回答 3

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。

于 2012-10-13T09:50:12.617 回答
2

使用 Java EE ServletContextListener吗?

于 2012-10-16T16:48:56.593 回答
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。它会自行加载。

于 2012-10-13T06:51:49.910 回答