连接池在eclipse上运行时工作,而不是在eclipse之外工作

时间:2013-05-24 18:09:59

标签: tomcat7 connection-pooling postgresql-9.1

我创建了一个连接池。

在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>

任何帮助都将不胜感激。

1 个答案:

答案 0 :(得分:0)

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

  1. 使用工作区元数据
  2. 使用tomcat安装
  3. 使用自定义位置
  4. 默认情况下,它使用选项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。但是,有一些错误没有发生,所以你可能仍然需要手动复制

相关问题