import java.io.ObjectOutputStream; import java.io.ObjectInputStream; import java.net.Socket; import java.net.ServerSocket; public class Person_Skeleton extends Thread { PersonServer myServer; public Person_Skeleton(PersonServer server){ // Get a reference to the object server that this skeleton wraps. this.myServer = server; } public void run(){ try { // Create a server socket on port 9000. ServerSocket serverSocket = new ServerSocket(9000); System.out.println("\n Person_Skeleton: waiting for incomming clients"); // Wait for and obtain a socket connection from stub. Socket socket = serverSocket.accept(); while (socket != null){ // Create an input stream to receive requests from stub. ObjectInputStream inStream = new ObjectInputStream(socket.getInputStream()); // Read next method request from stub. Block until request is // sent. String method = (String)inStream.readObject(); // Evaluate the type of method requested. System.out.println("\n Person_Skeleton: invocation of method: "+method); if (method.equals("age")){ // Invoke business method on server object. int age = myServer.getAge(); // Create an output stream to send return values back to stub. System.out.println( "\n Person_Skeleton: send the answer of the method to the client, age: "+age); ObjectOutputStream outStream = new ObjectOutputStream(socket.getOutputStream()); // Send results back to stub. outStream.writeInt(age); outStream.flush(); } else if(method.equals("name")){ // Invoke business method on server object. String name = myServer.getName(); // Create an output stream to send return values back to // the stub. System.out.println( "\n Person_Skeleton: send the answer of the method to the client, name: "+name); ObjectOutputStream outStream = new ObjectOutputStream(socket.getOutputStream()); // Send results back to stub. outStream.writeObject(name); outStream.flush(); } else if(method.equals("fim")){ System.out.println( "\n Person_Skeleton: closing connection with the client"); socket.close(); socket = null; } } } catch(Throwable t) {t.printStackTrace();System.exit(0); } System.out.println("----------------------------------------------------\n"); } public static void main(String args [] ){ // Obtain a unique instance Person. PersonServer person = new PersonServer("Richard", 34); Person_Skeleton skel = new Person_Skeleton(person); skel.start(); } }