0

データベースから読み取るサーブレットにアクセスしようとすると、次のエラーが発生します。

HTTP Status 500 -
...
java.lang.NullPointerException
    com.pdq.sms.db.DatabaseAccess.getConnection(DatabaseAccess.java:39)
    com.pdq.sms.db.DataRow.Read(DataRow.java:79)
    com.kessel.controllers.Home.doPost(Home.java:50)
    com.kessel.controllers.Home.doGet(Home.java:39)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:621)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
note The full stack trace of the root cause is available in the Apache Tomcat/7.0.26 logs.

Tomcat のログ ファイルを調べると、「名前 testapp はこのコンテキストにバインドされていません」というメッセージが表示されます。

これは、server.xmlの関連部分です。

<Host name="myserver.org" appBase="webapps/test" 
      unpackWARs="true" autoDeploy="true">
   <Context path="/" docBase="testapp" reloadable="false">
      <Resource name="jdbc/testapp" auth="Container"
          type="javax.sql.DataSource" maxActive="100" maxIdle="10" maxWait="10000"
          validationQuery="SELECT 1" driverClassName="com.mysql.jdbc.Driver"
          username="myuser" password="mypass"
          url="jdbc:mysql://localhost:3306/test_db?zeroDateTimeBehavior=convertToNull" />
    </Context>"
</Host>"

また、 04webapps.policyを変更して、アプリケーションに接続許可を与えました。

   permission java.net.SocketPermission "127.0.0.1:3306", "resolve, connect";

ユーザーはMySQLサーバーで適切にセットアップされています。問題のデータベースに手動で接続して選択、挿入などを行うことができます。

私は何をしていないのですか?

4

2 に答える 2

0

resourceName を変更します。

   java:comp/env/jdbc/testapp

  java://comp/env/jdbc/testapp
于 2012-08-09T04:12:47.100 に答える
-1

最初に単純な Java プログラムとして jdbc コードを記述し、jdbc ドライバーを外部 jar ファイルとして追加することを忘れないでください。また、jdbc jar ファイルを tomcat lib フォルダーまたは jre/lib/ext フォルダーに配置して試すこともできます。これは、サーブレットがコンパイルするときに、サードパーティの jar で cse の lib jar ファイルの助けを借りるためです。jdbc 接続コードにエラーがない場合は、jar ファイルを追加した後にファイルを実行します。

于 2012-08-08T20:37:13.253 に答える