2013-11-22 6 views
6

मुझे 4.2.7 से हिब्ररनेट 4.3.x में अपग्रेड करने में समस्या है।हाइबरनेट 4.3 + टॉमकैट 7 जेएनडीआई नाम देखने में असमर्थ

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 

मैं बिलाव 7.0.29 (7.0.47 की कोशिश की और साथ ही) और JDK 7 (V25) का उपयोग कर रहा: मैं इस अपवाद मिला है। हाइबरनेट 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

इस के अलावा, मैं किसी भी अधिक मतभेद नहीं पा सके।

मुझे इस मुद्दे के लिए कुछ समान विषय मिले, लेकिन कोई मदद नहीं मिली। किसी भी मदद के लिए धन्यवाद।

+0

क्या आपने server.xml में किसी भी डेटास्रोत को परिभाषित किया था? –

+1

नहीं, मैंने नहीं किया। क्या मैं? मैंने server.xml में किसी भी डीएस को कभी परिभाषित नहीं किया है। – vernjan

+0

किसी ने यहां एक बग रिपोर्ट पोस्ट की है: https://hibernate.atlassian.net/browse/HHH-8818 –

उत्तर

0

हाँ, यह वास्तव में छोटी गाड़ी है, क्योंकि उन्होंने session-factory काम करता है और जब कारखाने के कनेक्शन के लिए पूछा जाता है, तो उन्होंने अलग-अलग ध्यान केंद्रित किया।

तो session-factory एक नए कनेक्शन का अनुरोध करते समय इसे उपयोग करने के लिए session-factory के पीछे इसे हल करने की आवश्यकता है। हाइबरनेट के एकमात्र respolsibility में JNDI में डेटा स्रोत का समाधान

कोशिश करने के लिए, पुराने scool hibernate.cfg.xml के माध्यम से इस तरह:

<hibernate-configuration> 
    <session-factory name="data"> 
     <property name="connection.datasource">java:comp/env/jdbc/data</property> 
    ... 

और persistence.xml इस तरह के माध्यम से config हल:

<persistence version="2.0"> 
    <persistence-unit name="data"> 
     <properties> 
      <property name="hibernate.ejb.cfgfile" value="hibernate.cfg.xml"/> 

हो सकता है कि आपके hbm2ddl को तब भी hibernate.cfg.xml पर जाना चाहिए।

मज़े करें।

संबंधित मुद्दे