title: Can't start JMXConnectorServer
body: <p>I would like to connect to my application via JMX remotely, so I've created following configuration in main method:</p>
  
  <pre><code>MBeanServer mbs = ManagementFactory.getPlatformMBeanServer();
  JMXServiceURL url = new JMXServiceURL("service:jmx:rmi:///jndi/rmi://localhost:7890/jmxrmi");
  Map&lt;String, Object&gt; envConf = new HashMap&lt;&gt;();
  //My custom authenticator
  envConf.put(JMXConnectorServer.AUTHENTICATOR, new MyAuthenticator(jmxUsername, jmxPassword));
  JMXConnectorServer cs = JMXConnectorServerFactory.newJMXConnectorServer(url, envConf, mbs);
  cs.start();
  </code></pre>
  
  <p>Here is how I start my application:</p>
  
  <pre><code>java -Dcom.sun.management.jmxremote 
       -Dcom.sun.management.jmxremote.port=7890
       -Dcom.sun.management.jmxremote.authenticate=false 
       -Dcom.sun.management.jmxremote.ssl=false 
       Main
  </code></pre>
  
  <p>But it seems that something is missing and I get following exception:</p>
  
  <pre><code>Cannot bind to URL [rmi://localhost:7890/jmxrmi]: javax.naming.NoPermissionException [Root exception is java.rmi.ServerException: RemoteException occurred in server thread; nested exception is: 
      java.rmi.AccessException: Cannot modify this registry]
  java.io.IOException: Cannot bind to URL [rmi://localhost:7890/jmxrmi]: javax.naming.NoPermissionException [Root exception is java.rmi.ServerException: RemoteException occurred in server thread; nested exception is: 
      java.rmi.AccessException: Cannot modify this registry]
      at javax.management.remote.rmi.RMIConnectorServer.newIOException(RMIConnectorServer.java:827)
      at javax.management.remote.rmi.RMIConnectorServer.start(RMIConnectorServer.java:432)
      at test.jms.Main.start(JmxModule.java:35)
  Caused by: javax.naming.NoPermissionException [Root exception is java.rmi.ServerException: RemoteException occurred in server thread; nested exception is: 
      java.rmi.AccessException: Cannot modify this registry]
      at com.sun.jndi.rmi.registry.RegistryContext.bind(RegistryContext.java:147)
      at com.sun.jndi.toolkit.url.GenericURLContext.bind(GenericURLContext.java:228)
      at javax.naming.InitialContext.bind(InitialContext.java:425)
      at javax.management.remote.rmi.RMIConnectorServer.bind(RMIConnectorServer.java:644)
      at javax.management.remote.rmi.RMIConnectorServer.start(RMIConnectorServer.java:427)
      ... 4 more
  Caused by: java.rmi.ServerException: RemoteException occurred in server thread; nested exception is: 
      java.rmi.AccessException: Cannot modify this registry
      at sun.rmi.server.UnicastServerRef.oldDispatch(UnicastServerRef.java:420)
      at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:268)
      at sun.rmi.transport.Transport$1.run(Transport.java:200)
      at sun.rmi.transport.Transport$1.run(Transport.java:197)
      at java.security.AccessController.doPrivileged(Native Method)
      at sun.rmi.transport.Transport.serviceCall(Transport.java:196)
      at sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:568)
      at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(TCPTransport.java:826)
      at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.lambda$run$254(TCPTransport.java:683)
      at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler$$Lambda$13/8098086.run(Unknown Source)
      at java.security.AccessController.doPrivileged(Native Method)
      at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:682)
      at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
      at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
      at java.lang.Thread.run(Thread.java:745)
      at sun.rmi.transport.StreamRemoteCall.exceptionReceivedFromServer(StreamRemoteCall.java:276)
      at sun.rmi.transport.StreamRemoteCall.executeCall(StreamRemoteCall.java:253)
      at sun.rmi.server.UnicastRef.invoke(UnicastRef.java:379)
      at sun.rmi.registry.RegistryImpl_Stub.bind(Unknown Source)
      at com.sun.jndi.rmi.registry.RegistryContext.bind(RegistryContext.java:141)
      ... 8 more
  Caused by: java.rmi.AccessException: Cannot modify this registry
      at sun.management.jmxremote.SingleEntryRegistry.bind(SingleEntryRegistry.java:76)
      at sun.rmi.registry.RegistryImpl_Skel.dispatch(Unknown Source)
      at sun.rmi.server.UnicastServerRef.oldDispatch(UnicastServerRef.java:410)
      at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:268)
      at sun.rmi.transport.Transport$1.run(Transport.java:200)
      at sun.rmi.transport.Transport$1.run(Transport.java:197)
      at java.security.AccessController.doPrivileged(Native Method)
      at sun.rmi.transport.Transport.serviceCall(Transport.java:196)
      at sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:568)
      at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(TCPTransport.java:826)
      at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.lambda$run$254(TCPTransport.java:683)
      at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler$$Lambda$13/8098086.run(Unknown Source)
      at java.security.AccessController.doPrivileged(Native Method)
      at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:682)
      at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
      at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
      at java.lang.Thread.run(Thread.java:745)
  </code></pre>
  
  <p>Could you please point me where am I wrong?</p>