2017-05-25 5 views
0

Für die Schule machen sie uns Verbindung zu einer postgresDB durch einfache alte Dao und Tomcat. Der angegebene Code funktioniert jedoch nicht und ich bin jetzt schon ziemlich lange hier festgefahren.Java/TomCat BaseDao NoInitialContextException

Also hier geht.

Die connectiondao gegeben:

package nl.hu.v1wac.firstapp.persistence; 

import java.sql.Connection; 
import javax.naming.InitialContext; 
import javax.sql.DataSource; 

public class BaseDao { 
    protected final Connection getConnection() { 
    Connection result = null; 

    try { 
     InitialContext ic = new InitialContext(); 
     DataSource ds = (DataSource)ic.lookup("java:comp/env/jdbc/PostgresDS"); 

     result = ds.getConnection(); 
    } catch (Exception ex) { 
     throw new RuntimeException(ex); 
    } 

    return result; 
    } 
} 

Wir hatten die Server-Spezifika in eine context.xml Datei zu schreiben, und das Glas Treiber in den Ordner lib tomcat (so weit so gut) importieren. Die context.xml ist im src/main/webapp/META-INF

Die context.xml

<?xml version="1.0" encoding="UTF-8"?> 
<Context> 
<Resource name="jdbc/PostgresDS" 
url="jdbc:postgresql://localhost:5432/worlddb" 
driverClassName="org.postgresql.Driver" 
auth="Container" 
type="javax.sql.DataSource" 
username="postgres" 
password="secret" /> 
</Context> 

Nach meiner Dao einrichten, ich versuche, sie in einem Haupt zu feuern und sich die folgende Fehlermeldung:

Exception in thread "main" java.lang.RuntimeException: javax.naming.NoInitialContextException: Need to specify class name in environment or system property, or as an applet parameter, or in an application resource file: java.naming.factory.initial 

die verursacht wird gesagt:

DataSource ds = (DataSource)ic.lookup("java:comp/env/jdbc/PostgresDS"); 

Würde jemand in der Lage sein zu helfen, wie acc Bestellung der Folien/Handbuch sollte dies alles sein:/

Vielen Dank im Voraus!

p.s. wir verwenden tomcat 8.5 und Eclipse Jee Neon

Edited Hauptklasse

package nl.hu.v1wac.firstapp.persistence; 

import java.sql.SQLException; 

public class Pattern { 

    public static void main(String[] args) { 
     // TODO Auto-generated method stub 
     CountryDao cdao = new CountryDaoPostgreSQL(); 
     try { 
      cdao.findALl(); 
     } catch (SQLException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 
    } 

} 

Antwort

0

Sie sollten auf jeden Fall nicht, dass bekommen.

Sie führen diesen Code in Tomcat ordnungsgemäß aus? Nicht draußen? Die Beschwerde ist, dass der InitialContext nicht die zugrunde liegende "Sanitär" hat, um die Suche zu tun. Normalerweise wird dies alles von der Umgebung verwaltet, in der Sie arbeiten. Wenn Sie es nicht "stand alone" in einer Java SE-App ausführen, sollten Sie dies nie sehen.

+0

Ich erhalte diesen Fehler, nachdem ich mein Hauptprogramm in Eclipse Jee Neon ausgeführt habe, das den Dao verwendet, um eine bestimmte Dao-Methode auszuführen. Dieser Dao implementiert die Dao-Schnittstelle und basiert auf einer Superklasse. (Ich habe den Code oben hinzugefügt) – Edo

+0

Sie müssen Ihren Code in ein Servlet und stellen Sie es in Tomcat. Es gibt einen grundlegenden Schritt, den du vermisst, aber du musst das alles mit deiner Klasse klären. –

Verwandte Themen