I have a working webapp called ExamOnline, developed under Netbeans 6. Netbeans creates a war file for the project (called ExamOnline.war), which deploys and runs happily on the bundled Tomcat 6.0.14 server.
The webapp connects to a MySQL database with no problem. The project uses the Connector/J driver, which is contained in the mysql-connector-java-5.0.6
-bin.jar file. Netbeans includes this jar file in the ExamOnline.war file, in the directory WEB-INF\lib
I am now trying to get the webapp to run with the Tomcat security manager enabled. The error I get is :
com.mysql.jdbc.exceptions.
MySQLNonTr
ansientCon
nectionExc
eption: Server connection failure during transaction. Due to underlying exception: 'java.security.AccessContr
olExceptio
n: access denied (java.net.SocketPermission
localhost resolve)'.
** BEGIN NESTED EXCEPTION **
java.security.AccessContro
lException
MESSAGE: access denied (java.net.SocketPermission
localhost resolve)
STACKTRACE:
java.security.AccessContro
lException
: access denied (java.net.SocketPermission
localhost resolve)
at java.security.AccessContro
lContext.c
heckPermis
sion(Acces
sControlCo
ntext.java
:323)
at java.security.AccessContro
ller.check
Permission
(AccessCon
troller.ja
va:546)
at java.lang.SecurityManager.
checkPermi
ssion(Secu
rityManage
r.java:532
)
at java.lang.SecurityManager.
checkConne
ct(Securit
yManager.j
ava:1031)
at java.net.InetAddress.getAl
lByName0(I
netAddress
.java:1145
)
at java.net.InetAddress.getAl
lByName(In
etAddress.
java:1083)
at java.net.InetAddress.getAl
lByName(In
etAddress.
java:1019)
at com.mysql.jdbc.StandardSoc
ketFactory
.connect(S
tandardSoc
ketFactory
.java:163)
at com.mysql.jdbc.MysqlIO.<in
it>(MysqlI
O.java:268
)
at com.mysql.jdbc.Connection.
createNewI
O(Connecti
on.java:28
94)
at com.mysql.jdbc.Connection.
<init>(Con
nection.ja
va:1553)
at com.mysql.jdbc.NonRegister
ingDriver.
connect(No
nRegisteri
ngDriver.j
ava:285)
at java.sql.DriverManager.get
Connection
(DriverMan
ager.java:
582)
at java.sql.DriverManager.get
Connection
(DriverMan
ager.java:
185)
at examonline.DbConnection.<i
nit>(DbCon
nection.ja
va:24)
<remainder deleted>
I believe that , I have to set the catalina.policy permissions for the webapp, but am having no luck. The entries I have tried so far are :
grant codeBase "file:${catalina.home}/web
apps/ExamO
nline/WEB-
INF/lib/co
m/mysql/jd
bc/-" {
permission java.security.AllPermissio
n;
permission java.net.SocketPermission "127.0.0.1", "listen,connect,accept,res
olve";
permission java.net.SocketPermission "localhost", "listen,connect,accept,res
olve";
permission java.net.SocketPermission "127.0.0.1:25", "listen,connect,accept,res
olve";
permission java.net.SocketPermission "localhost:25", "listen,connect,accept,res
olve";
permission java.net.SocketPermission "127.0.0.1:3306", "listen,connect,accept,res
olve";
permission java.net.SocketPermission "localhost:3306", "listen,connect,accept,res
olve";};
grant codeBase "file:${catalina.home}/web
apps/examo
nline/WEB-
INF/lib/co
m/mysql/jd
bc/-" {
permission java.security.AllPermissio
n;
permission java.net.SocketPermission "127.0.0.1", "listen,connect,accept,res
olve";
permission java.net.SocketPermission "localhost", "listen,connect,accept,res
olve";
permission java.net.SocketPermission "127.0.0.1:25", "listen,connect,accept,res
olve";
permission java.net.SocketPermission "localhost:25", "listen,connect,accept,res
olve";
permission java.net.SocketPermission "127.0.0.1:3306", "listen,connect,accept,res
olve";
permission java.net.SocketPermission "localhost:3306", "listen,connect,accept,res
olve";};
grant codeBase "jar:file:${catalina.home}
/webapps/E
xamOnline/
WEB-INF/li
b/mysql-co
nnector-ja
va-5.0.6-b
in.jar!/-"
{
permission java.security.AllPermissio
n;
permission java.net.SocketPermission "127.0.0.1", "listen,connect,accept,res
olve";
permission java.net.SocketPermission "localhost", "listen,connect,accept,res
olve";
permission java.net.SocketPermission "127.0.0.1:25", "listen,connect,accept,res
olve";
permission java.net.SocketPermission "localhost:25", "listen,connect,accept,res
olve";
permission java.net.SocketPermission "127.0.0.1:3306", "listen,connect,accept,res
olve";
permission java.net.SocketPermission "localhost:3306", "listen,connect,accept,res
olve";};
grant codeBase "jar:file:${catalina.home}
/webapps/e
xamonline/
WEB-INF/li
b/mysql-co
nnector-ja
va-5.0.6-b
in.jar!/-"
{
permission java.security.AllPermissio
n;
permission java.net.SocketPermission "127.0.0.1", "listen,connect,accept,res
olve";
permission java.net.SocketPermission "localhost", "listen,connect,accept,res
olve";
permission java.net.SocketPermission "127.0.0.1:25", "listen,connect,accept,res
olve";
permission java.net.SocketPermission "localhost:25", "listen,connect,accept,res
olve";
permission java.net.SocketPermission "127.0.0.1:3306", "listen,connect,accept,res
olve";
permission java.net.SocketPermission "localhost:3306", "listen,connect,accept,res
olve";};
grant codeBase "file:/Documents and Settings/Tom/.netbeans/6.0
/jdbc-driv
ers/com/my
sql/jdbc/-
" {
permission java.security.AllPermissio
n;
permission java.net.SocketPermission "127.0.0.1", "listen,connect,accept,res
olve";
permission java.net.SocketPermission "localhost", "listen,connect,accept,res
olve";
permission java.net.SocketPermission "127.0.0.1:25", "listen,connect,accept,res
olve";
permission java.net.SocketPermission "localhost:25", "listen,connect,accept,res
olve";
permission java.net.SocketPermission "127.0.0.1:3306", "listen,connect,accept,res
olve";
permission java.net.SocketPermission "localhost:3306", "listen,connect,accept,res
olve";};
grant codeBase "jar:file:/Documents and Settings/Tom/.netbeans/6.0
/jdbc-driv
ers/mysql-
connector-
java-5.0.6
-bin.jar!/
-" {
permission java.security.AllPermissio
n;
permission java.net.SocketPermission "127.0.0.1", "listen,connect,accept,res
olve";
permission java.net.SocketPermission "localhost", "listen,connect,accept,res
olve";
permission java.net.SocketPermission "127.0.0.1:25", "listen,connect,accept,res
olve";
permission java.net.SocketPermission "localhost:25", "listen,connect,accept,res
olve";
permission java.net.SocketPermission "127.0.0.1:3306", "listen,connect,accept,res
olve";
permission java.net.SocketPermission "localhost:3306", "listen,connect,accept,res
olve";};
grant codeBase "file:${catalina.home}/web
apps/ExamO
nline/WEB-
INF/lib/co
m/mysql/jd
bc/*" {
permission java.security.AllPermissio
n;
permission java.net.SocketPermission "127.0.0.1", "listen,connect,accept,res
olve";
permission java.net.SocketPermission "localhost", "listen,connect,accept,res
olve";
permission java.net.SocketPermission "127.0.0.1:25", "listen,connect,accept,res
olve";
permission java.net.SocketPermission "localhost:25", "listen,connect,accept,res
olve";
permission java.net.SocketPermission "127.0.0.1:3306", "listen,connect,accept,res
olve";
permission java.net.SocketPermission "localhost:3306", "listen,connect,accept,res
olve";};
grant codeBase "file:${catalina.home}/web
apps/examo
nline/WEB-
INF/lib/co
m/mysql/jd
bc/*" {
permission java.security.AllPermissio
n;
permission java.net.SocketPermission "127.0.0.1", "listen,connect,accept,res
olve";
permission java.net.SocketPermission "localhost", "listen,connect,accept,res
olve";
permission java.net.SocketPermission "127.0.0.1:25", "listen,connect,accept,res
olve";
permission java.net.SocketPermission "localhost:25", "listen,connect,accept,res
olve";
permission java.net.SocketPermission "127.0.0.1:3306", "listen,connect,accept,res
olve";
permission java.net.SocketPermission "localhost:3306", "listen,connect,accept,res
olve";};
grant codeBase "file:${catalina.home}/web
apps/ExamO
nline/WEB-
INF/lib/*"
{
permission java.security.AllPermissio
n;
permission java.net.SocketPermission "127.0.0.1", "listen,connect,accept,res
olve";
permission java.net.SocketPermission "localhost", "listen,connect,accept,res
olve";
permission java.net.SocketPermission "127.0.0.1:25", "listen,connect,accept,res
olve";
permission java.net.SocketPermission "localhost:25", "listen,connect,accept,res
olve";
permission java.net.SocketPermission "127.0.0.1:3306", "listen,connect,accept,res
olve";
permission java.net.SocketPermission "localhost:3306", "listen,connect,accept,res
olve";};
grant codeBase "file:${catalina.home}/web
apps/examo
nline/WEB-
INF/lib/*"
{
permission java.security.AllPermissio
n;
permission java.net.SocketPermission "127.0.0.1", "listen,connect,accept,res
olve";
permission java.net.SocketPermission "localhost", "listen,connect,accept,res
olve";
permission java.net.SocketPermission "127.0.0.1:25", "listen,connect,accept,res
olve";
permission java.net.SocketPermission "localhost:25", "listen,connect,accept,res
olve";
permission java.net.SocketPermission "127.0.0.1:3306", "listen,connect,accept,res
olve";
permission java.net.SocketPermission "localhost:3306", "listen,connect,accept,res
olve";};
grant codeBase "file:${catalina.home}/web
apps/ExamO
nline/-" {
permission java.security.AllPermissio
n;
permission java.net.SocketPermission "127.0.0.1", "listen,connect,accept,res
olve";
permission java.net.SocketPermission "localhost", "listen,connect,accept,res
olve";
permission java.net.SocketPermission "127.0.0.1:25", "listen,connect,accept,res
olve";
permission java.net.SocketPermission "localhost:25", "listen,connect,accept,res
olve";
permission java.net.SocketPermission "127.0.0.1:3306", "listen,connect,accept,res
olve";
permission java.net.SocketPermission "localhost:3306", "listen,connect,accept,res
olve";};
grant codeBase "file:${catalina.home}/web
apps/examo
nline/-" {
permission java.security.AllPermissio
n;
permission java.net.SocketPermission "127.0.0.1", "listen,connect,accept,res
olve";
permission java.net.SocketPermission "localhost", "listen,connect,accept,res
olve";
permission java.net.SocketPermission "127.0.0.1:25", "listen,connect,accept,res
olve";
permission java.net.SocketPermission "localhost:25", "listen,connect,accept,res
olve";
permission java.net.SocketPermission "127.0.0.1:3306", "listen,connect,accept,res
olve";
permission java.net.SocketPermission "localhost:3306", "listen,connect,accept,res
olve";};
Does anyone know what entries I actually need in the catalina.policy file ? As an aside, I have found a catalina.policy file in two places :
C:\Documents and Settings\Tom\.netbeans\6.0
\apache-to
mcat-6.0.1
4_base\con
f
and
C:\Program Files\Apache Software Foundation\Apache Tomcat 6.0.14\conf
so knowing which version is used would be a good start. Thanks in advance.
Start Free Trial