现在的位置: 首页 > 综合 > 正文

Linux下tomcat设置jsp连接mysql 的问题忙了几天,终于搞定

2013年12月07日 ⁄ 综合 ⁄ 共 1289字 ⁄ 字号 评论关闭
OS: Ubuntu6.06
Tomcat: Tomcat 5.0.30
Mysql: MySQL5.0.22
mysql-connector: mysql-connector-java-3.1.14

本来安装完JDBC驱动mysql-connector-java后应该可以正常连接mysql的,
可是却碰到了这样的错误:

QUOTE:
javax.servlet.ServletException: Communications link failure due to underlying exception:

** BEGIN NESTED EXCEPTION **

java.security.AccessControlException
MESSAGE: access denied (java.net.SocketPermission localhost resolve)

root cause
com.mysql.jdbc.CommunicationsException: Communications link failure due to underlying exception:

** BEGIN NESTED EXCEPTION **

java.security.AccessControlException
MESSAGE: access denied (java.net.SocketPermission localhost resolve)

mysql 运行正常,可以在我的Apache2+PHP下连接。

很明显主要错误信息是:access denied (java.net.SocketPermission localhost resolve)
在网上找了好久,很多人都碰到了这样的问题,但是没有一个能够解决,都说是mysql的授权问题,我在mysql里grant了N遍都没用!在百度知道问了,也只有一人回答,而且还是说 mysql!
后来找到了一个类似的问题,听说是权限(tomcat security manager),于是模仿了一个他的解决方法,
编辑了tomcat目录下的policy.d/04webapps.policy,
在下面加了行:

CODE:
//added by flashlm 07-01-13
permission java.net.SocketPermission "localhost", "resolve";

其实就是用了错误信息里的:java.net.SocketPermission localhost resolve
得启tomcat,发现错误信息改变了:

QUOTE:
MESSAGE: java.security.AccessControlException: access denied (java.net.SocketPermission 127.0.0.1:3306 connect,resolve)

这次有经验了,把刚才加的那句改成:

CODE:
//added by flashlm 07-01-13
permission java.net.SocketPermission "localhost", "connect,resolve";

重启Tomcat,一切OK了,呵呵,终于连上数据库了。

抱歉!评论已关闭.