我试图使用 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 无运行时属性
任何帮助表示赞赏。
谢谢