当尝试访问从数据库读取的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服务器上正确设置,我可以在相关数据库上手动连接和选择,插入等。
我做得不对?
答案 0 :(得分:0)
更改您的resourceName;
java:comp/env/jdbc/testapp
到
java://comp/env/jdbc/testapp
答案 1 :(得分:-1)
首先将jdbc代码编写为简单的java proagram,并且不要忘记将jdbc驱动程序添加为外部jar文件。 你也可以尝试将jdbc jar文件放在tomcat lib文件夹或jre / lib / ext文件夹中,这是因为当一个servlet编译时,它将获取lib jar文件的帮助。第三方罐子。如果jdbc连接代码没有错误,它将在添加jar文件后运行文件