我有一个应用程序 EAR 部署到 WebSphere。如何为应用程序创建一个生命周期侦听器,该侦听器应在每次启动应用程序时调用一次性初始化代码?我需要有一些类似于 WebLogic Server 的类weblogic.application.ApplicationLifeCyleListener
和weblogic.application.ApplicationLifecycleEvent
.
问问题
3491 次
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 回答