我無法從4.2.7升級到Hibrernate 4.3.x。我得到這個例外:Hibernate 4.3 + Tomcat 7無法查找JNDI名稱
Caused by: javax.naming.NameNotFoundException: Name [java:comp/env/jdbc/data] is not bound in this Context. Unable to find [java:comp].
at org.apache.naming.NamingContext.lookup(NamingContext.java:820)
at org.apache.naming.NamingContext.lookup(NamingContext.java:154)
at javax.naming.InitialContext.lookup(InitialContext.java:415)
at org.hibernate.engine.jndi.internal.JndiServiceImpl.locate(JndiServiceImpl.java:114)
... 82 more
我使用Tomcat 7.0.29(試用7.0.47以及)和JDK 7(v25)。 Hibernate 4.2.7沒有問題。
這裏是我的persistence.xml:
<persistence-unit name="data" transaction-type="RESOURCE_LOCAL">
<non-jta-data-source>java:comp/env/jdbc/data</non-jta-data-source>
<properties>
<property name="hibernate.dialect" value="org.hibernate.dialect.MySQLDialect" />
<property name="hibernate.hbm2ddl.auto" value="update" />
<property name="hibernate.show_sql" value="false" />
<property name="hibernate.format_sql" value="true" />
</properties>
</persistence-unit>
但我不認爲這個問題是在這裏。我做了一些調試研究,發現如下:
JndiServiceImpl#locate(String jndiName)
創建一個不同的初始上下文。
4.3.0 - org.apache.naming.NamingContext
4.2.7 - org.apache.naming.SelectorContext
除此之外,我找不到任何更多的差異。
我發現這個問題有些類似的話題,但沒有任何幫助。謝謝你的幫助。
您是否在server.xml中定義了任何數據源? –
不,我沒有。我是不是該?我從來沒有在server.xml中定義任何DS。 – vernjan
有人在這裏發佈了一個bug報告:https://hibernate.atlassian.net/browse/HHH-8818 –