`

带回调的RMI实例

阅读更多

1 服务端远程接口

 

 public interface RMITest2I extends Remote {

 

public void registerClient(RMITest2ClientI client)throws RemoteException;

 

public void unregisterClient(RMITest2ClientI client)throws RemoteException;

}

 

2服务端实现

 public class RMITest2 extends UnicastRemoteObject implements RMITest2I,Runnable {

 

 

private HashSet client;

 

public RMITest2()throws RemoteException {

client=new HashSet();

}

 

 

public void registerClient(RMITest2ClientI client) throws RemoteException {

this.client.add(client);

 

}

 

 

public void unregisterClient(RMITest2ClientI client) throws RemoteException {

   this .client.remove(client);

}

 

 

 

public void run() {

for(;;){

 

Iterator iter=client.iterator();

while(iter.hasNext()){

 

RMITest2ClientI client=(RMITest2ClientI) iter.next();

try {

client.getPerfectTime();

} catch (Exception e) {

System.out.println("移出无效对象");

iter.remove();

}

try {

Thread.sleep(1000);

} catch (Exception e) {

   }

}

}

}

 

 

public static void main(String[] args) {

 

try {

if(System.getSecurityManager()==null){

System.setSecurityManager(new SecurityManager());

}

 

RMITest2 rt=new RMITest2();

Naming.bind("localhost/RMITest2", rt);

System.out.println("bind OK");

new Thread(rt).start();

 

} catch (Exception e) {

 

e.printStackTrace();

}

 

}

 

 

3 客户端接口

  public interface RMITest2ClientI extends Remote{

 

public void getPerfectTime()throws RemoteException;

}

 
 
4客户端实现
 
 public class RMITest2Client extends UnicastRemoteObject implements RMITest2ClientI{
 
protected RMITest2Client() throws RemoteException {
super();
 
}
 
 
public void getPerfectTime() throws RemoteException {
System.out.println("perfect time"+System.currentTimeMillis());
 
}
 
public static void main(String[] args) {
try {
if(System.getSecurityManager()==null){
System.setSecurityManager(new SecurityManager());
}
   RMITest2ClientI client=new RMITest2Client();
RMITest2I rt=(RMITest2I)Naming.lookup("localhost/RMITest2");
System.out.println("服务端回调");
rt.registerClient(client);
} catch (Exception e) {
e.printStackTrace();
}
 
}
}
 
 
编译所有文件
Start rmiregistry
运行服务端  bind OK
运行客户端
输出: 
服务端回调
perfect time1303724206971
perfect time1303724207974
perfect time1303724208977
perfect time1303724209980
perfect time1303724210984
perfect time1303724211987
perfect time1303724212990
perfect time1303724213995
perfect time1303724214998
perfect time1303724216001
perfect time1303724217004
perfect time1303724218007
perfect time1303724219010
 
 
分享到:
评论

相关推荐

    rmi回调实例含代码

    总的来说,这个RMI实例展示了如何在Java中实现远程调用以及回调机制,这对于构建分布式系统和进行实时数据交互非常有用。理解RMI的工作原理和回调机制对于Java开发者来说是一项重要的技能,可以帮助他们构建更高效、...

    RMI.rar_rmi

    3. "Assignment_RMI"很可能是一个关于RMI的编程作业或项目,包含了具体的编程任务,比如创建和实现远程接口,部署RMI服务器,以及实现异步回调功能等。 综合以上信息,RMI的核心概念包括: 1. **远程接口**:定义了...

    java rmi java rmi

    除了基本的远程方法调用外,RMI还支持服务器端主动向客户端发送消息的能力,这被称为服务器回调。实现服务器回调需要客户端提供一个实现了特定接口的对象,并将其注册到服务器端。当服务器端有需要时,就可以通过这...

    Rmi callback

    RMI(Remote Method Invocation,远程方法调用)是Java中的一种技术,用于在分布式环境中实现对象间的通信。...理解这个实例有助于开发者深入理解RMI的工作原理和回调机制,对于开发分布式系统具有重要的实践意义。

    利用RMI异步调用

    客户端发起请求后,并不等待结果返回,而是立即继续执行其他任务,待结果准备好时,通过回调或者查询未来对象来获取结果。 - 在RMI中,可以使用Java的ExecutorService或CompletableFuture等并发工具来实现异步调用...

    Rmi.rar_Java RMI_RMI java_java RMI 线程_rmi

    9. **性能优化(Performance Optimization)**:RMI提供了许多优化手段,如持久化引用、单次调用(one-way calls)、回调(callback)等,以提高系统的响应速度和效率。 通过“Rmi.rar”提供的实例,学习者可以逐步...

    QtGui接收Ice回调消息示例工程

    为了连接到Ice服务,我们需要在Qt应用中创建Ice的代理对象,并注册我们的回调实例。通常在`MyWindow`的构造函数中完成: ```cpp MyWindow::MyWindow(QWidget* parent) : QMainWindow(parent) , m_messageLabel...

    dwr经典实例(9个常用实例)

    6. **回调函数**: 在DWR调用中,可以设置回调函数来处理服务器端返回的结果,使得异步处理更加灵活。 7. **异常处理**: DWR能够处理服务器端抛出的异常,并将其转换为客户端可读的错误信息。 8. **对象映射**: DWR...

    如何用java编写一个rmi

    LocateRegistry类:是一个用来获得远端调用对象引用的辅助类程序,主要是在一个特定的IP上构建一个远端对象来接受来自特定端口的回调。 Registry接口 Registry接口:对简单的远端对象提供一个远端接口用于提供存储...

    基于Java的实例开发源码-EJB编程实例代码.zip

    在这些阶段中,容器会执行相应的操作,如注入依赖、执行生命周期回调方法等。了解这些生命周期事件对于正确地管理和使用EJB至关重要。 此外,EJB还提供了分布式服务,使得一个Bean可以在网络中的不同服务器上运行,...

    C++源代码《用ACE实现可靠消息传送》MQServer.exe、MQClient程序小实例

    在提供的源代码中,你可以看到如何使用ACE库初始化服务器和客户端,设置连接回调函数,以及处理接收和发送消息的逻辑。例如,服务器端可能有一个`on_new_connection`回调函数,用于处理新的客户端连接;客户端则有...

    DWR 框架实例+说明

    5. **AJAX集成**:DWR提供了一套完整的AJAX解决方案,包括异步更新、错误处理和回调函数,简化了AJAX应用的开发。 6. **DWR引擎(DWR Engine)**:这是DWR的核心组件,负责处理客户端的请求,与服务器通信,并将...

    java远程调用方法总结

    另外,RMI提供了回调机制,允许服务器端主动调用客户端的方法。 `RMI_Server`和`RMI_Client`这两个文件名可能分别代表服务器端和客户端的代码实现。服务器端的代码通常会包含服务的创建、注册和运行逻辑,而客户端...

    Java RMI的企业级应用及框架设计 (2007年)

    调度器需要能够处理同步和异步请求,并对异步请求提供回调机制。 3. 服务器端逻辑处理器:管理服务器端的对象实例和方法调用,确保方法执行的顺序性和结果的正确性。如果发生异常或错误,处理器能够触发错误恢复...

    DWR的使用经验

    2. **自动回调机制**:DWR生成的JavaScript函数会自动添加一个回调函数作为参数,例如原本的函数是`checkExist(String name)`,生成的JavaScript版本将会变成`checkExist(callbackFunc, String name)`。这里的`...

    简易实现Spring流程代码

    总结,Spring框架的初始化过程主要包括XML/Java/注解配置、Bean的实例化与属性注入、初始化回调、AOP代理,以及后续的运行等待阶段,如生命周期管理、上下文事件和整合其他技术。理解这些步骤对于有效管理和优化...

    系统分析员考试复习 系统分析员考试复习

    - RMI是面向对象的,支持对象的传递和方法回调,而RPC基于过程调用。 - RMI的面向对象特性使其功能更强大,更适应复杂的交互需求。 6. **XML (eXtensible Markup Language)**与**HTML (Hypertext Markup Language...

    j2ee(1)asdfasdf

    异步线程模型则利用事件和回调机制来处理线程之间的通信和协作。 ### 10. JSP 动态包含与静态包含 - 动态包含:使用 `<jsp:include>` 或 `<%@ include file="...">` 在运行时动态加载另一个 JSP 页面,可以传入...

    系统分析师复习知识点摘要

    - RMI采用面向对象的编程模型,支持对象传递和方法回调。 - RPC则基于过程调用,主要传递数据,不支持方法传递或回调。 六、XML与HTML的区别及与JSP的集成 1. **XML vs HTML**: - XML是自定义标记语言,强调数据...

    J2EE面试集

    - 同步方法需要等待某个操作完成才能继续执行,而异步方法则可以在操作完成后通过回调或其他机制通知结果。 - 使用`synchronized`关键字实现同步,`wait`和`notify`方法用于线程之间的通信和等待。 ### 11. JSP动态...

Global site tag (gtag.js) - Google Analytics