KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > SOFA > SOFAnet > Transport > RMI > RMITransportServerHolder


1 /*
2  * RMITransportServerHolder.java
3  *
4  * Created on 8. duben 2004, 14:34
5  */

6
7 package SOFA.SOFAnet.Transport.RMI;
8
9 import java.net.InetAddress JavaDoc;
10 import java.net.MalformedURLException JavaDoc;
11 import java.rmi.Naming JavaDoc;
12 import java.rmi.NotBoundException JavaDoc;
13 import java.rmi.RemoteException JavaDoc;
14 import SOFA.SOFAnet.Repository.NodeInfo;
15
16 /**
17  * The object of this class is responsible for connecting to remote RMI server and holding its interface.
18  *
19  * @author Ladislav Sobr
20  */

21 public class RMITransportServerHolder
22 {
23   private RMITransportInterface server;
24   private NodeInfo nodeInfo;
25     
26   /** Creates a new instance of RMITransportServerHolder */
27   public RMITransportServerHolder()
28   {
29   }
30   
31   /** Setups the node to connect to */
32   public void setNode(NodeInfo nodeInfo)
33   {
34     this.nodeInfo = nodeInfo;
35   }
36   
37   /** Returns interface to the RMI server on the remote node, never returns null */
38   public synchronized RMITransportInterface getServer() throws RMITransportException
39   {
40     if (nodeInfo == null) throw new RMITransportException("Not specified node");
41     
42     if (server != null) return server;
43
44     try
45     {
46       server = (RMITransportInterface)Naming.lookup("rmi://" + nodeInfo.getAddressAndPort() + "/SOFAnet/RMITransportServer");
47     }
48     catch (NotBoundException JavaDoc e)
49     {
50       server = null;
51       throw new RMITransportException(e.getMessage(), e);
52     }
53     catch (MalformedURLException JavaDoc e)
54     {
55       server = null;
56       throw new RMITransportException(e.getMessage(), e);
57     }
58     catch (RemoteException JavaDoc e)
59     {
60       server = null;
61       throw new RMITransportException(e.getMessage(), e);
62     }
63     
64     return server;
65   }
66   
67   /** Releases interface of the remote RMI server */
68   public void releaseServer()
69   {
70     server = null;
71   }
72   
73 }
74
Popular Tags