0

しばらくの間、Tomcat サーバーと戦っていますが、まだ機能しません。Debian Wheezyでtomcat7をPostgreSQL v9.1と共に使用しています。私は可能な限りすべてを試しましたが、ここに私が得続けているものがあります:

database.DataBaseException: Database error while trying to get a new connection. Error information: org.apache.commons.dbcp.SQLNestedException: Cannot create JDBC driver of class '' for connect URL 'null'
database.Connection$.getConnection(Connection.scala:20)
database.Users$.createRegisteredUser(Users.scala:58)
controllers.page.CreateAccountController.before(CreateAccountController.scala:36)
controllers.page.AbstractPageController.processRequest(AbstractPageController.scala:52)
controllers.page.AbstractPageController.doPost(AbstractPageController.scala:79)
javax.servlet.http.HttpServlet.service(HttpServlet.java:641)
javax.servlet.http.HttpServlet.service(HttpServlet.java:722)

アプリケーションとTomcatサーバーを実行しているときにアプリケーションページにアクセスできます。これまでのところ、Tomcatを十分に構成しましたが、データベースへのリクエストを伴うアクション(ユーザーの作成)を行うとすぐになど)、このエラーが発生します。

Web アプリケーションの一般的なコンテキストについては、既存のプロジェクトの支援を開始しました。tomcat7 をインストールし、ラップトップにソースを複製しました。それは他の人々がそれに取り組んでいるとうまくいきます - そして私はこれまでのところアプリケーションコードに何の変更も加えていません (コードは正常に動作します): したがって、エラーは間違いなく私の tomcat 構成から来ており、コードからではありません.

Web アプリケーション用に Tomcat7 サーバーを構成するには、META-INF/ ディレクトリに context.xml を作成する必要があります。また、データ ソースの を WEB-INF/web.xml ファイルに追加しましたが、tomcat7 アプリケーション データ ソースが正常に機能することは必須ではないようです。META-INF/context.xml ファイルを .xml を使用して Catalina/localhost/ ディレクトリにコピー アンド ペーストしました。postgres jdbc jar を /usr/share/tomcat7/lib に追加しました (conf/lib について話しているフォーラムの投稿をたくさん見てきましたが、見つからないので、この lib だと思いました)

私は tomcat context.xml ファイルなどの微調整について読んだことがありますが、長所と短所があり、とにかく私にとってもうまくいきません。

これが私のcontext.xmlファイルです:

<?xml version="1.0" encoding="UTF-8"?>

<Context>
  <Resource name="jdbc/dbname"
            auth="Container"
            type="javax.sql.DataSource"
            username="user1"
            password="user1"
            driverClassName="org.postgresql.Driver"
        url="jdbc:postgresql://localhost:5432/dbname"
            maxActive="8"
            maxIdle="4"/>
   <Environment name="encryptionKey" type="java.lang.String" value="<the key>" override="false"/>
</Context>

WEB-INF/web.xml に追加したもの:

<resource-ref>
        <res-ref-name>jdbc/dbname</res-ref-name>
        <res-type>javax.sql.DataSource</res-type>
        <res-auth>Container</res-auth>
    </resource-ref>

すべてが始まるコードサンプル (アプリケーションは scala で記述):

private val ds: DataSource = new javax.naming.InitialContext().lookup("java:comp/env/jdbc/dbname").asInstanceOf[DataSource]
    private var connec: java.sql.Connection = null

    def getConnection(): java.sql.Connection = {
        try {
            if (connec == null) {
                connec = ds.getConnection() //here is raised the error
                connec.setAutoCommit(false)
            }
            connec
        } catch {
            case ex: SQLException => throw new DataBaseException("Database error while trying to get a new connection. Error information: " + ex.toString())
        }
    }

context.xml なしで、Catalina/localhost ディレクトリにある if のコピーなしでアプリケーションを実行しようとしましたが、同じエラーが発生します。サーバーが context.xml ファイルを見つけられないだけだと思いますか?

最後に、自分の context.xml をプロジェクトの他の人々と比較しましたが、彼らはまったく同じものを持っていて、彼らのために機能します (彼らが選択したものに依存するデータベース名とパスワードを除く)...また、ポート 5432 が正しいポートであることも確認しました。

はい、かなり不可解です!

より精度が必要な場合 (関連する情報が不足している可能性があります)、遠慮なく私に質問してください。

4

0 に答える 0