1

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 ランタイム プロパティなし

どんな助けでも大歓迎です。

ありがとう

4

0 に答える 0