1 ////////////////////////////// PersonTalk.java \\\\\\\\\\\\\\\\\\\\\\\\\\\\\ 2 import java.rmi.*; 3 interface PersonTalk extends Remote { 4 void meet( PersonTalk other ) throws RemoteException; 5 void talk() throws RemoteException; 6 void listen() throws RemoteException; 7 } 8 //////////////////////////// PersonTalkImpl.java \\\\\\\\\\\\\\\\\\\\\\\\\\\ 9 import java.rmi.*; 10 import java.rmi.server.*; 11 public class PersonTalkImpl extends UnicastRemoteObject 12 implements PersonTalk { 13 private String name; 14 private PersonTalk other; 15 public PersonTalkImpl( String n ) throws RemoteException { 16 name = n; 17 System.out.println( name + " created" ); 18 } 19 public PersonTalkImpl( String n, PersonTalk o ) throws RemoteException { 20 this( n ); 21 meet( o ); 22 o.meet( this ); 23 } 24 public void meet( PersonTalk o ) { 25 other = o; 26 } 27 public void talk() throws RemoteException { 28 System.out.println( name + " is talking" ); 29 other.listen(); 30 } 31 public void listen() { 32 System.out.println( name + " is listening" ); 33 } } 34 /////////////////////////// PersonTalkServer.java \\\\\\\\\\\\\\\\\\\\\\\\\\ 35 import java.rmi.*; 36 import java.rmi.server.*; 37 public class PersonTalkServer { 38 public static void main( String[] args ) { 39 System.setSecurityManager( new RMISecurityManager() ); 40 try { 41 PersonTalk obj = new PersonTalkImpl( "Barney" ); 42 Naming.rebind( "Barney", obj ); 43 System.out.println( "Barney bound" ); 44 } catch (Exception ex ) { System.out.println( ex ); } 45 } } 46 // Barney created 47 // Barney bound 48 // Barney is listening 49 // Barney is talking 50 /////////////////////////// PersonTalkClient.java \\\\\\\\\\\\\\\\\\\\\\\\\\ 51 import java.rmi.*; 52 import java.rmi.server.*; 53 public class PersonTalkClient { 54 public static void main( String[] args ) { 55 System.setSecurityManager( new RMISecurityManager() ); 56 String url = "rmi:///"; 57 try { 58 PersonTalk barney = (PersonTalk) Naming.lookup( url + "Barney" ); 59 PersonTalk fred = new PersonTalkImpl( "Fred", barney ); 60 fred.talk(); 61 barney.talk(); 62 } catch (Exception ex ) { System.out.println( ex ); } 63 } } 64 // Fred created 65 // Fred is talking 66 // Fred is listening