| 接口 | 描述 |
|---|---|
| RMIConnection |
RMI对象用于提出请求从客户端到MBeanServer MBeanServer在服务器端执行。
|
| RMIServer |
RMI对象用于建立一个RMI连接器连接。
|
| 类 | 描述 |
|---|---|
| RMIConnectionImpl |
RMIConnection接口的实现。
|
| RMIConnectionImpl_Stub | |
| RMIConnector |
一个远程RMI连接器连接。
|
| RMIConnectorServer |
JMX API创建连接器服务器从远程客户端基于RMI连接。
|
| RMIIIOPServerImpl |
一个
RMIServerImpl是出口通过IIOP和创造为RMI对象的出口通过IIOP的客户端连接。
|
| RMIJRMPServerImpl |
一是出口通过JRMP和创建RMI对象的出口通过JRMP客户端连接
RMIServer对象。
|
| RMIServerImpl |
RMI对象代表一个连接器服务器。
|
| RMIServerImpl_Stub |
RMI连接器是一个JMX远程API,使用RMI传输客户端请求到远程管理服务器连接器。此包定义一个RMI连接器用户需要直接引用的类,对于客户端和服务器端。它还定义了特定的类,用户通常不会直接引用,但必须定义使RMI连接器的不同实现可互操作。
RMI连接器支持RMI JRMP运输,和任选的IIOP运输。
最喜欢的连接器在JMX远程API,RMI连接器通常有一个地址,这是一个JMXServiceURL。这个地址的协议的一部分,是一个连接器,使用默认的RMI传输rmi(JRMP),或iiop一连接器使用RMI/IIOP。
有两种形式的RMI连接地址:
RMIServer RMI存根给远程访问连接服务器java对象。这个称呼,RMI存根从外部目录条目包含在URL中获得。外部目录是公认的JNDI任何目录,通常RMI注册表,LDAP,或名字。地址是覆盖在更详细的下面。
创建一个RMI连接器服务器通常的方法是对法JMXConnectorServerFactory.newJMXConnectorServer供应RMI连接器地址。MBean服务器,连接服务器连接可以被指定为一个参数的方法。另外,连接器服务器可以注册在MBean服务器MBean。
RMI连接器服务器也可以通过构建RMIConnectorServer实例创建,直接或通过MBean服务器的createMBean方法。
你可以选择RMI传输(JRMP或IIOP)通过指定rmi或iiop在serviceURL的protocol部分创建连接器服务器时。你也可以通过实例化RMIServerImpl适当的类并将其提供给RMIConnectorServer构造函数创建专门的连接器服务器。
如果你指定了一个空serviceURL URL路径(可选的主机和端口后),或者如果你不指定serviceURL,然后连接服务器将制造一个新的JMXServiceURL,客户可以使用连接:
如果serviceURL看起来像:
service:jmx:rmi://host:port 然后连接服务器将产生一个RMIJRMPServerImpl和返回的JMXServiceURL看起来像:
service:jmx:rmi://host:port/stub/XXXX 在XXXX是序列化形式的存根生成的对象,编码base64不换行。
如果serviceURL看起来像:
service:jmx:iiop://host:port 然后连接服务器将产生一个RMIIIOPServerImpl和返回的JMXServiceURL看起来像:
service:jmx:iiop://host:port/ior/IOR:XXXX 在IOR:XXXX是标准的CORBA为生成的对象互操作对象引用的编码。
如果没有serviceURL,必须有一个用户提供的RMIServerImpl。如果toStub方法对该对象返回Stub实例,然后连接服务器将使用iiop形式上产生JMXServiceURL。否则,它将使用rmi表生成一个JMXServiceURL。
在一个用户提供的serviceURL是可选的host。如果存在,它被复制到生成的JMXServiceURL但忽略。如果缺席,所产生的JXMServiceURL将本地主机名。
在一个用户提供的serviceURL也是可选的port。如果存在,它也复制到生成的JMXServiceURL;否则,产生的JMXServiceURL没有港口。使用rmi协议,一个serviceURL的port,如果存在,表明什么端口生成远程对象应该是出口。它没有其他效果。
如果用户提供了一个RMIServerImpl而不是JMXServiceURL,然后生成的JMXServiceURL将在其host部分本地主机名和没有port。
作为一种替代生成的地址描述,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可以省略。
连接器服务器将生成基于协议的RMIServerImpl(rmi或iiop),为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.factory和jmx.remote.rmi.server.socket.factory在给RMIConnectorServer构造函数的environment指定。这些属性值的类型必须是RMIClientSocketFactory和RMIServerSocketFactory,分别。这些工厂创造与连接器相关的RMI对象时使用。
RMI连接器客户端通常采用JMXConnectorFactory,与JMXServiceURL,rmi或iiop作为它的协议。
如果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连接。
使用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解释更详细。
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.