2017-05-25 53 views
0

對於學校來說,他們讓我們連接到一個postgresDB槽通過舊的dao和tomcat。然而,給定的代碼不起作用,我現在已經停留在這裏了很多。Java/TomCat BaseDao NoInitialContextException

所以在這裏。

給出的connectiondao:

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

我們不得不在服務器細節寫入到一個context.xml文件,並導入罐子司機到Tomcat的lib文件夾(到目前爲止好)。 context.xml中是在src /主/ web應用/ META-INF目錄

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> 

建立吾道年代後,我試圖解僱他們,在主,並獲得以下錯誤:

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 

據說這是造成:

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

會有人能夠幫助,如ACC ording幻燈片/手冊這應該是它:/

在此先感謝!

p.s.我們使用Tomcat 8.5和Eclipse梓霓虹燈

編輯主類

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

} 

回答

0

你當然不應該得到那個。

你在Tomcat中正確運行這段代碼嗎?不在外面?投訴是InitialContext沒有潛在的「管道」來執行查找。通常這都是由你運行的環境管理的,除非你在Java SE應用程序中「獨立」運行它,你永遠不應該看到這一點。

+0

在Eclipse Jee Neon中運行我的主程序後,我使用Dao運行特定的dao.method時出現此錯誤。這個dao實現了dao接口和basedao超類。 (我已將主要代碼添加到上面的代碼中) – Edo

+0

您需要將代碼存入Servlet並將其部署到Tomcat中。有一個基本的步驟,你想念,但你需要澄清所有與你的班級。 –

相關問題