java - Can't start JMXConnectorServer -


i connect application via jmx remotely, i've created following configuration in main method:

mbeanserver mbs = managementfactory.getplatformmbeanserver(); jmxserviceurl url = new jmxserviceurl("service:jmx:rmi:///jndi/rmi://localhost:7890/jmxrmi"); map<string, object> envconf = new hashmap<>(); //my custom authenticator envconf.put(jmxconnectorserver.authenticator, new myauthenticator(jmxusername, jmxpassword)); jmxconnectorserver cs = jmxconnectorserverfactory.newjmxconnectorserver(url, envconf, mbs); cs.start(); 

here how start application:

java -dcom.sun.management.jmxremote       -dcom.sun.management.jmxremote.port=7890      -dcom.sun.management.jmxremote.authenticate=false       -dcom.sun.management.jmxremote.ssl=false       main 

but seems missing , following exception:

cannot bind url [rmi://localhost:7890/jmxrmi]: javax.naming.nopermissionexception [root exception java.rmi.serverexception: remoteexception occurred in server thread; nested exception is:      java.rmi.accessexception: cannot modify registry] java.io.ioexception: cannot bind url [rmi://localhost:7890/jmxrmi]: javax.naming.nopermissionexception [root exception java.rmi.serverexception: remoteexception occurred in server thread; nested exception is:      java.rmi.accessexception: cannot modify registry]     @ javax.management.remote.rmi.rmiconnectorserver.newioexception(rmiconnectorserver.java:827)     @ javax.management.remote.rmi.rmiconnectorserver.start(rmiconnectorserver.java:432)     @ test.jms.main.start(jmxmodule.java:35) caused by: javax.naming.nopermissionexception [root exception java.rmi.serverexception: remoteexception occurred in server thread; nested exception is:      java.rmi.accessexception: cannot modify registry]     @ com.sun.jndi.rmi.registry.registrycontext.bind(registrycontext.java:147)     @ com.sun.jndi.toolkit.url.genericurlcontext.bind(genericurlcontext.java:228)     @ javax.naming.initialcontext.bind(initialcontext.java:425)     @ javax.management.remote.rmi.rmiconnectorserver.bind(rmiconnectorserver.java:644)     @ 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 registry     @ sun.rmi.server.unicastserverref.olddispatch(unicastserverref.java:420)     @ sun.rmi.server.unicastserverref.dispatch(unicastserverref.java:268)     @ sun.rmi.transport.transport$1.run(transport.java:200)     @ sun.rmi.transport.transport$1.run(transport.java:197)     @ java.security.accesscontroller.doprivileged(native method)     @ sun.rmi.transport.transport.servicecall(transport.java:196)     @ sun.rmi.transport.tcp.tcptransport.handlemessages(tcptransport.java:568)     @ sun.rmi.transport.tcp.tcptransport$connectionhandler.run0(tcptransport.java:826)     @ sun.rmi.transport.tcp.tcptransport$connectionhandler.lambda$run$254(tcptransport.java:683)     @ sun.rmi.transport.tcp.tcptransport$connectionhandler$$lambda$13/8098086.run(unknown source)     @ java.security.accesscontroller.doprivileged(native method)     @ sun.rmi.transport.tcp.tcptransport$connectionhandler.run(tcptransport.java:682)     @ java.util.concurrent.threadpoolexecutor.runworker(threadpoolexecutor.java:1142)     @ java.util.concurrent.threadpoolexecutor$worker.run(threadpoolexecutor.java:617)     @ java.lang.thread.run(thread.java:745)     @ sun.rmi.transport.streamremotecall.exceptionreceivedfromserver(streamremotecall.java:276)     @ sun.rmi.transport.streamremotecall.executecall(streamremotecall.java:253)     @ sun.rmi.server.unicastref.invoke(unicastref.java:379)     @ sun.rmi.registry.registryimpl_stub.bind(unknown source)     @ com.sun.jndi.rmi.registry.registrycontext.bind(registrycontext.java:141)     ... 8 more caused by: java.rmi.accessexception: cannot modify registry     @ sun.management.jmxremote.singleentryregistry.bind(singleentryregistry.java:76)     @ sun.rmi.registry.registryimpl_skel.dispatch(unknown source)     @ sun.rmi.server.unicastserverref.olddispatch(unicastserverref.java:410)     @ sun.rmi.server.unicastserverref.dispatch(unicastserverref.java:268)     @ sun.rmi.transport.transport$1.run(transport.java:200)     @ sun.rmi.transport.transport$1.run(transport.java:197)     @ java.security.accesscontroller.doprivileged(native method)     @ sun.rmi.transport.transport.servicecall(transport.java:196)     @ sun.rmi.transport.tcp.tcptransport.handlemessages(tcptransport.java:568)     @ sun.rmi.transport.tcp.tcptransport$connectionhandler.run0(tcptransport.java:826)     @ sun.rmi.transport.tcp.tcptransport$connectionhandler.lambda$run$254(tcptransport.java:683)     @ sun.rmi.transport.tcp.tcptransport$connectionhandler$$lambda$13/8098086.run(unknown source)     @ java.security.accesscontroller.doprivileged(native method)     @ sun.rmi.transport.tcp.tcptransport$connectionhandler.run(tcptransport.java:682)     @ java.util.concurrent.threadpoolexecutor.runworker(threadpoolexecutor.java:1142)     @ java.util.concurrent.threadpoolexecutor$worker.run(threadpoolexecutor.java:617)     @ java.lang.thread.run(thread.java:745) 

could please point me wrong?

the problem didn't have rmi registry running, running command in console:

rmiregistry 

or adding line of code before start of server:

locateregistry.createregistry(1099); 

solves issue.


Comments