2013-05-24 5 views
14

Ich versuche, warum einjavax.naming.NameNotFoundException: Name ist in diesem Kontext nicht gebunden. Nicht gefunden

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

wirft meine Web-Anwendung, um herauszufinden, wenn eine Schwester ein, von dem ich die Konfiguration Kopieren bin ruhig läuft.

ich habe:

  1. erstellen von Netbeans eine neue Ausdauer durch einen Rechtsklick und „neue Beharrlichkeit“ Auswahl, ich über die tatsächlichen Werte nicht kümmern Ich gebe aber ich brauche nur für die Datei persistence.xml im richtigen Verzeichnis erstellt werden.
  2. bearbeitet meine context.xml wie unten das eine vom Arbeitsschwesterprojekt
  3. bearbeitet meine web.xml passend eine Ressource Datasource enthalten, wie unten
  4. bearbeitet meine persistence.xml wie unten wieder passend die gleichen Werte wie bei gezeigt die Schwesterprojektarbeit.
  5. hinzugefügt alle Bibliotheken in dem anderen Projekt in der Lib-Ordner von mir und fügen sie auch aus NetBeans, um richtig in den Krieg gebracht werden.

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> 

Jetzt ist mein syster Projekt einige-how seiner Datenbank Ordner erstellen verwaltet innen Apache-Tomcat-7.0.40/bin/BeispielDB beim Start, während meins es nicht erstellt und wirft einen Fehler wie oben.

Der Code, wo der Fehler ausgelöst wird, ist das erste Mal, dass ich mit der Datenbank verbinden:

EntityManager entityManager = PersistenceProvider.createEntityManager(); 

wo die PersistenceProvider Klasse:

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(); 
    } 
} 

ich dafür aus möglichen Gründen bin .. wenn jemand einen Vorschlag hat. Vielen Dank

+0

In meinem Fall der Schlüssel war, dass es 'java:/comp/env//' –

Antwort

12

Ok gefunden, die Tomcat-Datei server.xml muss auch konfiguriert werden, damit die Datenquelle funktioniert. So fügen Sie einfach:

<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

Ich dachte, sie nicht in der server.xml Elemente direkt zu platzieren empfohlen Datei, wie im Apache doc angegeben? –

5

Sie auch

<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" 
/> 

unter META-INF/context.xml Datei hinzufügen können (Dies wird nur auf Anwendungsebene sein).

0

ugh, nur um über meinen eigenen Fall zu iterieren, der ungefähr den gleichen Fehler ergab - in der Ressourcendeklaration (server.xml) vergewissere dich, driverClassName NICHT wegzulassen, und z. für Oracle ist es "oracle.jdbc.OracleDriver", und das die richtige JAR-Datei (z. B. ojdbc14.jar) besteht in% CATALINA_HOME%/lib

Verwandte Themen