Отредактировал мой ответ, чтобы он был более правильным и выделил информацию, упомянутую Трейси:
По умолчанию EJBContainer откладывает инициализацию bean-компонентов до их первого вызова.Кроме того, ejbCreate () вызывается каждый раз, когда создается новый компонент.Экземпляры MDB не создаются до тех пор, пока один из них не запросит адаптер реляционных ресурсов (RAR);как правило, когда сообщение доставлено.Поскольку ejbCreate запускается для каждого экземпляра, поэтому, если RAR запрашивает, скажем, 50, то ejbCreate будет вызываться 50 раз.
Вы можете программно искать компонент и каким-либо образом его создавать, прежде чем он получит сообщение для запуска вашего объекта.код инициализации, но вы, вероятно, не хотите запускать код инициализации каждый раз, когда создается компонент, так что лучше всего использовать запускающий компонент.Так как вы используете EJB2.1 bean-компоненты, а Was7 EJB Container имеет «устаревший» начальный bean-компонент
В EJB3.0 были введены одиночные bean-компоненты, которые могут быть добавлены путем аннотирования класса с помощью @Singleton
@Startup
или сконфигурирован для отдельных bean-компонентов с файлом ejb-jar.xml:
<session name="[bean-name]">
<start-at-app-start value="true"/>
</session>
Перемещение вверх по версиям WAS / EJB и использование этого - ваш лучший выбор.