对于学校来说,他们让我们通过普通的旧dao和tomcat连接到postgresDB。但是给定的代码不起作用,我现在已经被困在这里了很长时间。
所以这里。
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文件中,然后将jar驱动程序导入tomcat的lib文件夹(到目前为止一直很好)。 context.xml位于src / main / webapp / 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>
在设置我的Dao之后,我尝试在主要设备中启动它们并得到以下错误:
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");
根据幻灯片/手册,任何人都可以提供帮助:/
提前致谢!
P.S。我们正在使用tomcat 8.5和Eclipse Jee Neon
编辑主要课程
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 :(得分:0)
你当然不应该这样做。
您是否在Tomcat中运行此代码?不在外面?抱怨是InitialContext没有基础的管道和#34;进行查找。通常情况下,这一切都由您正在运行的环境管理,除非您正在运行它并且#34;独立运行&#34;在Java SE应用程序中,你永远不应该看到这一点。