윈도우 상에서 개발을 하다가 임시 서버로 Ubuntu 9.04 Server를 설치하고
MySQL로 JDBC접속을 하려는데 이게 무슨...
MySQL로 JDBC접속을 하려는데 이게 무슨...
java.net.SocketException: java.security.AccessControlException: access denied (java.net.SocketPermission 192.168.1.253:3306누구한테 말하고 있는거지 난...
connect,resolve)
이런 에러만 나오고 접속이 되질 않았습니다...
구글링을 해도 찾기 어렵고...
원인은 java policy 파일에 제한이 걸려있기 때문인데
톰캣은 자바의 policy file을 사용하지 않고 자체적으로 policy file을 유지한다고 합니다.
해당파일 (/etc/tomcat6/policy.d/04webapps.policy)을 열어서 다음의 행을 찾아
// ========== WEB APPLICATION PERMISSIONS =====================================
// These permissions are granted by default to all web applications
// In addition, a web application will be given a read FilePermission
// and JndiPermission for all files and directories in its document root.
grant {
밑에 한줄을 추가해줍니다. "127.0.0.1:3306" 부분은 MySQL접속주소입니다.
permission java.net.SocketPermission "127.0.0.1:3306","connect,resolve,listen,accept";
...
policy 파일들을 열어보다보니 03catalina.policy 파일에
이런 내용이 들어있습니다.
// These permissions apply to the servlet API classes
// and those that are shared across all class loaders
// located in the "lib" directory
grant codeBase "file:${catalina.home}/lib/-" {
permission java.security.AllPermission;
};
Catalina Home 디렉토리에 lib 디렉토리에 있는 모든 파일에 대해 허가를 준거 같은데...
왜 안된건지 모르겠습니다... Catalina Home 설정 안해서 그랬을지도 모르겠네요...