2013-05-24 4 views
14

मैं पता लगाने के लिए क्यों मेरे वेब अनुप्रयोग एकjavax.naming.NameNotFoundException: नाम इस संदर्भ में बाध्य नहीं है।

javax.naming.NameNotFoundException: Name [flexeraDS] is not bound in this Context. Unable to find [flexeraDS]. 

फेंकता है जब एक बहन एक जहाँ से मैं विन्यास चुपचाप चलाता को कॉपी कर रहा हूँ कोशिश कर रहा हूँ खोजने में असमर्थ।

मेरे पास है:

  1. NetBeans से राइट क्लिक करके एक नया दृढ़ता और "नया हठ" बनाने के लिए, मैं वास्तविक मान मैं दे के बारे में परवाह नहीं है, लेकिन मैं सिर्फ persistence.xml फ़ाइल के लिए की जरूरत है सही निर्देशिका में बनाया जाना है।
  2. काम कर बहन परियोजना से एक से मेल खाते नीचे के रूप में मेरे context.xml संपादित
  3. एक संसाधन डेटा स्रोत को रोकने के लिए मेरे web.xml संपादित के रूप में नीचे
  4. दिखाया संपादित मेरी persistence.xml नीचे के रूप में फिर से एक ही मान है जिस पर मिलान बहन परियोजना काम करते हैं।
  5. ने मेरी परियोजना के lib फ़ोल्डर के अंदर अन्य परियोजनाओं में मौजूद सभी पुस्तकालयों को जोड़ा और उन्हें नेटबीन से भी सही ढंग से युद्ध के अंदर रखा गया।

context.xml

<?xml version="1.0" encoding="UTF-8"?> 
<Context antiJARLocking="true" path="/PetLogin"> 
    <ResourceLink global="ds/flexeraDS" name="ds/flexeraDS" type="javax.sql.DataSource"/> 
</Context> 

web.xml

<?xml version="1.0" encoding="UTF-8"?> 
<web-app ....> 
<resource-ref> 
     <description>DB Connection</description> 
     <res-ref-name>ds/flexeraDS</res-ref-name> 
     <res-type>javax.sql.DataSource</res-type> 
     <res-auth>Container</res-auth> 
    </resource-ref> 
</web-app> 

persistence.xml

<?xml version="1.0" encoding="UTF-8"?> 
<persistence version="1.0" 
      xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
      xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd "> 
    <persistence-unit name="flexerajpa"> 
     <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider> 
     <non-jta-data-source>java:/comp/env/ds/flexeraDS</non-jta-data-source> 
     <properties> 

      <property name="eclipselink.ddl-generation" value="create-tables" /> 
      <property name="eclipselink.ddl-generation.output-mode" 
         value="database" /> 
      <property name="eclipselink.weaving" value="static" /> 
      <property name="eclipselink.logging.level" value="WARNING" /> 
     </properties> 
    </persistence-unit> 
</persistence> 

अब मेरी syster परियोजना कुछ है कि कैसे अंदर अपने डेटाबेस फ़ोल्डर बनाने के लिए प्रबंधन करता है अपाचे-टोमकैट-7.0.40/बिन/उदाहरण डीबी स्टार्टअप पर जबकि मेरा इसे नहीं बनाता है और ऊपर की तरह एक त्रुटि फेंकता है।

EntityManager entityManager = PersistenceProvider.createEntityManager(); 

जहां PersistenceProvider वर्ग है:

कोड जहां त्रुटि फेंक दिया जाता है पहली बार मैं डेटाबेस से कनेक्ट है

public final class PersistenceProvider 
{ 

    private static Map<String, Object> lOptions = new HashMap<String, Object>(); 

    static 
    { 
     lOptions.put(PersistenceUnitProperties.CACHE_SHARED_DEFAULT, "false"); 
    } 
    private static EntityManagerFactory factory = Persistence 
      .createEntityManagerFactory("flexerajpa", lOptions); 

    private PersistenceProvider() 
    { 
    } 

    /** 
    * @return 
    */ 
    public static EntityManager createEntityManager() 
    { 
     return factory.createEntityManager(); 
    } 

    /** 
    * @return 
    */ 
    public static Metamodel getMetamodel() 
    { 
     return factory.getMetamodel(); 
    } 
} 

मैं इस के लिए संभावित कारणों में से बाहर हूँ .. अगर किसी के पास कोई सुझाव है। धन्यवाद

+0

मेरे मामले महत्वपूर्ण हिस्सा था कि यह 'है जावा में:/COMP/env//' –

उत्तर

12

ठीक है कि टॉमकैट फ़ाइल server.xml को पता चला है कि डेटा स्रोत के लिए भी कॉन्फ़िगर किया जाना चाहिए। तो बस जोड़ें:

<Resource 
auth="Container" 
driverClassName="org.apache.derby.jdbc.EmbeddedDriver" 
maxActive="20" 
maxIdle="10" 
maxWait="-1" 
name="ds/flexeraDS" 
type="javax.sql.DataSource" 
url="jdbc:derby:flexeraDB;create=true" 
    /> 
+1

मैंने सोचा था कि यह server.xml में सीधे तत्वों जगह की सिफारिश नहीं है फ़ाइल, जैसा कि अपाचे दस्तावेज़ में निर्दिष्ट है? –

5

तुम भी META-INF/context.xml फ़ाइल के तहत

<Resource 
auth="Container" 
driverClassName="org.apache.derby.jdbc.EmbeddedDriver" 
maxActive="20" 
maxIdle="10" 
maxWait="-1" 
name="ds/flexeraDS" 
type="javax.sql.DataSource" 
url="jdbc:derby:flexeraDB;create=true" 
/> 

जोड़ सकते हैं (यह केवल आवेदन के स्तर पर हो जाएगा)।

0

उह, बस अपने स्वयं के मामले में फिर से शुरू करने के लिए, जिसने लगभग एक ही त्रुटि दी - संसाधन घोषणा (server.xml) में ड्राइवर क्लासनाम को छोड़ना सुनिश्चित नहीं है, और उदाहरण के लिए ओरेकल के लिए यह "oracle.jdbc.OracleDriver" है, और यह सही JAR फ़ाइल (उदा। ojdbc14।जार)% CATALINA_HOME%/lib में मौजूद है

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