当前位置: 首页 > 知识库问答 >
问题:

jmx无法连接到本地主机

井礼骞
2023-03-14

试图连接一个简单的JMX监控。托管应用程序和监控工具位于同一台html" target="_blank">服务器上。当试图连接一个错误

00:30:55610致命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。位于com.m.a.s.SiteListener.contextInitialized(SiteListener.java:51),位于org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:3972),位于com.ma.s.SiteListener.getMBeanConnect(SiteListener.java:73),位于位于org.aapache.catalina.core.StandardContext.literStart的com.m.a.a.SiteListener.makeJmxConnection(SiteListiner.java:93),位于位于org.apache.catalina.manager.HTMLManagerServlet.service(HttpServlet.java:617org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206(StandardContextValve.java:191)位于org.apache.catalina.authenticator.authenticator Base.invoke(AuthentiatorBase.java:558位于org.apache.coyote.http11.Http11Processor.java:857的org.apacher.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)位于org.aapache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEnppoint.java:489)位于java.lang.Thread。run(未知源)原因:javax.naming。ServiceUnavailableException[Root exception is java.rmi.ConnectException:Connection rejected to host:localhost;nested exception:com.sun.jndi.rmi.RegistryContext处的Connection rejected]。com.sun.jndi.toolkit.url.GenericURLContext上的lookup(未知源)。javax.naming.InitialContext上的lookup(未知源)。在javax.management.remote.rmi.RMIConnector上查找(未知源)。findRMIServerJNDI(未知源),位于javax.management.remote.rmi.RMIConnector。findRMIServer(未知源)…还有26个原因:java.rmi。ConnectException:连接拒绝主机:localhost;嵌套异常是:java.net。ConnectException:在sun.rmi.transport.tcp.TCPEndpoint拒绝连接。sun.rmi.transport.tcp.tcp频道的newSocket(未知源)。sun.rmi.transport.tcp.TCPChannel上的createConnection(未知源)。sun.rmi.server.UnicastRef上的newConnection(未知源)。sun.rmi.registry.RegistryImpl_Stub上的newCall(未知源)。lookup(未知源)…还有31个原因:java.net。ConnectException:连接在java.net.PlainSocketImpl被拒绝。位于java.net.AbstractPlainSocketImpl的socketConnect(本机方法)。doConnect(未知源),位于java.net.AbstractPlainSocketImpl。connectToAddress(未知源),位于java.net.AbstractPlainSocketImpl。connect(未知源),网址为java.net.SocksSocketImpl。connect(未知源),网址为java.net.Socket。connect(未知源),网址为java.net.Socket。connect(未知源),网址为java.net.Socket。(未知来源),网址为java.net.Socket。(未知来源),位于sun.rmi.transport.proxy.RMIDirectSocketFactory。createSocket(未知源),位于sun.rmi.transport.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连接。结果是一样的。

共有1个答案

吕飞翼
2023-03-14

我不知道你在哪里设置了你的看跌期权号码。你在哪里缺少代码

String host = "localhost";  // or some x.y.z
int port = setyourPortNumber;
String url = "service:jmx:rmi:///jndi/rmi://localhost:22414/MServer"; // where you get services

我希望它能帮助你得到想法

 类似资料:
  • 使用VisualVM,我可以看到两种类型来连接远程主机。 > jstatd 所以我正在尝试使用JMX,我学习了很多教程,但到目前为止还没有成功。 目前,有我的桌面和一个运行java服务器应用程序的linux盒子。我正在尝试在桌面上设置VisualVM客户端,以查看在linux Box上运行的java应用程序。 我为Linux上的java应用程序在start.sh脚本上添加了以下JAVA_OPTS脚

  • 我有一个 Spring 引导项目,其中我使用 spring-boot-starter-actuator 和 io.dropwizard.metrics。 它生成我可以使用 url http://myapplication/metrics 访问的指标。我将应用程序部署在 Wildfly 10 独立服务器上。 我想使用jmx读取jconsole上的指标。我将应用程序配置为使用JMXReporter发送

  • 这让我很困惑。 我有一个运行nginx-php-fpm的本地开发设置,我在其中使用.localhost作为每个项目的工作域。昨天Chrome停止了与本地域的合作。相反,它只是返回被拒绝的连接。DevTools将错误显示为net::ERR\u CONNECTION\u RESET。 访问http://127.0.0.1工作,但当然不适用于本地项目。 Safari继续与.localhost一起工作。

  • 问题内容: 我正在尝试使用PyMySQL连接到本地主机上的MySQL: 但是(在Python 2.7和Python 3.2上)我得到了错误: socket.error:[Errno 111]连接被拒绝 pymysql.err.OperationalError:(2003年,“无法连接到’localhost’(111)上的MySQL服务器”) 我确定mysqld正在运行,因为我可以使用command

  • 我试图测试一些普罗米修斯度量,通过推动到本地push网关。push网关docker映像正在运行,当我使用:http://localhost:9091/metrics时,我可以在浏览器中看到它 然而,当我运行python脚本来推送指标时,我得到一个404错误。 错误:urllib2。HTTPError:HTTP错误404:未找到 推送地址中有我遗漏的东西吗?我已尝试添加/度量,但存在相同的错误

  • 我试图连接到一个名为的数据库。所有凭据都位于PHP文件名中,格式为 我正试图用这个连接到数据库 我得到这个错误: 注意:第6行的未定义变量:DB_HOST in/home/content/06/8274306/html/beta/mysuperscript.php 注意:未定义变量:第6行 /home/content/06/8274306/html/beta/mysuperscript.phpDB