嘗試連接簡單的JMX監視。託管應用程序和監視工具位於同一臺服務器上。當試圖連接錯誤jmx無法連接到本地主機
00:30:55610 FATAL HTTP-8080-6 SiteListener:makeJmxConnection:99 - 產生java.io.IOException:無法檢索的RMIServer存根: javax.naming.ServiceUnavailableException [根異常是 java.rmi.ConnectException:連接拒絕主機:localhost; 嵌套異常是:java.net.ConnectException:連接在javax.management.remote.rmi.RMIConnector.connect(未知來源) 在javax.management.remote.JMXConnectorFactory.connect(未知 源)在 拒絕] COM .masSiteListener.makeJmxConnection(SiteListener.java:93)at com.masSiteListener.getMBeanConnect(SiteListener.java:73)at com.masSiteListener.contextInitialized(SiteListener.java:51)at org.apache.catalina。 core.StandardContext.listenerStart(StandardContext.java:3972) at org.apache.catalina.core.StandardContext.start(StandardContext.java:4467) at org.apache.catalina.core.StandardContext.r電子負載(StandardContext.java:3228) 在 org.apache.catalina.manager.ManagerServlet.reload(ManagerServlet.java:918) 在 org.apache.catalina.manager.HTMLManagerServlet.reload(HTMLManagerServlet.java:545) 在 org.apache.catalina.manager.HTMLManagerServlet.doGet(HTMLManagerServlet.java:121) 在javax.servlet.http.HttpServlet.service(HttpServlet.java:617)在 javax.servlet.http.HttpServlet.service (HttpServlet.java:717)在 org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290) 在 org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) 在 org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233) 在 org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191) 在 org.apache.catalina.authenticator .AuthenticatorBase.invoke(AuthenticatorBase.java:558) 在 org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127) 在 org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java :102) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.jav一:298) 在 org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:857) 在 org.apache.coyote.http11.Http11Protocol $ Http11ConnectionHandler.process(Http11Protocol.java:588) 在 org.apache.tomcat.util.net.JIoEndpoint $ Worker.run(JIoEndpoint.java:489) at java.lang.Thread.run(Unknown Source)引起者: javax.naming.ServiceUnavailableException [根異常是 java.rmi.ConnectException:連接拒絕主機:localhost; 嵌套異常是:java.net.ConnectException:連接被拒絕] at com.sun.jndi.rmi.registry.RegistryContext.lookup(Unknown Source) at com.sun.jndi.toolkit.url.GenericURLContext.lookup(Unknown源代碼) at javax.naming.InitialContext.lookup(Unknown Source)at javax.management.remote.rmi.RMIConnector。findRMIServerJNDI(Unknown Source)at javax.management.remote.rmi.RMIConnector.findRMIServer(Unknown Source) ... 26更多原因:java.rmi.ConnectException:連接被拒絕 to host:localhost;嵌套的異常是:java.net.ConnectException: 連接被拒絕在 sun.rmi.transport.tcp.TCPEndpoint.newSocket(未知源)在 sun.rmi.transport.tcp.TCPChannel.createConnection(未知源)在 太陽.rmi.transport.tcp.TCPChannel.newConnection(Unknown Source)at sun.rmi.server.UnicastRef.newCall(Unknown Source)at sun.rmi.registry.RegistryImpl_Stub.lookup(Unknown Source)... 31更多 由於:java.net.ConnectException:連接被拒絕 java.net.PlainSocketImpl.socketConnect(本地方法) java.net.AbstractPlainSocketImpl.doConnect(未知源) java.net.AbstractPlainSocketImpl.connectToAddress(未知源)在 jav (未知來源) java.net.SocksSocketImpl.connect(未知來源) java.net.Socket.connect(來源不明) java.net.Socket.connect(未知來源)在 java.net.Socket中。(未知來源)在 java.net.Socket中。(未知來源)處 sun.rmi.transport sun.rmi.transport.proxy.RMIDirectSocketFactory.createSocket(未知 源)。 proxy.RMIMasterSocketFactory.createSocket(未知 源)... 36多個
在服務器上,開放訪問,以便
private static void startJmxServer() throws MalformedURLException, IOException {
Map<String, Object> props = new HashMap<String, Object>();
RemouteAuthentificator auth = new RemouteAuthentificator();
props.put("jmx.remote.authenticator", auth);
JMXServiceURL url = new JMXServiceURL("service:jmx:rmi:///jndi/rmi://localhost:22414/MServer");
MBeanServer mbeanSrv = ManagementFactory.getPlatformMBeanServer();
JMXConnectorServer server = JMXConnectorServerFactory.newJMXConnectorServer(url, props, mbeanSrv);
server.start();
log.info("JMX RMI Agent has been bound on address: " + url);
}
在Tomcat中下一個管理工具,嘗試連接
static private MBeanServerConnection makeJmxConnection(String objectName)
{
// objectName = 「MServer:name=Settings」;
MBeanServerConnection mConnect = null;
try
{
String[] credentials = new String[] {"server", "password"};
Map<String, String[]> props = new HashMap<String, String[]>();
props.put("jmx.remote.credentials", credentials);
JMXServiceURL url = new JMXServiceURL(「service:jmx:rmi:///jndi/rmi://localhost:22414/MServer」);
jmxc = JMXConnectorFactory.connect(url, props);
mConnect = jmxc.getMBeanServerConnection();
mbeanName = new ObjectName(objectName);
}
catch(Exception e)
{
log.fatal("", e);
}
return mConnect;
}
並試圖通過外部IP連接。結果是一樣的。
勞駕您分享本地主機連接源代碼 –