如何为DataStore设置jndi.properties?

时间:2010-05-03 15:53:24

标签: java hibernate jpa datasource jndi

我正在努力使用JPA / Hibernate将Java程序连接到MySQL。

当我尝试拨打createEntityManagerFactory()时,我目前收到以下错误:

[main] ERROR org.hibernate.connection.DatasourceConnectionProvider - Could not find datasource: java:jdbc/myDataDS
javax.naming.NoInitialContextException: Need to specify class name in environment or system property, or as an applet parameter, or in an application resource file:  java.naming.factory.initial
at javax.naming.spi.NamingManager.getInitialContext(NamingManager.java:645)
at javax.naming.InitialContext.getDefaultInitCtx(InitialContext.java:288)
at javax.naming.InitialContext.getURLOrDefaultInitCtx(InitialContext.java:325)
at javax.naming.InitialContext.lookup(InitialContext.java:392)
at org.hibernate.connection.DatasourceConnectionProvider.configure(DatasourceConnectionProvider.java:75)

谷歌搜索似乎表明我在我的类路径中需要META-INF中的jndi.properties文件,但我似乎无法找到有关该文件应该包含在我的案例中的任何信息。

编辑:暂时我正在独立运行。

1 个答案:

答案 0 :(得分:0)

jndi.properties文件应该位于类路径的根目录,并且通常包含JNDI服务器的URL和要使用的初始上下文工厂。例如,使用JBoss:

java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory
java.naming.provider.url=jnp://localhost:1099

但是,在使用Hibernate时,您应该在hibernate.cfg.xml中声明这些属性。例如,使用WebLogic:

<property name="jndi.class">weblogic.jndi.WLInitialContextFactory</property>
<property name="jndi.url">t3://127.0.0.1:7001</property>