01: /*
02: * hgcommons 7
03: * Hammurapi Group Common Library
04: * Copyright (C) 2003 Hammurapi Group
05: *
06: * This program is free software; you can redistribute it and/or
07: * modify it under the terms of the GNU Lesser General Public
08: * License as published by the Free Software Foundation; either
09: * version 2 of the License, or (at your option) any later version.
10: *
11: * This program is distributed in the hope that it will be useful,
12: * but WITHOUT ANY WARRANTY; without even the implied warranty of
13: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14: * Lesser General Public License for more details.
15: *
16: * You should have received a copy of the GNU Lesser General Public
17: * License along with this library; if not, write to the Free Software
18: * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
19: *
20: * URL: http://www.hammurapi.biz/hammurapi-biz/ef/xmenu/hammurapi-group/products/products/hgcommons/index.html
21: * e-Mail: support@hammurapi.biz
22: */
23: package biz.hammurapi.config;
24:
25: import java.rmi.AccessException;
26: import java.rmi.NotBoundException;
27: import java.rmi.RemoteException;
28: import java.rmi.registry.LocateRegistry;
29: import java.rmi.registry.Registry;
30:
31: import org.w3c.dom.Element;
32: import org.w3c.dom.Node;
33:
34: /**
35: * Wrapper for RMI registry
36: * @author Pavel Vlasov
37: * @revision $Revision$
38: */
39: public class RmiRegistryComponent extends ComponentBase implements
40: Wrapper, DomConfigurable {
41: private int port = 1099;
42: private Registry master;
43:
44: public Object getMaster() {
45: return master;
46: }
47:
48: public void start() throws ConfigurationException {
49: try {
50: master = LocateRegistry.createRegistry(port);
51: } catch (RemoteException e) {
52: throw new ConfigurationException(
53: "Could not create RMI registry: " + e, e);
54: }
55: }
56:
57: public void stop() {
58: // Nothing to do.
59: }
60:
61: public void setOwner(Object owner) {
62: this .owner = owner;
63: }
64:
65: public void configure(Node configNode, Context context) {
66: Element ce = (Element) configNode;
67: if (ce.hasAttribute("port")) {
68: port = Integer.parseInt(ce.getAttribute("port"));
69: }
70: }
71:
72: protected Object getChild(String name) {
73: try {
74: return master.lookup(name);
75: } catch (AccessException e) {
76: throw new RuntimeConfigurationException(
77: "Could not lookup '" + name + "' - " + e, e);
78: } catch (RemoteException e) {
79: throw new RuntimeConfigurationException(
80: "Could not lookup '" + name + "' - " + e, e);
81: } catch (NotBoundException e) {
82: throw new RuntimeConfigurationException(
83: "Could not lookup '" + name + "' - " + e, e);
84: }
85: }
86:
87: }
|