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();
}
}
}
在Eclipse Jee Neon中運行我的主程序後,我使用Dao運行特定的dao.method時出現此錯誤。這個dao實現了dao接口和basedao超類。 (我已將主要代碼添加到上面的代碼中) – Edo
您需要將代碼存入Servlet並將其部署到Tomcat中。有一個基本的步驟,你想念,但你需要澄清所有與你的班級。 –