1. 定义远程接口
// 远程接口继承自Remote<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />
// 远程方法的传入参数和返回值必须是自然类型(int,float,boolean等)
// 或者实现了Serializable或Remote接口的对象。
public interface Time extends java.rmi.Remote {
// 远程方法必须抛出RemoteException:
public String getTime() throws RemoteException;
}
2. 定义实现类
// 注意:实现类继承自UnicastRemoteObject和自定义的远程接口Time:
public class TimeImpl extends java.rmi.server.UnicastRemoteObject implements Time {
// 注意:由于RemoteObject构造函数要抛出RemoteException,
// 因此务必定义构造函数并抛出RemoteException:
public TimeImpl() throws RemoteException { super(); }
// 这里是远程方法:
public String getTime() throws RemoteException {
return "<?xml:namespace prefix = st1 ns = "urn:schemas-microsoft-com:office:smarttags" /><time w:st="on" minute="4" hour="12">12:04:27</time>";
}
// 启动服务:
public static void main(String[] args) throws Exception {
// 可以手动启动RMI Registry,也可以在程序中启动:
java.rmi.registry.LocateRegistry.createRegistry(1099);
// 绑定名字服务,地址是本地计算机名或本机IP,默认端口是1099:
java.rmi.Naming.bind("//localhost:1099/servicename", new TimeImpl());
// 如果没有异常抛出,则绑定成功。
// 如果名字已经被绑定,可以用Naming.rebind()替换掉已绑定的服务。
}
}
3. 编译生成桩和框架
运行rmic TimeImpl,生成TimeImpl_Skel.class和TimeImpl_Stub.class。
4. 客户端
// 客户端文件包含客户端代码Client.class,远程接口Time.class,
// 由rmic生成的支持类TimeImpl_Skel.class和TimeImpl_Stub.class:
public static void main(String[] args) throws Exception {
// 客户端通过IP引用服务器端的远程对象,因此可以动态选择服务器。
// 如果不指定端口,默认端口号是1099:
Time time = (Time)java.rmi.Naming.lookup("//localhost:1099/servicename");
System.out.println(time.getTime());
}
分享到:
相关推荐
此外,使用IDE如Eclipse或IntelliJ IDEA,可以方便地生成RMI项目模板和自动处理stubs和skeletons的生成。 ### 遇到的问题及解决策略 1. **网络问题**:网络延迟、丢包可能导致调用失败,需要处理`RemoteException`...
2. **创建Session Bean**: 如果是Session Bean,客户端通过Home接口的`create()`方法创建一个Remote接口实例,这个过程可能涉及远程方法调用(RMI)。 3. **调用业务方法**: 客户端通过Remote接口调用EJB的业务方法...
Java 模板方法设计模式定义 Java 模板方法设计模式是指在软件开发过程中,通过定义一个通用的算法结构,然后将具体的实现细节交给子类来完成的设计模式。该模式的核心思想是,通过回调函数来实现算法的可扩展性和...
- **概念**:Java RMI是一种允许在不同Java虚拟机(JVMs)上的对象互相调用方法的技术。 - **优势**: - **简单性**:提供了一种类似于本地方法调用的API,使得开发者可以轻松地实现远程对象调用。 - **安全性**:...
6. **网络支持**:如果游戏支持多人在线,模板可能包含网络通信的框架,如RMI(远程方法调用)或Socket编程,用于实现玩家之间的互动。 7. **资源管理**:游戏资源如图像、音频、字体等的加载和管理,模板通常会...
例如,提及的“客户端运行后,通过RMI访问和修改服务器端数据库中的数据”表明软件旨在实现远程方法调用(RMI),允许客户端应用程序远程调用服务器上的方法,从而访问和修改数据库。这通常用于分布式系统中,使得不同...
本书全面介绍了Java网络编程的核心概念、技术和实践方法,包括远程方法调用(RMI)、Servlet、JSP等内容。 ### 一、Java网络编程概述 Java作为一种广泛使用的编程语言,在网络编程领域有着举足轻重的地位。Java...
综上所述,中间件是构建复杂分布式系统的关键,它解决了异构环境下的交互难题,而RPC和RMI等技术则进一步细化了远程调用和对象通信的方式。理解和掌握这些知识点对于理解和开发分布式系统至关重要。
- **Tiny RMI远程调用**:RMI(Remote Method Invocation)是一种允许对象通过网络请求另一个对象上的方法调用的机制,Tiny RMI可能是对其的一种封装或增强。 #### 5. 性能优化与缓存管理 - **J2Cache缓存框架**:...
Spring Portlet MVC、Spring Web模块、远程调用、JAVA消息服务等模块也提供了广泛的功能,包括RMI、Hessian、Webservice等远程调用方式,和apache activeMQ、MuleESB、JbossMQ等JAVA消息服务。 在Spring的DI中,...
Dubbo是一个高性能、轻量级...开发者可以通过部署`dubbo-admin-2.5.4-SNAPSHOT.war`来监控服务,使用`provider`和`consumer`目录中的代码和配置作为模板,创建自己的服务提供者和消费者,进一步实践和熟悉Dubbo的使用。
他精通JSP(Java Server Pages)、JDBC(Java Database Connectivity)用于与数据库交互,JNDI(Java Naming and Directory Interface)用于服务定位,RMI(Remote Method Invocation)用于远程方法调用,Servlet是...
《Dubbo服务与消费详解》 Dubbo,作为阿里巴巴开源的一款高性能、轻量级的Java RPC...在实践中,开发者可以依据这个模板,快速搭建自己的服务,同时理解和掌握Dubbo的诸多功能,提升分布式系统的开发效率和稳定性。
开发人员可以通过多种方式,如SOAP(简单对象访问协议)、RMI(远程方法调用)以及自定义隧道类来访问并操作门户提供的API,从而实现对门户的灵活扩展与定制。 ### 二、Portlet应用接口(JSP168) Liferay的设计遵循...
Java 语言支持分布式编程,通过RMI(Remote Method Invocation,远程方法调用)、Socket 编程等技术,可以实现分布式系统的开发。 输入/输出流概念 输入/输出流是指在计算机中处理数据的基本操作。Java 语言提供了...
4. **远程调用(RPC)**: Dubbo支持多种RPC协议,如HTTP、RMI、Hessian等,实现服务间的远程方法调用。 5. **负载均衡(Load Balance)**: 在多台服务提供者之间进行请求分发,提高系统可用性。 6. **监控(Monitor...
4. **协议(Protocol)**:定义了服务调用的协议,如dubbo、http、rmi等。 5. **负载均衡(LoadBalance)**:在多台服务器中选择一台进行调用,如随机、轮询、一致性哈希等策略。 6. **集群(Cluster)**:对服务提供者的...
- RMI(Remote Method Invocation)是Java的远程方法调用技术,允许分布式系统中的对象相互调用方法。 - RMI体系结构包括:远程接口、远程对象、注册表和服务端、客户端。 - 序列化:RMI中,远程对象必须可序列化...
- RMI(Remote Method Invocation,远程方法调用)是Java实现分布式计算的一种机制,它允许对象在不同的Java虚拟机之间进行交互,实现了远程类对象的实例化和方法调用。 - JMX(Java Management Extensions,Java...