Java 为什么从JNDI.properties注入后在JNDI中找不到数据源?

Java 为什么从JNDI.properties注入后在JNDI中找不到数据源?,java,hibernate,maven-2,jpa,openejb,Java,Hibernate,Maven 2,Jpa,Openejb,这是我的persistence.xml: <persistence> <persistence-unit name="MyUnit"> <provider>org.hibernate.ejb.HibernatePersistence</provider> <jta-data-source>jdbc/abcDS</jta-data-source> </persistence-unit> &l

这是我的
persistence.xml

<persistence>
  <persistence-unit name="MyUnit">
    <provider>org.hibernate.ejb.HibernatePersistence</provider>
    <jta-data-source>jdbc/abcDS</jta-data-source>
  </persistence-unit>
</persistence>
这是测试类:

public class FinderTest {
  @BeforeClass
  public static void startEJB() throws Exception {
    InitialContext ic = new InitialContext();
    ic.lookup("jdbc/abcDS");
  }
}
不幸的是,数据源没有创建,这是我一直看到的:

[...]
javax.naming.NameNotFoundException: Name "jdbc/abcDS" not found.
at org.apache.openejb.core.ivm.naming.IvmContext.federate(IvmContext.java:193)
at org.apache.openejb.core.ivm.naming.IvmContext.lookup(IvmContext.java:150)
at org.apache.openejb.core.ivm.naming.IvmContext.lookup(IvmContext.java:124)
at org.apache.openejb.core.ivm.naming.ContextWrapper.lookup(ContextWrapper.java:115)
at javax.naming.InitialContext.lookup(InitialContext.java:392)
at com.XXX.FinderTest.startEJB(FinderTest.java:31)
[...]
我做错了什么?请帮忙

顺便说一句,它是这样工作的(发生了什么事?)


如果查找
openejb:Resource/jdbc/abcDS

你也能得到。基本上,你:

  • 添加一个空的
    src/test/resources/META-INF/application client.xml
    ejb jar.xml
  • 使用
    @LocalClient
  • 调用initialContext.bind(“注入”,this)
  • 请参阅中的
    testcase注入
    示例

    编辑如果查找仍然失败,请发布日志输出(控制台输出)。

    @Thorbjørn没有“服务器”,这是一个测试运行周期。。实际上,它是一个嵌入式OpenEJB,而不是一个真正的应用服务器。
    [...]
    javax.naming.NameNotFoundException: Name "jdbc/abcDS" not found.
    at org.apache.openejb.core.ivm.naming.IvmContext.federate(IvmContext.java:193)
    at org.apache.openejb.core.ivm.naming.IvmContext.lookup(IvmContext.java:150)
    at org.apache.openejb.core.ivm.naming.IvmContext.lookup(IvmContext.java:124)
    at org.apache.openejb.core.ivm.naming.ContextWrapper.lookup(ContextWrapper.java:115)
    at javax.naming.InitialContext.lookup(InitialContext.java:392)
    at com.XXX.FinderTest.startEJB(FinderTest.java:31)
    [...]
    
    ic.lookup("java:/openejb/Resource/jdbc/abcDS");