1

我试图使用 arquillian-glassfish-embedded-3.1 容器来测试和 EJB3 应用程序。我试图弄清楚如何设置一个简单的 JDBC 数据源,该数据源可以作为资源注入到无状态 ejb。

这是我所拥有的:

@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