title: Java: no security manager: RMI class loader disabled
body: <p>Hi I have RMI application and now I try to invoke some methods at server from my client. I have following code:</p>
  
  <pre><code>public static void main(final String[] args) {
      try {
          //Setting the security manager
  
          System.setSecurityManager(new RMISecurityManager());
          IndicatorsService server = (IndicatorsService) Naming
                  .lookup("rmi://localhost/" + IndicatorsService.SERVICE_NAME);
          DataProvider provider = new OHLCProvider(server);
          server.registerOHLCProvider(provider);
      } catch (MalformedURLException e) {
          e.printStackTrace();
      } catch (RemoteException e) {
          e.printStackTrace();
      } catch (NotBoundException e) {
          e.printStackTrace();
      }
  }
  </code></pre>
  
  <p>server Is correctly loaded, but when I am trying to call <code>server.registerOHLCProvider(provider);</code> I get these errors:</p>
  
  <pre><code>     java.rmi.ServerException: RemoteException occurred in server thread; nested exception is: 
      java.rmi.UnmarshalException: error unmarshalling arguments; nested exception is: 
      java.lang.ClassNotFoundException: sk.xorty.client.providers.OHLCProvider (no security manager: RMI class loader disabled)
      at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:336)
      at sun.rmi.transport.Transport$1.run(Transport.java:159)
      at java.security.AccessController.doPrivileged(Native Method)
      at sun.rmi.transport.Transport.serviceCall(Transport.java:155)
      at sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:535)
      at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(TCPTransport.java:790)
      at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:649)
      at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
      at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
      at java.lang.Thread.run(Thread.java:662)
      at sun.rmi.transport.StreamRemoteCall.exceptionReceivedFromServer(StreamRemoteCall.java:255)
      at sun.rmi.transport.StreamRemoteCall.executeCall(StreamRemoteCall.java:233)
      at sun.rmi.server.UnicastRef.invoke(UnicastRef.java:142)
      at sk.fri.statistics.service.impl.IndicatorsServiceImpl_Stub.registerOHLCProvider(Unknown Source)
      at sk.fri.statistics.service.Client.main(Client.java:61)
  Caused by: java.rmi.UnmarshalException: error unmarshalling arguments; nested exception is: 
      java.lang.ClassNotFoundException: sk.xorty.client.providers.OHLCProvider (no security manager: RMI class loader disabled)
      at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:296)
      at sun.rmi.transport.Transport$1.run(Transport.java:159)
      at java.security.AccessController.doPrivileged(Native Method)
      at sun.rmi.transport.Transport.serviceCall(Transport.java:155)
      at sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:535)
      at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(TCPTransport.java:790)
      at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:649)
      at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
      at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
      at java.lang.Thread.run(Thread.java:662)
  Caused by: java.lang.ClassNotFoundException: sk.xorty.client.providers.OHLCProvider (no security manager: RMI class loader disabled)
      at sun.rmi.server.LoaderHandler.loadClass(LoaderHandler.java:375)
      at sun.rmi.server.LoaderHandler.loadClass(LoaderHandler.java:165)
      at java.rmi.server.RMIClassLoader$2.loadClass(RMIClassLoader.java:620)
      at java.rmi.server.RMIClassLoader.loadClass(RMIClassLoader.java:247)
      at sun.rmi.server.MarshalInputStream.resolveClass(MarshalInputStream.java:197)
      at java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1574)
      at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1495)
      at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1731)
      at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1328)
      at java.io.ObjectInputStream.readObject(ObjectInputStream.java:350)
      at sun.rmi.server.UnicastRef.unmarshalValue(UnicastRef.java:306)
      at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:290)
      ... 9 more
  </code></pre>
  
  <p>I have added my policy file as VM argument, here is how it looks like:</p>
  
  <pre><code>grant {
      permission java.security.AllPermission;
  }
  </code></pre>
  
  <p>It keeps saying something about disabled classloading, so I guess problem is somewhere there ...
  Thanks!</p>