java.security.policy and RMI - classpath issue

154 Views Asked by At

I have an app that uses RMI and works when I have the security policy set to

//
// Allow everything for now
//
permission java.security.AllPermission;

But, when I try to lock it down with the policy below, I get this exception - which makes me think something about the classpath is off and I need to add something about classpath in the policy, but I don't know what.

Also - any idea why I have to set the socket permissions all the different ways (loopback, name, base ip)?

Caused by: java.lang.NoClassDefFoundError: Could not initialize class org.apache.logging.log4j.util.PropertiesUtil
        at org.apache.logging.log4j.status.StatusLogger.<clinit>(StatusLogger.java:78)
        at org.apache.logging.log4j.LogManager.<clinit>(LogManager.java:61)

grant codeBase "file:/C:/apps/abc/xyz/*" {
    
    //
    // Allow everything for now
    //permission java.security.AllPermission;
    
    permission java.net.SocketPermission "127.0.0.1:*", "accept,connect,resolve";
    permission java.net.SocketPermission "localhost:6990", "listen,accept,connect,resolve";
    permission java.net.SocketPermission "localhost:6993", "listen,accept,connect,resolve";
    permission java.net.SocketPermission "XPS7590.abc.local", "resolve";
    permission java.net.SocketPermission "192.168.1.125:6993", "listen,accept,connect,resolve";

    permission java.util.PropertyPermission "user.dir", "read";
    permission java.util.PropertyPermission "LicenseFilename", "read";
    permission java.util.PropertyPermission "HostId", "read";

    permission java.io.FilePermission  ".", "read";
    permission java.io.FilePermission  "C:/Apps/abc/xyz/-", "read";
    
    permission java.lang.RuntimePermission "setFactory";
    permission java.lang.RuntimePermission "createClassLoader";
    //permission java.lang.RuntimePermission "setContextClassLoader";
    

};
1

There are 1 best solutions below

0
On

This fix for this was to add the following line to my policy file.

permission java.lang.RuntimePermission "getClassLoader";