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

创建RMI连接器客户端

蔺劲
2023-03-14

我正在尝试连接到MBean服务器。我需要编写JMX客户端应用程序。这是用于客户端应用程序的代码。但我有一个例外

检索RMIServer存根失败:javax.naming.ServiceUnavailableException[根异常为java.rmi.ConnectException:连接拒绝主机:localhost;嵌套异常为:

谁能帮我把这个修好。

import java.io.IOException;
import javax.management.MBeanServerConnection;
import javax.management.MBeanServerInvocationHandler;
import javax.management.MalformedObjectNameException;
import javax.management.ObjectName;
import javax.management.remote.JMXConnector;
import javax.management.remote.JMXConnectorFactory;
import javax.management.remote.JMXServiceURL;


public class SystemConfigClient {

    public static final String HOST = "localhost";
    public static final String PORT = "1099";


    public static void main(String[] args) throws IOException, MalformedObjectNameException {
        JMXServiceURL url =new JMXServiceURL("service:jmx:rmi:///jndi/rmi://" + HOST + ":" +PORT+ "/jmxrmi");

        JMXConnector jmxConnector = JMXConnectorFactory.connect(url);
        MBeanServerConnection mbeanServerConnection = jmxConnector.getMBeanServerConnection();
        //ObjectName should be same as your MBean name
        ObjectName mbeanName = new ObjectName("ifs.demo1.jmx:type=SystemConfig");

        //Get MBean proxy instance that will be used to make calls to registered MBean
        SystemConfigMBean mbeanProxy =
            (SystemConfigMBean) MBeanServerInvocationHandler.newProxyInstance(
                mbeanServerConnection, mbeanName, SystemConfigMBean.class, true);

        //let's make some calls to mbean through proxy and see the results.
        System.out.println("Current SystemConfig::" + mbeanProxy.doConfig());

        mbeanProxy.setSchemaName("NewSchema");
        mbeanProxy.setThreadCount(5);

        System.out.println("New SystemConfig::" + mbeanProxy.doConfig());

        //let's terminate the mbean by making thread count as 0
        mbeanProxy.setThreadCount(0);

        //close the connection
        jmxConnector.close();
    }

}

我使用以下参数运行了这段代码。

dcom.sun.management.jmxRemote dcom.sun.management.jmxRemote.port=1099 dcom.sun.management.jmxRemote.authenticate=false dcom.sun.management.jmxRemote.ssl=false

但我有一个例外

共有1个答案

吉泰宁
2023-03-14

您是否注意到您使用的VM参数带有“d”而不是“-d”?还是只是一个错别字?正确的是:

-Dcom.sun.management.jmxremote 
-Dcom.sun.management.jmxremote.port=1099 
-Dcom.sun.management.jmxremote.authenticate=false 
-Dcom.sun.management.jmxremote.ssl=false
 类似资料:
  • 问题内容: 我有一个RMI服务器和一个桌面RMI客户端。重新启动服务器时,客户端出现错误。是否可以在不重新启动客户端的情况下重新启动RMI连接? [编辑]这是堆栈跟踪: 问题答案: 服务器终止后,您将收到一个ConnectException。之后,您可以使用Naming.lookup获取新的服务器对象。

  • 我正在尝试从另一台机器创建与基于java的套接字服务器的多个客户端连接。服务器和客户端都使用Netty 4进行NIO。在服务器端,我使用了boss和Worker group,它能够在单个linux盒上接收和服务器100000并发连接(在设置内核参数和ulimited之后)。 但是,我最终在客户端为每个连接创建了一个新线程,这导致了JVM线程限制异常。 有人能告诉我,我如何使用Netty从客户端创建

  • 我在客户端wnat纯java RMI,因为我需要能够重新启动服务器端。

  • 我正在尝试使用RMI客户机-服务器通信。我编写了以下类/接口: > 接口远程接口扩展远程 类HelloStub扩展UnicastRemoteObject实现远程接口 类服务器,我绑定了远程obj 将客户端分类如下: 我不明白为什么我必须使用interface RemoteInterface进行查找?我不能使用HelloSub类吗,它是真正的远程obj? 谢谢,再见。

  • 问题内容: 这是两个相关的问题。将它们一起发布更有意义。 问题1 我有一个node.js应用程序,它向所有客户端发出事件,所有当前客户端都将发出一个响应。如何创建所有回复到初始发射的客户端的列表,以及可以使用哪种标识来区分客户端? 问题2: 在收集已连接的客户端列表之后,我想做的就是访问一个具有行数的MySQL数据库表,并为每个客户端行分配一个表。这些行将被发回给它们各自的客户端。如何才能做到这一

  • 问题内容: RMI是否自己处理多个客户端?即 是否可以同时使用多个客户端的服务器功能? 如果没有,我该怎么做? 如果是,它如何工作?每次 调用 都会创建一个新线程吗?如果一个客户端阻止了该功能,那么下一个客户端会发生什么?等等 问题答案: 是 这个怎么运作?每次调用都会创建一个新线程吗?如果一个客户端阻止了该功能,那么下一个客户端会发生什么?等等 它为每个客户端连接创建一个线程。 如果一个客户端调