我创建了一个连接池。
在Eclipse上启动服务器时一切正常 但是当我部署到webapps文件夹然后尝试在eclipse之外运行时,我无法从连接池获得连接 (我在servlet代码中从这一行得到了一个nullpointerexception:
pstmt = conn.prepareStatement(query);
代码段:
servlet代码:
Context env = null;
try {
env = new InitialContext();
pool = (javax.sql.DataSource) env.lookup("java:/comp/env/jdbc/postgres");
conn = pool.getConnection();
context.xml中
<context>
<Resource name="jdbc/postgres" auth="Container" type="javax.sql.DataSource"
driverClassName="org.postgresql.Driver" url="jdbc:postgresql://localhost:5432/postgres"
docBase="postgpool" path="/postgpool" reloadable="true" source="org.eclipse.jst.j2ee.server:postgpool"
scope="Shareable"
username="postgres" password="789654" maxActive="35" maxIdle="10"
maxWait="-1" />
</context>
任何帮助都将不胜感激。
答案 0 :(得分:0)
Eclipse可以将tomcat配置为使用以下3个位置之一:
默认情况下,它使用选项1.这意味着它不使用与tomcat独立相同的上下文文件。这意味着eclipse正在寻找:
$WORKSPACE_ROOT/.metadata/.plugins/org.eclipse.wst.server.core/tmpX/conf/
对于配置,而tomcat standalone将查找
$TOMCAT_ROOT/conf
假设您正在使用应用程序上下文文件且您的应用程序名为myapp
,则需要确保将您的上下文文件正确部署到:
$TOMCAT_ROOT/conf/Catalina/localhost/myapp.xml
如果您的war文件包含/META-INF/context.xml
,当您将战争放入tomcat webapps文件夹时,应自动部署为$TOMCAT_ROOT/conf/Catalina/localhost/myapp.xml
。但是,有一些错误没有发生,所以你可能仍然需要手动复制