The interface: (FarOutDate.java)
import java.rmi.*;
import java.util.*;
public interface FarOutDate extends Remote {
Date getDate() throws RemoteException;
}
The Server: (DateServer.java)
import java.util.*;
import java.rmi.*;
import java.rmi.server.*;
public class DateServer {
public static void main (String args[]) {
System.setSecurityManager(new RMISecurityManager());
try {
FarOutDate date_server = new DateImpl();
Naming.rebind("DateServer", date_server);
System.out.println("DateServer serving");
}
catch (Exception e) {
System.out.println(e.toString());
}
}
}
The Implemented Classes: (DateImpl.java)
import java.util.*;
import java.rmi.*;
import java.rmi.server.*;
public class DateImpl extends UnicastRemoteObject implements FarOutDate {
public DateImpl () throws RemoteException { }
public Date getDate() throws RemoteException {
return new Date();
}
}
A Simple Client: (FarOutDateClient.java)
import java.rmi.*;
import java.awt.*;
import java.awt.event.*;
import java.applet.*;
import javax.swing.*;
public class FarOutDateClient extends Applet implements ActionListener {
JTextField text;
JButton getit;
JTextArea area;
public void init () {
setLayout(new BorderLayout(10,10));
add ("North", text = new JTextField());
add ("Center", new JScrollPane(area = new JTextArea()));
Panel p = new Panel();
p.setLayout(new GridLayout(1,3));
p.add(new Label());
p.add(getit = Jnew Button("Get Date"));
add ("South", p);
}
public void start () {
getit.addActionListener(this);
}
public void actionPerformed (ActionEvent evt) {
if (evt.getSource() == getit) {
try {
String server_object = "rmi://localhost/DateServer";
FarOutDate date = (FarOutDate)Naming.lookup(server_object);
area.append(date.getDate()+"\n");
}
catch (Exception e) {
text.setText(e.toString());
}
}
}
}
HTML file to start the client: (date.html)
< applet code="FarOutDateClient.class" width=300 height=350 > < /applet >
Instructions: