Java Reference
In-Depth Information
10. private OutputChannel router;
11. private Receiver receiver;
12.
13. public RouterClient(Receiver newReceiver){
14. receiver = newReceiver;
15. try {
16. UnicastRemoteObject.exportObject(this);
17. Naming.rebind(routerClientServiceName, this);
18. String url = "//" + ROUTER_SERVER_MACHINE_NAME + "/" + ROUTER_SERVER_SERVICE_NAME;
19. router = (OutputChannel)Naming.lookup(url);
20. }
21. catch (Exception exc){
22. System.err.println("Error using RMI to register the Router " + exc);
23. }
24.
25. }
26.
27. public void sendMessageToRouter(Message message){
28. try{
29. router.sendMessage(message);
30. }
31. catch (RemoteException exc){}
32. }
33.
34. public void sendMessage(Message message){
35. receiver.receiveMessage(message);
36. }
37.
38. public String toString(){
39. return routerClientServiceName;
40. }
41. }
Each RouterClient communicates with a client represented by the RouterGui class. This class provides a
simple Swing GUI for sending and receiving messages via the Router . RouterGui implements the Receiver
interface, which allows the RouterClient to provide it with real-time updates when it receives a Router
message.
Example A.251 Receiver.java
1. public interface Receiver{
2. public void receiveMessage(Message message);
3. }
Example A.252 RouterGui.java
1. import java.awt.Container;
2. import java.awt.event.ActionListener;
3. import java.awt.event.ActionEvent;
4. import java.awt.event.WindowAdapter;
5. import java.awt.event.WindowEvent;
6. import javax.swing.JFrame;
7. import javax.swing.BoxLayout;
8. import javax.swing.JButton;
9. import javax.swing.JTextArea;
10. import javax.swing.JScrollPane;
11. import javax.swing.JTextField;
12. import javax.swing.JLabel;
13. import javax.swing.JPanel;
14. import java.io.Serializable;
15. public class RouterGui implements ActionListener, Receiver{
16. private static int instanceCount = 1;
17. private RouterClient routerClient;
18. private JFrame mainFrame;
19. private JButton exit, clearDisplay, sendMessage;
20. private JTextArea display;
21. private JTextField inputTextField;
22. private InputChannel inputChannel;
23.
24. public OutputChannel getOutputChannel(){
25. return routerClient;
26. }
27.
28. public RouterGui(InputChannel newInputChannel){
29. inputChannel = newInputChannel;
30. routerClient = new RouterClient(this);
31. }
Search WWH ::




Custom Search