The discussion includes five main parts:
Interface
public interface jbsRMIHelloIntCO extends java.rmi.Remote { jbsRMIHelloCO getCO() throws java.rmi.RemoteException; }
Content Object
import java.io.*; import java.util.*; public class jbsRMIHelloCO extends Object implements Serializable { String msg = ""; private long timeMillis; private Date date; public jbsRMIHelloCO () { super (); msg = "Hello, World, from jbsRMIHelloCO"; timeMillis = System.currentTimeMillis (); date = new Date ( timeMillis ); } // end constructor public void setMsg ( String s ) { msg = s; } // end setMsg () public String getMsg () { return ( msg ); } // end getMsg () public Date getDate () { return ( date ); } // end getDate () } // end jbsRMIHelloCO
Implementation
import java.rmi.*; import java.rmi.server.UnicastRemoteObject; public class jbsRMIHelloImplCO extends UnicastRemoteObject implements jbsRMIHelloIntCO { public jbsRMIHelloImplCO () throws java.rmi.RemoteException { super (); } public jbsRMIHelloCO getCO () throws java.rmi.RemoteException { jbsRMIHelloCO obj = new jbsRMIHelloCO (); return ( obj ); } // end sayHello } // end jbsRMIHelloImplCO
Servlet
import java.net.*; import java.io.*; import java.util.*; import javax.servlet.*; import javax.servlet.http.*; import java.rmi.*; public class jbsRMIHelloServletCO extends HttpServlet { //***** RMI Servlet //***** Expects rmiregistry on port: 4444 public boolean firsttime = true; String host; int port; protected String DEFAULT_HOST = "jbspc.cs.unc.edu"; protected int DEFAULT_RMI_PORT = 4444; protected final static String DEFAULT_RMI = "//jbspc.cs.unc.edu:4444/jbsRMIHelloImplCO"; jbsRMIHelloImplCO obj; public void doGet (HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { if ( firsttime ) { firsttime = false; try { obj = new jbsRMIHelloImplCO (); Naming.rebind(DEFAULT_RMI, obj); System.out.println("jbsRMIHelloImplCO bound in rmiregistry: port 4444"); } catch (Exception e) { System.out.println("jbsRMIHelloImplCO err: " + e.getMessage()); e.printStackTrace(); } returnHTML ( resp ); } // end firsttime else { returnHTML ( resp ); } // end else } // end doGet public void returnHTML ( HttpServletResponse resp ) { ServletOutputStream out; try { resp.setContentType("text/html"); out = resp.getOutputStream(); out.println("<html>"); out.println("<head><title>jbsServerThreadedCO</title></head>"); out.println("<body>"); out.println("<center><font color=AA0000>"); out.println("<h3>jbsRMIHelloServletCO Running on jbspc.cs.unc.edu:8080</h3>"); out.println("<h3>Applet Tag for jbsRMIHelloAppletCO Returned</h3>"); out.println("</font></center>"); out.println("<applet code=jbsRMIHelloAppletCO.class codebase=http://jbspc.cs.unc.edu:8080/Courses/wwwp-s98/applets/jbsRMIHelloAppletCO width=400 height=400>"); out.println("</applet>"); out.println("</body>"); out.println("</html>"); out.flush(); out.close(); } // end try catch ( IOException except) { } // end catch } // end returnHTML } // end jbsRMIHelloServletCO
Applet
import java.awt.*; import java.applet.*; import java.util.*; import java.rmi.*; public class jbsRMIHelloAppletCO extends Applet { String message = "default message"; Date date; int hour, minute, second; long time; public void init() { try { jbsRMIHelloIntCO intObj = (jbsRMIHelloIntCO)Naming.lookup("//jbspc.cs.unc.edu:4444/jbsRMIHelloImplCO"); jbsRMIHelloCO coObj = intObj.getCO(); message = coObj.getMsg (); date = coObj.getDate (); hour = date.getHours(); minute = date.getMinutes(); second = date.getSeconds(); time = date.getTime(); } catch (Exception e) { System.out.println("jbsRMIHelloApplet exception: " + e.getMessage()); e.printStackTrace(); } } // end init public void paint(Graphics g) { g.drawString ( message, 50, 50 ); g.drawString ( "Message returned from Server at: "+hour+" : "+minute+" : "+second+" : "+time, 50, 100 ); } } // end jbsRMIHelloAppletCO
Run the Servlet ( jbspc )