<div> JavaScript is disabled on your browser.
Skip navigation links
Java™ Platform
Standard Ed. 8

Package javax.management.remote.rmi

RMI连接器是一个JMX远程API,使用RMI传输客户端请求到远程管理服务器连接器。

See: 描述

Package javax.management.remote.rmi Description

RMI连接器是一个JMX远程API,使用RMI传输客户端请求到远程管理服务器连接器。此包定义一个RMI连接器用户需要直接引用的类,对于客户端和服务器端。它还定义了特定的类,用户通常不会直接引用,但必须定义使RMI连接器的不同实现可互操作。

RMI连接器支持RMI JRMP运输,和任选的IIOP运输。

最喜欢的连接器在JMX远程API,RMI连接器通常有一个地址,这是一个JMXServiceURL。这个地址的协议的一部分,是一个连接器,使用默认的RMI传输rmi(JRMP),或iiop一连接器使用RMI/IIOP。

有两种形式的RMI连接地址:

地址是覆盖在更详细的下面。

创建一个RMI连接器服务器

创建一个RMI连接器服务器通常的方法是对法JMXConnectorServerFactory.newJMXConnectorServer供应RMI连接器地址。MBean服务器,连接服务器连接可以被指定为一个参数的方法。另外,连接器服务器可以注册在MBean服务器MBean。

RMI连接器服务器也可以通过构建RMIConnectorServer实例创建,直接或通过MBean服务器的createMBean方法。

选择RMI传输

你可以选择RMI传输(JRMP或IIOP)通过指定rmiiiopserviceURLprotocol部分创建连接器服务器时。你也可以通过实例化RMIServerImpl适当的类并将其提供给RMIConnectorServer构造函数创建专门的连接器服务器。

Connector addresses generated by the server

如果你指定了一个空serviceURL URL路径(可选的主机和端口后),或者如果你不指定serviceURL,然后连接服务器将制造一个新的JMXServiceURL,客户可以使用连接:

在一个用户提供的serviceURL是可选的host。如果存在,它被复制到生成的JMXServiceURL但忽略。如果缺席,所产生的JXMServiceURL将本地主机名。

在一个用户提供的serviceURL也是可选的port。如果存在,它也复制到生成的JMXServiceURL;否则,产生的JMXServiceURL没有港口。使用rmi协议,一个serviceURLport,如果存在,表明什么端口生成远程对象应该是出口。它没有其他效果。

如果用户提供了一个RMIServerImpl而不是JMXServiceURL,然后生成的JMXServiceURL将在其host部分本地主机名和没有port

Connector addresses based on directory entries

作为一种替代生成的地址描述,serviceURL提供的地址在创建连接器服务器可以指定一个目录地址存储提供或产生RMIServer存根。然后,客户端和服务器都使用此目录地址。

在这种情况下,该serviceURL有这两种形式:

service:jmx:rmi://host:port/jndi/jndi-nameservice:jmx:iiop://host:port/jndi/jndi-name

在这里,jndi-name是一个字符串,可以提供给javax.naming.InitialContext.bind

像往常一样,在host:port可以省略。

连接器服务器将生成基于协议的RMIServerImplrmiiiop),为rmi,如果任何的port。当连接器服务器启动时,它会得到一个存根从该对象使用其toStub方法和存储对象使用给定的jndi-name。该属性定义了JNDI API一样。

例如,如果JMXServiceURL是:

service:jmx:rmi://ignoredhost/jndi/rmi://myhost/myname
然后连接服务器将产生一个 RMIJRMPServerImpl和储存的存根使用JNDI名称
rmi://myhost/myname
即RMI注册表对宿主 myhost默认端口运行进入 myname。注意,RMI注册登记只允许从本地主机。所以,在这种情况下,必须 myhost姓名(或名称)的主机服务器上运行的连接器。

在这JMXServiceURL,第一rmi:指定RMI连接器,而第二rmi:指定RMI注册表。

另一个例子是,如果JMXServiceURL

service:jmx:iiop://ignoredhost/jndi/ldap://dirhost:9999/cn=this,ou=that
然后连接服务器将产生一个 RMIIIOPServerImpl和储存的存根使用JNDI名称
ldap://dirhost:9999/cn=this,ou=that
意味着对宿主 dirhost 9999端口运行LDAP目录条目 cn=this,ou=that

如果JMXServiceURL是:

service:jmx:iiop://ignoredhost/jndi/cn=this,ou=that
然后连接服务器将产生一个 RMIIIOPServerImpl和储存的存根使用JNDI名称
cn=this,ou=that
在此情况下工作,JNDI API必须被适当配置供应什么目录使用的信息。

在这些例子中,主机名ignoredhost不是由连接器服务器或客户端使用。它可以被省略,例如:

service:jmx:iiop:///jndi/cn=this,ou=that

然而,使用连接器服务器正在运行的主机的名称,是很好的做法。这通常与目录主机的名称不同。

连接器服务器属性

使用默认的JRMP运输时,RMI套接字工厂可以使用属性jmx.remote.rmi.client.socket.factoryjmx.remote.rmi.server.socket.factory在给RMIConnectorServer构造函数的environment指定。这些属性值的类型必须是RMIClientSocketFactoryRMIServerSocketFactory,分别。这些工厂创造与连接器相关的RMI对象时使用。

创建一个RMI客户端连接器

RMI连接器客户端通常采用JMXConnectorFactory,与JMXServiceURLrmiiiop作为它的协议。

如果JMXServiceURL是由服务器生成的,如上下"connector addresses generated by the server",然后客户端将需要获得直接或间接地从服务器。通常,服务器使JMXServiceURL可存储在文件或查找服务。

如果JMXServiceURL使用目录的语法,如上下"connector addresses based on directory entries",然后客户可以获得它只是解释,或者客户端和服务器都可以知道相应的目录项使用。例如,如果对小玩意儿代理连接器服务器使用入门whatsit-agent-connector在主机上的myhost RMI注册表,然后客户端和服务器都可以知道JMXServiceURL是合适的:

service:jmx:rmi:///jndi/rmi://myhost/whatsit-agent-connector

如果你有型RMIServer RMI存根,可以直接利用RMIConnector适当的构造函数构造一个RMI连接。

指定的RMI/IIOP连接器一个球体

使用IIOP传输时,客户端和服务器可以指定所使用的属性java.naming.corba.orb ORB。连接到球发生在start连接器服务器,在客户端的连接connect时间。如果java.naming.corba.orb属性包含在环境Map,那么它的价值(一ORB),用于连接IIOP存根。否则,一个新的org.omg.corba.orb是通过调用org.omg.CORBA.ORB.init((String[])null,(Properties)null)创建。后来的RMI连接器客户端或服务器在同一个JVM可以重用这个球,也可以创建另一个以同样的方式。

如果java.naming.corba.orb属性指定并没有指向一个ORB,然后IllegalArgumentException将抛出。

这里所描述的机制并不适用于当IIOP远程对象(存根或服务器)的创建和再传递给rmiconnector和rmiconnectorserver ORB手动连接。

动态代码下载

如果一个RMI连接器客户端或服务器接收来自同一个类的实例,它不知道,如果动态代码下载RMI连接是活动的,则类可以从代码库由同行指定下载。本文Dynamic code downloading using Java RMI解释更详细。

从以下版本开始:
1.5
另请参见:
JavaTM Remote Method Invocation (RMI), Java Naming and Directory InterfaceTM (JNDI), RFC 2045, section 6.8, "Base64 Content-Transfer-Encoding"
Skip navigation links
Java™ Platform
Standard Ed. 8

Submit a bug or feature
For further API reference and developer documentation, see Java SE Documentation. That documentation contains more detailed, developer-targeted descriptions, with conceptual overviews, definitions of terms, workarounds, and working code examples.
Copyright © 1993, 2014, Oracle and/or its affiliates. All rights reserved.

本帮助文档是使用 《百度翻译》翻译,请与英文版配合使用 by--QQ:654638585