EJB プロジェクトに依存する Maven Web アプリケーションがあります。
<dependency>
<groupId>${project.groupId}</groupId>
<artifactId>soar-ejb</artifactId>
<version>1.0</version>
<type>jar</type>
</dependency>
EJB プロジェクトではenv-entry
、ejb-jar.xml
次のように を追加しました。
<?xml version="1.0" encoding="UTF-8"?>
<ejb-jar xmlns = "http://java.sun.com/xml/ns/javaee"
version = "3.1"
xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation = "http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/ejb-jar_3_1.xsd">
<enterprise-beans>
<session>
<env-entry>
<description>Config file</description>
<env-entry-name>configFileLocation</env-entry-name>
<env-entry-type>java.lang.String</env-entry-type>
<env-entry-value>dropbox-config.properties</env-entry-value>
</env-entry>
</session>
</enterprise-beans>
</ejb-jar>
arquillian を使用して EJB プロジェクトをテストしましたが、次のように使用してこの値を注入できます@Resource
。 @Resource(name = "configFileLocation") private String configFile;
ここで、ejb 依存関係を使用して .war をビルドすると、EJB プロジェクトを含む .war が .jar 内に取得されWEB-INF\lib
ます。この EJB プロジェクト内 (つまり、.jar 内) のejb-jar.xml
ファイルは適切な META-INF
ディレクトリにあります。
しかし今、サーバーにデプロイすると、@Resource
インジェクションは機能しません。はString
常にnull
です。私が読んだことによるとejb-jar.xml
、EJB プロジェクト内と maven が生成する .war 内の両方で正しい場所にあります。
誰かが私が間違って構成したことを知っていますか?
ありがとう!
編集:
セッション要素を次のように変更しました
<session>
<description>An EJB that loads configuration from a file</description>
<display-name>ConfigurationProducer</display-name>
<ejb-name>ConfigurationProducer</ejb-name>
<ejb-class>com.trf.util.DropboxConfigFileProducer</ejb-class>
<session-type>Stateless</session-type>
<env-entry>
<description>Location of the config file</description>
<env-entry-name>configFileLocation</env-entry-name>
<env-entry-type>java.lang.String</env-entry-type>
<env-entry-value>dropbox-config.properties</env-entry-value>
</env-entry>
</session>