Файл ejb-jar.xml
служит тем же целям для EJB, что и файл web.xml
для сервлетов.Синтаксис XML для внедрения в EJB такой же, как синтаксис XML для внедрения в сервлет, за исключением того, что в ejb-jar.xml
он вложен в корпоративный компонент, а не только на уровне модуля.Из вашего примера это будет примерно так:
<env-entry>
<env-entry-name>minBalance</env-entry-name>
<env-entry-type>java.lang.Integer</env-entry-type>
<env-entry-value>500</env-entry-value>
<injection-target>
<injection-target-class>com.company.MyService.sync.com.MyServiceSyncOutboundCom</injection-target-class>
<injection-target-name>name of field or method</injection-target-name>
</injection-target>
</env-entry>
Вы можете внедрять только те классы, которые будут созданы контейнером;так, например, сервлеты создаются веб-контейнером;Экземпляры и перехватчики EJB создаются контейнером EJB.
Ваш класс Configs
не является классом, управляемым контейнером, поэтому не может быть целью внедрения.Я могу придумать пару вариантов, которые все еще могут быть добавлены в него:
1 - В вашем ejb-jar.xml
просто объявите его как синглтон-бин;затем введите ваши env-entry
значения в него.Затем вы можете внедрить одноэлементный компонент Configs
в другие компоненты.Хотя, возможно, нестандартно, ejb-jar.xml
может объявить любой класс в пути к классам приложения как EJB.
2 - Объявить Confg
как управляемый компонент CDI и использовать аннотацию @Inject
.CDI не имеет ничего подобного web.xml
или ejb-jar.xml
, поэтому вам придется использовать аннотации при использовании CDI.