arquillian-glassfish-embedded-3.1 コンテナーを使用して、EJB3 アプリケーションをテストしようとしていました。ステートレス ejb にリソースとして注入できる単純な JDBC データソースをセットアップする方法を見つけようとしていました。
これが私が持っているものです:
@Stateless
 public class HelloEJBBean implements HelloEJB {
      @Resource(name="myDataSource")
      private DataSource datasource;
      public String sayHelloEJB(String name) {
                return "Hello " + name;
      }
}
次の内容の arquillian.xml もあります。
<?xml version="1.0"?>
<arquillian xmlns="http://jboss.com/arquillian"
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xmlns:glassfish="urn:arq:org.jboss.arquillian.container.glassfish.embedded_3">
   <glassfish:container>
      <glassfish:bindHttpPort>9090</glassfish:bindHttpPort>
      <glassfish:instanceRoot>src/test/resources</glassfish:instanceRoot>
      <glassfish:autoDelete>false</glassfish:autoDelete>
   </glassfish:container>
</arquillian>
および domain.xml と
<domain>
   <applications />
   <resources>
      <jdbc-resource pool-name="ArquillianEmbeddedOraclePool" jndi-name="myDataSource"
         object-type="user" enabled="true"/>
     <jdbc-connection-pool name="ArquillianEmbeddedOraclePool" res-type="javax.sql.DataSource"
        datasource-classname="oracle.jdbc.driver.OracleDriver">
        <property name="user" value="user"/>
        <property name="password" value="password"/>
        <property name="serverName" value="servername"/>
         <property name="DatabaseName" value="dbname"/>
        <property name="url" value="jdbc:oracle:thin:@servername:1521/dbname"/>
    </jdbc-connection-pool>
   </resources>
</domain>
簡単なテストは次のようになります。
@RunWith(Arquillian.class)
public class HelloEJBTest {
    @Deployment
    public static JavaArchive createTestArchive() {
        return ShrinkWrap.create(JavaArchive.class, "helloEJB.jar")
                .addClasses(HelloEJB.class, HelloEJBBean.class);
    }
    @EJB
    private HelloEJB helloEJB;
    @Test
    public void testHelloEJB() {
        String result = helloEJB.sayHelloEJB("Michael");
        assertEquals("Hello Michael", result);
    }
}
次のエラーが表示されます。
... 108 以上 原因: com.sun.enterprise.container.common.spi.util.InjectionException: Res-Ref-Env-Property を注入しようとしている例外: myDataSource@javax.sql.DataSource@ は次のように解決されました: jndi: myDataSource @res プリンシパル: null@mail: null ランタイム プロパティなし
... 108 以上 原因: com.sun.enterprise.container.common.spi.util.InjectionException: Res-Ref-Env-Property を注入しようとしている例外: myDataSource@javax.sql.DataSource@ は次のように解決されました: jndi: myDataSource @res プリンシパル: null@mail: null ランタイム プロパティなし
どんな助けでも大歓迎です。
ありがとう