Mam problem z uaktualnieniem do wersji Hibrernate 4.3.x z wersji 4.2.7. Mam ten wyjątek:Hibernate 4.3 + Tomcat 7 Nie można wyszukać nazwy 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
Używam Tomcat 7.0.29 (wypróbowany 7.0.47) i JDK 7 (v25). Nie ma problemu z Hibernate 4.2.7.
Oto moja 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>
Ale nie sądzę, że problem jest tutaj. Zrobiłem trochę badań diagnostycznych i dowiedziałem się, że:
JndiServiceImpl#locate(String jndiName)
tworzy kontekst początkowy, który jest inny.
4.3.0 - org.apache.naming.NamingContext
4.2.7 - org.apache.naming.SelectorContext
wyjątkiem tego, że nie można znaleźć żadnych więcej różnic.
Znalazłem kilka podobnych tematów dla tego problemu, ale nic z pomocy. Dzięki za pomoc.
Czy zdefiniowałeś jakiekolwiek źródło danych w pliku server.xml? –
Nie, nie zrobiłem tego. Czy powinienem? Nigdy nie zdefiniowałem żadnego DS w pliku server.xml. – vernjan
Ktoś wysłał raport o błędzie tutaj: https://hibernate.atlassian.net/browse/HHH-8818 –