0

当尝试访问从数据库读取的 servlet 时,出现以下错误:

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

更改您的资源名称;

   java:comp/env/jdbc/testapp

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

首先将 jdbc 代码编写为一个简单的 java 程序,不要忘记将 jdbc 驱动程序添加为外部 jar 文件。您也可以尝试将 jdbc jar 文件放在 tomcat lib 文件夹或 jre/lib/ext 文件夹中,这是因为当 servlet 编译时,它会借助 cse 中的 lib jar 文件将其放入第 3 方 jar 中。如果 jdbc 连接代码没有错误,它将在添加 jar 文件后运行文件

于 2012-08-08T20:37:13.253 回答