Выполнение программы RMI - PullRequest
       4

Выполнение программы RMI

0 голосов
/ 09 октября 2011

============ Интерфейс сервера: Server.java ================

 import java.rmi.*;
 public interface Server extends Remote
 {
 void register (Client cl) throws RemoteException;
 void broadcastCord () throws RemoteException;
 }


 =============Server Class:ServerImpl.java===============

 import java.rmi.*;
 import java.rmi.server.*;
 import java.util.*;
 import java.net.*;
 public class ServerImpl extends UnicastRemoteObject implements Server
 {

 public ServerImpl() throws RemoteException
  {

   }

 public synchronized void register (Client cl) throws RemoteException
 {
  System.out.println("===>register Method of Process:");
  cl.receiveInq();

 }


 //=========Broadcast Inquiry==================
 public synchronized void broadcastCord () throws RemoteException
 {
 System.out.println("===>broadcastCord Method of Process:");
  }


 //==============Main Function===================
 public static void main (String[] args)
 {
 try
 {
 System.out.println(InetAddress.getLocalHost().toString());
 Naming.rebind("Server", new ServerImpl());
 }
 catch(Exception e)
 {
 System.err.println("Problem..."+e)  ;
 }
 }
 }

 ============Client InterfaceClient.java:=============

 import java.rmi.*;
 public interface Client extends Remote
 {
 void receiveInq() throws RemoteException;
 void receiveGrt() throws RemoteException;
 }

 ==============Client Class:ClientImpl.java==============

 import java.rmi.*;
 import java.rmi.registry.*;
 import java.rmi.server.*;
 import java.net.*;
 import java.util.*;
 import javax.swing.*;
 import java.awt.event.*;
 import java.net.*;
 import java.io.*;
 import java.awt.*;
 import javax.swing.*;

 public class ClientImpl extends java.rmi.server.UnicastRemoteObject implements Client
  {

 private Server mycs;
 public ClientImpl(Server cs) throws RemoteException
     {

  mycs=cs;
  mycs.register(this);
     }
 //=====Greater List========
  public synchronized void receiveGrt() throws RemoteException
  {
 System.out.println("===>recieveGRT Method of Process:");
  }

 //=====RECIEVE INQUIRY========
     public synchronized void receiveInq () throws RemoteException
  {
  System.out.println("===>receiveInq Method of Process:");
  mycs.broadcastCord();
      }

  public static void main(String args[])
      {
  String url = "rmi://localhost:1099/Server";
  try{
  Server cs= (Server) Naming.lookup(url);
  new ClientImpl(cs);
  }
  catch(Exception e)
  {
  System.err.println("Problem..\n"+e) ;
      }
      }
 }

itне выполняется полностью ....... Если мы закрываем клиентскую программу, выполнение завершается .... но я не знаю, почему она не выполняется должным образом .... она не выдает никаких исключений

1 Ответ

1 голос
/ 10 октября 2011

Удалить «синхронизирован». Вы зашли в тупик. Обратные вызовы RMI выполняются в потоке, отличном от исходного вызова.

...