У меня есть MDB EJB со статическим блоком внутри него. Я использовал статический блок для инициализации некоторых компонентов только один раз при первом запуске приложения (т. Е. При развертывании). MDB EJB развертывается на отдельном сервере (My_Server), отличном от Admin_Server.Статический блок называется дважды, может быть, несколькими загрузчиками классов?
Проблема в том, что статический блок вызывается дважды!
- Первый раз: только после развертывания MDB EJB (tageted к my_server).
- Второй раз: после очереди JMS (с которой связан MDB) получает сообщение.
Кроме того, я напечатал имя сервера и идентификатор процесса, и они же в обоих:
System.out.println("server name: " + System.getProperty("weblogic.Name"));
System.out.println("pid: " + ManagementFactory.getRuntimeMXBean().getName().split("@")[0]);
Я также заметил, что некоторые странное поведение. В основном, я приложил Крюк выключения (изнутри статического блока), чтобы отправить мне электронную почту при завершении работы приложения.
- Я получил уведомление после того, как остановил My_Server.
- Я получил уведомление также после завершения работы Admin_Server.
Как я могу решить эту проблему?
Некоторые дополнительные сведения:
Weblogic version: 10.3.0
EJB version: 3.0
+1 Благодарю вас за ответ. Мне нужно сделать некоторые инициализации только один раз во время развертывания. Единственная аннотация JJB, которую я знаю, это '@ PostConstruct', и это неверно, так как Weblogic иногда создает несколько экземпляров MDB. Что вы подразумеваете под «Какой сервер приложений вы используете»? –