You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@tomcat.apache.org by Johnny Tolliver <jx...@ornl.gov> on 2006/02/23 21:38:40 UTC

Access permission exceptions when calling RMI from within Tomcat servlet.

I have a simple RMI server that I need a Tomcat servlet to access.

A very simple command-line app accesses the RMI server just fine with the
following code:

registry = LocateRegistry.getRegistry (host);
xxx = (XXX) registry.lookup (name);

But when I move the same code into my servlet I get strange access permission
exceptions. The exception traces back to a "caused by" access denied having to
do with java.util.logging.LoggingPermission, which eventually leads back to
some JULI code.

Any ideas what's going on here? Thanks. The full stacktrace is here:

(Actually, the RMI registry call is made from a thread that was launched by a
servlet, but the point is that it is in Java code launched by and running
under the control of Tomcat.)

Exception in thread "Thread-36" java.lang.ExceptionInInitializerError
        at sun.rmi.transport.tcp.TCPEndpoint.<clinit>(TCPEndpoint.java:104)
        at java.rmi.registry.LocateRegistry.getRegistry(LocateRegistry.java:158)
        at java.rmi.registry.LocateRegistry.getRegistry(LocateRegistry.java:106)
        at java.rmi.registry.LocateRegistry.getRegistry(LocateRegistry.java:89)
        at gov.sensornet.rftrax.VandyPositionClient.<init>(VandyPositionClient.java:53)
        at gov.sensornet.rftrax.SocketHandlerThread.<init>(SocketHandlerThread.java:68)
        at gov.sensornet.rftrax.SocketAcceptThread.run(SocketAcceptThread.java:119)
Caused by: java.security.AccessControlException: access denied (java.util.logging.LoggingPermission control)
        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.util.logging.LogManager.checkAccess(LogManager.java:927)
        at java.util.logging.Logger.setParent(Logger.java:1331)
        at org.apache.juli.ClassLoaderLogManager$2.run(ClassLoaderLogManager.java:377)
        at java.security.AccessController.doPrivileged(Native Method)
        at org.apache.juli.ClassLoaderLogManager.doSetParentLogger(ClassLoaderLogManager.java:375)
        at org.apache.juli.ClassLoaderLogManager.addLogger(ClassLoaderLogManager.java:120)
        at java.util.logging.Logger.getLogger(Logger.java:232)
        at sun.rmi.runtime.Log$LoggerLogFactory.createLog(Log.java:154)
        at sun.rmi.runtime.Log.getLog(Log.java:121)
        at sun.rmi.transport.Transport.<clinit>(Transport.java:43)
        ... 7 more
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:1572)
        at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.run(ContainerBase.java:1557)
        at java.lang.Thread.run(Thread.java:595)


Johnny S. Tolliver
Oak Ridge National Laboratory
tolliverjs@ornl.gov, 865-574-1305




---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@tomcat.apache.org
For additional commands, e-mail: users-help@tomcat.apache.org