0

接続プールを作成しました。

Eclipse でサーバーを起動するとすべて正常に動作しますが、webapps フォルダーにデプロイしてから Eclipse の外部で実行しようとすると、接続プールから接続を取得できません (サーブレット コードのこの行から 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();

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>

どんな助けでも大歓迎です。

4

1 に答える 1

0

Eclipse は、次の 3 つの場所のいずれかを使用するように tomcat を構成できます。

  1. ワークスペースのメタデータを使用する
  2. Tomcat インストールを使用する
  3. カスタムの場所を使用

デフォルトでは、オプション 1 を使用します。つまり、Tomcat スタンドアロンと同じコンテキスト ファイルを使用していません。これは、日食が見ていることを意味します。

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

Tomcat スタンドアロンが検索する際の構成について

$TOMCAT_ROOT/conf

アプリケーション コンテキスト ファイルを使用していて、アプリに名前が付けられていると仮定するとmyapp、コンテキスト ファイルが次の場所に適切にデプロイされていることを確認する必要があります。

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

war ファイルに含まれ/META-INF/context.xmlている場合$TOMCAT_ROOT/conf/Catalina/localhost/myapp.xmlは、war を tomcat webapps フォルダーに配置したときと同様に、自動的にデプロイされます。ただし、これが起こらないバグがあったため、手動でコピーする必要がある場合があります。

于 2013-05-24T18:23:15.633 に答える