Head First Java学习笔记(18):远程部署的RMI

RMI:Remote Methodd Invocation(远程方法调用)

远程过程调用的设计

要创建出4种东西:服务器、客户端、服务器辅助设施和客户端辅助设施。

1.创建客户端和服务器应用程序。服务器应用程序是个远程服务,是个带有客户端会调用的方法的对象。
2.创建客户端和服务器端的辅助设施。它们会处理所有客户端和服务器的低层网络输入/输出细节,让你的客户端和程序好像在处理本机调用一样。

辅助设施

1.客户端对象看起来像是在调用远程的方法。但实际上它只是在调用本地处理Socket和串流细节的代理。
2.客户端辅助设施假装成服务,但只是真品的代理人而已。
3.服务器辅助设施收到请求,解开包装,调用真正的方法。
4.真正的服务执行方法。

Java RMI

1.Java RMI提供客户端与服务器端的 辅助设施对象。
2.在RMI中,客户端的辅助设施称为stub,而服务器端的辅助设施称为skeleton。
在这里插入图片描述

创建远程服务

步骤一.创建Remote接口
1.继承java.rmi.Remote

public interface MyRemote extends Remote {}

2.声明所有的方法都会抛出RemoteException

import java.rmi.*;
public interface MyRemote extends Remote {
	public String sayHello() throws RemoteException;
}

3.确定参数和返回值都是primitive主数据类型或Serializable
步骤二.实现Remote接口
1.实现Remote接口

public class MyRemoteImpl extends UnicastRemoteObject implements MyRemote {
	public String sayHello() {
		return “Server says, ‘Hey’”;
	}
	// more code in class
}

2.继承UnicastRemoteObject

public class MyRemoteImpl extends UnicastRemoteObject implements MyRemote {

3.编写声明RemoteException的无参数构造函数

public MyRemoteImpl() throws RemoteException { }

4.向RMI registry注册服务

try {
	MyRemote service = new MyRemoteImpl();
	Naming.rebind(“Remote Hello”, service);
} catch(Exception ex) {...}

步骤三.用rmic产生stub与skeleton
在这里插入图片描述
步骤四.启动RMI registry
在这里插入图片描述
步骤五.启动服务
调用另一个命令行来启动服务在这里插入图片描述

客户端取得stub对象

MyRemote service = (MyRemote) Naming.lookup(“rmi://127.0.0.1/Remote Hello”);

1.客户端查询RMIregistry.
2.RMI registry返回stub对象。
3.客户端就像取用真正的服务一样的调用stub上的 方法。

Servlet

1.客户端打开一个注册表单并点击“提交”。HTTP服务器(即web服务器)获取请求,看到它是针对servlet的,然后将请求发送给servlet。
2.Servlet (Java代码)运行,将数据添加到数据库中,组成web页面(使用自定义信息)并将其发送回客户机,在浏览器中显示该页面。

创建并执行servlet的步骤:
1.找出可以存放servlet的地方。
2.获取servlet .jar并将其添加到类路径中。
3.通过extend过HttpServlet来编写servlet的类。

public class MyServletA extends HttpServlet { ... }

4.编写一个调用servlet的HTML页面。

<a href=”servlets/MyServletA”>This is the most amazing servlet.</a>

5.使servlet和HTML页面对服务器可用。

EJB(Enterprise JavaBeans)

1.EJB服务器添加了一组通过直接RMI无法获得的服务。事务、安全性、并发性、数据库管理和网络。
2.EJB服务器位于RMI调用的中间,并在所有服务中分层。
在这里插入图片描述

Jini(Java Intelligent Network Infrastructure)

Jini也是使用RMI,但多了几个关键功能:自适应探索、自恢复网络。
自适应探索:
1.Jini查找服务在网络上的某个地方启动,并使用IP组播技术来宣布其本身。
2.另一台机器上已经运行的Jini服务要求注册这个新发布的查找服务。它按功能注册,而不是按名称注册。换句话说,它注册为它实现的服务接口。它发送一个序列化的对象,将其放置在查找服务中。
3.网络上的客户端想要实现ScientificCalculator的东西。它不知道那个东西存在于哪里(或者是否存在),所以它询问查找服务。
4.查询服务响应查询的结果。
自恢复网络:
1.一个Jini服务要求向查找服务注册。查找服务以“租约”响应。新注册的服务必须不断更新租约,否则查找服务假定该服务已经脱机。查找服务希望始终向网络的其他部分提供有关哪些服务可用的准确信息。
2.服务离线(有人将其关闭),因此无法与查找服务续签租约。查找服务将其删除。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值