0

我创建了一个连接池。

在 Eclipse 上启动服务器时一切正常但是当我部署到 webapps 文件夹然后尝试在 eclipse 之外运行时,我无法从连接池中获得连接(我从 servlet 代码中的这一行得到一个 nullpointerexception :

pstmt  = conn.prepareStatement(query);

代码片段:

小服务程序代码:

Context env = null;


try {

  env = new InitialContext();
  pool = (javax.sql.DataSource) env.lookup("java:/comp/env/jdbc/postgres");
  conn = pool.getConnection();

上下文.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>

任何帮助,将不胜感激。

4

1 回答 1

0

Eclipse 可以配置 tomcat 以使用 3 个位置之一:

  1. 使用工作区元数据
  2. 使用tomcat安装
  3. 使用自定义位置

默认情况下,它使用选项 1。这意味着它不使用与独立的 tomcat 相同的上下文文件。这意味着日食正在寻找:

$WORKSPACE_ROOT/.metadata/.plugins/org.eclipse.wst.server.core/tmpX/conf/

对于它的配置,而 tomcat Standalone 将查看

$TOMCAT_ROOT/conf

假设您正在使用应用程序上下文文件并且您的应用程序已命名myapp,您需要确保您的上下文文件正确部署到:

$TOMCAT_ROOT/conf/Catalina/localhost/myapp.xml

如果您的战争文件包含/META-INF/context.xml应该会自动部署,就像$TOMCAT_ROOT/conf/Catalina/localhost/myapp.xml您将战争放在 tomcat webapps 文件夹中一样。但是,有些错误不会发生这种情况,因此您可能仍需要手动复制

于 2013-05-24T18:23:15.633 回答