我有一个 MDB EJB,里面有静态块。我使用静态块在应用程序第一次运行时(即部署时)只初始化一些组件一次。MDB EJB 部署在除 Admin_Server 之外的单独服务器 (My_Server) 上。
问题是静态块被调用了两次!
- 第一次:就在部署 MDB EJB(标记到 My_Server)之后。
- 第二次:在 JMS 队列(与 MDB 关联)收到消息之后。
另外,我打印了服务器名称和 pid,它们在两者中都是相同的:
System.out.println("server name: " + System.getProperty("weblogic.Name"));
System.out.println("pid: " + ManagementFactory.getRuntimeMXBean().getName().split("@")[0]);
我还注意到一些奇怪的行为。基本上,我附加了一个 Shutdown Hook(从静态块内部)在应用程序关闭时向我发送电子邮件。
- 一旦我关闭 My_Server,我就会收到通知。
- 关闭 Admin_Server 后,我也会收到通知。
我该如何解决这个问题?
一些额外的信息:
Weblogic version: 10.3.0
EJB version: 3.0