001 /* 002 @license.text@ 003 */ 004 package biz.hammurapi.config; 005 006 import java.rmi.AccessException; 007 import java.rmi.NotBoundException; 008 import java.rmi.RemoteException; 009 import java.rmi.registry.LocateRegistry; 010 import java.rmi.registry.Registry; 011 012 import org.w3c.dom.Element; 013 import org.w3c.dom.Node; 014 015 /** 016 * Wrapper for RMI registry 017 * @author Pavel Vlasov 018 * @revision $Revision$ 019 */ 020 public class RmiRegistryComponent extends ComponentBase implements Wrapper, DomConfigurable { 021 private int port=1099; 022 private Registry master; 023 024 public Object getMaster() { 025 return master; 026 } 027 028 public void start() throws ConfigurationException { 029 try { 030 master=LocateRegistry.createRegistry(port); 031 } catch (RemoteException e) { 032 throw new ConfigurationException("Could not create RMI registry: "+e, e); 033 } 034 } 035 036 public void stop() { 037 // Nothing to do. 038 } 039 040 public void setOwner(Object owner) { 041 this.owner=owner; 042 } 043 044 public void configure(Node configNode, Context context) { 045 Element ce = (Element) configNode; 046 if (ce.hasAttribute("port")) { 047 port=Integer.parseInt(ce.getAttribute("port")); 048 } 049 } 050 051 protected Object getChild(String name) { 052 try { 053 return master.lookup(name); 054 } catch (AccessException e) { 055 throw new RuntimeConfigurationException("Could not lookup '"+name+"' - "+e, e); 056 } catch (RemoteException e) { 057 throw new RuntimeConfigurationException("Could not lookup '"+name+"' - "+e, e); 058 } catch (NotBoundException e) { 059 throw new RuntimeConfigurationException("Could not lookup '"+name+"' - "+e, e); 060 } 061 } 062 063 }