Witam wszystkich,
Napisałem aplikację webowa oraz serwer, z którym za pomocą servletu
komunikuje sie ta aplikacja. Komunikacja za pomocą RMI. Gdy działałem na
Tomcacie wbudowanym w NetBeans'a wszystko było ok, ale gdy przerzuciłem
aplikację na zwykłego Tomcata to już nie działa komunikacja z serwerem.
Wyskakuje następujący wyjątek:
Exception in thread
"ContainerBackgroundProcessor[StandardEngine[Catalina]]"
java.security.AccessControlException: access denied
(java.lang.RuntimePermission setContextClassLoader)
at
java.security.AccessControlContext.checkPermission(AccessControlContext.java:264)
at
java.security.AccessController.checkPermission(AccessController.java:427)
at java.lang.SecurityManager.checkPermission(SecurityManager.java:532)
at java.lang.Thread.setContextClassLoader(Thread.java:1306)
at
org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1573)
at
org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.run(ContainerBase.java:1558)
at java.lang.Thread.run(Thread.java:595)
Domyslam się, że chodzi o prawa aplikacji webowej i że trzeba zrobić
plik policy. Zrtobiłem plik o nazwie catalina.policy i umiescilem w
katalogu WEB-INF aplikacji. Zawiera on taką treść:
grant codeBase "file:${tomcat.home}/webapps/TestAdmin/-" {
permission java.net.SocketPermission
"*:1024-65535", "connect";
permission java.security.AllPermission;
permission java.lang.RuntimePermission "setContextClassLoader"
};
Ale niestety to nie działa. Mógłby mi ktoś wyjaśnić co źle robię? Może
nazwa pliku zła lub położenie? A może zawartość? Bardzo proszę o pomoc:)
Pozdrawiam Tomek