001: /**
002: * JOnAS: Java(TM) Open Application Server
003: * Copyright (C) 1999-2004 Bull S.A.
004: * Contact: jonas-team@objectweb.org
005: *
006: * This library is free software; you can redistribute it and/or
007: * modify it under the terms of the GNU Lesser General Public
008: * License as published by the Free Software Foundation; either
009: * version 2.1 of the License, or any later version.
010: *
011: * This library is distributed in the hope that it will be useful,
012: * but WITHOUT ANY WARRANTY; without even the implied warranty of
013: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
014: * Lesser General Public License for more details.
015: *
016: * You should have received a copy of the GNU Lesser General Public
017: * License along with this library; if not, write to the Free Software
018: * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
019: * USA
020: *
021: * --------------------------------------------------------------------------
022: * $Id: AbsServiceImpl.java 5498 2004-09-24 09:40:14Z danesa $
023: * --------------------------------------------------------------------------
024: */package org.objectweb.jonas.service;
025:
026: import javax.naming.Context;
027:
028: import org.objectweb.jonas.common.JProp;
029: import org.objectweb.jonas.management.ReconfigDispatcher;
030:
031: /**
032: * Abstract implementation of a Service
033: */
034: public abstract class AbsServiceImpl extends ReconfigDispatcher
035: implements Service {
036:
037: /**
038: * service name
039: */
040: private String name = null;
041: /**
042: * service status
043: */
044: private boolean started = false;
045:
046: /**
047: * Name of the domain of server
048: */
049: private String domainName = null;
050:
051: /**
052: * Name of the JOnAS server
053: */
054: private String jonasServerName = null;
055:
056: /**
057: * Initialize the service
058: * @param ctx configuration of the service
059: * @throws ServiceException service initialization failed
060: */
061: public void init(Context ctx) throws ServiceException {
062: // General properties infos
063: try {
064: JProp oProp = JProp.getInstance();
065: domainName = oProp.getValue(JProp.DOMAIN_NAME,
066: JProp.JONAS_DEF_NAME);
067: jonasServerName = oProp.getValue(JProp.JONAS_NAME,
068: JProp.JONAS_DEF_NAME);
069: } catch (Exception e) {
070: domainName = JProp.JONAS_DEF_NAME;
071: jonasServerName = JProp.JONAS_DEF_NAME;
072: }
073: this .doInit(ctx);
074: }
075:
076: /**
077: * Start the service
078: * @throws ServiceException service start-up failed
079: */
080: public void start() throws ServiceException {
081: this .doStart();
082: this .started = true;
083: }
084:
085: /**
086: * Stop the service
087: * @throws ServiceException service stopping failed
088: */
089: public void stop() throws ServiceException {
090: if (this .isStarted()) {
091: this .started = false;
092: this .doStop();
093: }
094: }
095:
096: /**
097: * Returns true if the service is started, false otherwise
098: * @return true if the service is started
099: */
100: public boolean isStarted() {
101: return this .started;
102: }
103:
104: /**
105: * Returns the service's name
106: * @return the service name
107: */
108: public String getName() {
109: return this .name;
110: }
111:
112: /**
113: * Set the service's name
114: * @param name the name to set
115: */
116: public void setName(String name) {
117: this .name = name;
118: }
119:
120: /**
121: * Return the domain's name of this service.
122: * @return the domain name
123: */
124: public String getDomainName() {
125: return this .domainName;
126: }
127:
128: /**
129: * Return the JOnAS server's name of this service.
130: * @return the server name
131: */
132: public String getJonasServerName() {
133: return this .jonasServerName;
134: }
135:
136: /**
137: * Abstract initialization method to be implemented by sub-classes
138: * @param ctx configuration of the service
139: * @throws ServiceException service initialization failed
140: */
141: protected abstract void doInit(Context ctx) throws ServiceException;
142:
143: /**
144: * Abstract start-up method to be implemented by sub-classes
145: * @throws ServiceException service start-up failed
146: */
147: protected abstract void doStart() throws ServiceException;
148:
149: /**
150: * Abstract method for service stopping to be implemented by sub-classes
151: * @throws ServiceException service stopping failed
152: */
153: protected abstract void doStop() throws ServiceException;
154: }
|