「rmijava服务」rmi Java
本篇文章给大家谈谈rmijava服务,以及rmi Java对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。
本文目录一览:
- 1、java RMI是什么意思啊?
- 2、如何rmi运行java程序?
- 3、Java的RMI在客户端需要放入实现类吗?
- 4、JavaRMI服务远程方法调用漏洞如何修复lin
- 5、RMI是干什么用的在JAVA里面
java RMI是什么意思啊?
RMI 指的是远程方法调用 (Remote Method Invocation)。它是一种机制,能够让在某个 Java 虚拟机上的对象调用另一个 Java 虚拟机中的对象上的方法。可以用此方法调用的任何对象必须实现该远程接口。调用这样一个对象时,其参数为 "marshalled" 并将其从本地虚拟机发送到远程虚拟机(该远程虚拟机的参数为 "unmarshalled")上。该方法终止时,将编组来自远程机的结果并将结果发送到调用方的虚拟机。如果方法调用导致抛出异常,则该异常将指示给调用方。
如何rmi运行java程序?
首先在server端需要一个接口,继承自java.rmi.Remote
public interface Hello extends Remote {
public void say() throws RemoteException;
}
其次实现这个接口并继承java.rmi.server.UnicastRemoteObject
public class SayHello extends UnicastRemoteObject implements Hello{
protected SayHello() throws RemoteException{
super();
}
public String say() throws RemoteException {
return "Hello";
}
}
接着注册服务,绑定端口
public class Reg {
public static void main(String[] args) throws RemoteException,MalformedURLException{
LocateRegistry.createRegistry(1099);
SayHello sh = new SayHello();
Naming.rebind("rmi://localhost:1099/sh", sh);
System.out.println("注册完毕");
}
}
然后在客户端
public class Client {
public static void main(String[] args) throws RemoteException,MalformedURLException,NotBoundException{
Hello h = (Hello)Naming.lookup("rmi://localhost:1099/sh");
System.out.println(h.say());
}
}
即可
Java的RMI在客户端需要放入实现类吗?
你应该去解决 不把 实现类,放进去报错的原因。 RMI 的话, 客户端 调用一个方法, 这个方法的执行过程是由服务器执行的。 客户端 需要知道的是 方法的名称,也就是对应的接口,以及调用这个方法需要的参数。
JavaRMI服务远程方法调用漏洞如何修复lin
Linux的Apache或WebLogic应用被检测出这个漏洞,NSFOCUS(绿盟)给出的解决办法是:
临时解决方法:【限制访问或删除类文件】
如果您不能立刻安装补丁或者升级,建议您采取以下措施以降低威胁:
* 使用防火墙规则及文件系统访问限制
* 使用 SerialKiller 替换进行序列化操作的 ObjectInputStream 类
* 删除掉项目里的“commons-collections-3.2.jar///org/apache/commons/collections/functors/InvokerTransformer.class” 文件,删除后项目可能会在某些功能下报错。
安装厂商补丁:【下载3.2.2以上版本commons-collections补丁】
目前厂商已经发布了升级补丁ACC 3.2.2 以修复这个安全问题,请到厂商的主页下载:
Download Commons Collections
;revision=1713307
RMI是干什么用的在JAVA里面
RMI是J2EE的网络机制,允许你编写分布式对象,使得对象的通信范围能够在内存中,跨Java虚拟机,跨物理设备
RMI-IIOP遵循了接口和实现的原则。你写的所有网络代码都是应用于接口,而不是实现。实际上,你必须使用RMI-IIOP中的范例,没有其它的选择。直接在你的对象实现上执行远程调用是不可能的,你只能在对象类的接口上单独进行这一操作。
所以我们在使用RMI-IIOP时,你必须建立一个客户接口,叫做remote interface。这个远程接口应该扩展java.rmi.Remote接口。
RMI应用程序通常包括两个独立的程序:服务器程序和客户机程序。典型的服务器应用程序将创建多个远程对象,使这些远程对象能够被引用,然后等待客户机调用这些远程对象的方法。而典型的客户机程序则从服务器中得到一个或多个远程对象的引用,然后调用远程对象的方法。RMI为服务器和客户机进行通信和信息传递提供了一种机制。
在与远程对象的通信过程中,RMI使用标准机制:stub和skeleton。远程对象的stub担当远程对象的客户本地代表或代理人角色。调用程序将调用本地stub的方法,而本地stub将负责执行对远程对象的方法调用。在RMI中,远程对象的stub与该远程对象所实现的远程接口集相同。调用stub的方法时将执行下列操作:(1) 初始化与包含远程对象的远程虚拟机的连接;(2) 对远程虚拟机的参数进行编组(写入并传输);(3) 等待方法调用结果;(4) 解编(读取)返回值或返回的异常;(5) 将值返回给调用程序。为了向调用程序展示比较简单的调用机制,stub将参数的序列化和网络级通信等细节隐藏了起来。在远程虚拟机中,每个远程对象都可以有相应的skeleton(在JDK1.2环境中无需使用skeleton)。Skeleton负责将调用分配给实际的远程对象实现。它在接收方法调用时执行下列操作:(1) 解编(读取)远程方法的参数;(2) 调用实际远程对象实现上的方法;(3) 将结果(返回值或异常)编组(写入并传输)给调用程序。stub和skeleton由rmic编译器生成。
rmijava服务的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于rmi Java、rmijava服务的信息别忘了在本站进行查找喔。
发布于:2022-11-29,除非注明,否则均为
原创文章,转载请注明出处。