001: /*
002: * JBoss, Home of Professional Open Source.
003: * Copyright 2006, Red Hat Middleware LLC, and individual contributors
004: * as indicated by the @author tags. See the copyright.txt file in the
005: * distribution for a full listing of individual contributors.
006: *
007: * This is free software; you can redistribute it and/or modify it
008: * under the terms of the GNU Lesser General Public License as
009: * published by the Free Software Foundation; either version 2.1 of
010: * the License, or (at your option) any later version.
011: *
012: * This software is distributed in the hope that it will be useful,
013: * but WITHOUT ANY WARRANTY; without even the implied warranty of
014: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
015: * Lesser General Public License for more details.
016: *
017: * You should have received a copy of the GNU Lesser General Public
018: * License along with this software; if not, write to the Free
019: * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
020: * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
021: */
022: package org.jboss.deployment;
023:
024: import java.io.File;
025: import java.net.MalformedURLException;
026: import java.net.URL;
027: import java.util.Collection;
028:
029: import javax.management.ObjectName;
030:
031: import org.jboss.mx.util.ObjectNameFactory;
032: import org.jboss.system.ServiceMBean;
033:
034: /**
035: * MainDeployer MBean interface
036: *
037: * @version $Revision: 57205 $
038: */
039: public interface MainDeployerMBean extends ServiceMBean, DeployerMBean,
040: MainDeployerConstants {
041: /** The default ObjectName */
042: ObjectName OBJECT_NAME = ObjectNameFactory
043: .create("jboss.system:service=MainDeployer");
044:
045: // Attributes ----------------------------------------------------
046:
047: /** Flag indicating whether directory content will be deployed.
048: * The default value is taken from the jboss.deploy.localcopy system property. */
049: boolean getCopyFiles();
050:
051: void setCopyFiles(boolean copyFiles);
052:
053: /** The path to the local tmp directory */
054: File getTempDir();
055:
056: void setTempDir(File tempDir);
057:
058: /** The enhanced suffix order */
059: String[] getEnhancedSuffixOrder();
060:
061: void setEnhancedSuffixOrder(String[] enhancedSuffixOrder);
062:
063: /** The ObjectName of the ServiceController */
064: void setServiceController(ObjectName serviceController);
065:
066: /** The path to the local tmp directory in String form */
067: String getTempDirString();
068:
069: /** The ordering of the deployment suffixes */
070: String[] getSuffixOrder();
071:
072: // Operations ----------------------------------------------------
073:
074: /**
075: * The <code>listDeployed</code> method returns a collection of
076: * DeploymemtInfo objects for the currently deployed packages.
077: * @return a <code>Collection</code> value
078: */
079: Collection listDeployed();
080:
081: /**
082: * The <code>listDeployedModules</code> method returns a collection of
083: * SerializableDeploymentInfo objects for the currently deployed packages.
084: * @return a <code>Collection</code> value
085: */
086: Collection listDeployedModules();
087:
088: /**
089: * Describe <code>listDeployedAsString</code> method here.
090: * @return a <code>String</code> value
091: */
092: String listDeployedAsString();
093:
094: /**
095: * The <code>listIncompletelyDeployed</code> method returns a list of
096: * packages that have not deployed completely. The toString method will
097: * include any exception in the status field.
098: * @return a <code>Collection</code> value
099: */
100: Collection listIncompletelyDeployed();
101:
102: /**
103: * The <code>listWaitingForDeployer</code> method returns a collection of
104: * the packages that currently have no identified deployer.
105: * @return a <code>Collection</code> value
106: */
107: Collection listWaitingForDeployer();
108:
109: /**
110: * The <code>addDeployer</code> method registers a deployer with the
111: * main deployer. Any waiting packages are tested to see if the new
112: * deployer will deploy them.
113: * @param deployer a <code>SubDeployer</code> value
114: */
115: void addDeployer(SubDeployer deployer);
116:
117: /**
118: * The <code>removeDeployer</code> method unregisters a deployer with the
119: * MainDeployer. Deployed packages deployed with this deployer are undeployed.
120: * @param deployer a <code>SubDeployer</code> value
121: */
122: void removeDeployer(SubDeployer deployer);
123:
124: /**
125: * The <code>listDeployers</code> method returns a collection of ObjectNames
126: * of deployers registered with the MainDeployer.
127: * @return a <code>Collection<ObjectName></code> value
128: */
129: Collection listDeployers();
130:
131: /**
132: * The <code>shutdown</code> method undeploys all deployed packages
133: * in reverse order of their deployement.
134: */
135: void shutdown();
136:
137: /**
138: * Describe <code>redeploy</code> method here.
139: * @param urlspec a <code>String</code> value
140: * @exception DeploymentException if an error occurs
141: * @exception java.net.MalformedURLException if an error occurs
142: */
143: void redeploy(String urlspec) throws DeploymentException,
144: MalformedURLException;
145:
146: /**
147: * Describe <code>redeploy</code> method here.
148: * @param url an <code>URL</code> value
149: * @exception DeploymentException if an error occurs
150: */
151: void redeploy(URL url) throws DeploymentException;
152:
153: /**
154: * Describe <code>redeploy</code> method here.
155: * @param sdi a <code>DeploymentInfo</code> value
156: * @exception DeploymentException if an error occurs
157: */
158: void redeploy(DeploymentInfo sdi) throws DeploymentException;
159:
160: /**
161: * The <code>undeploy</code> method undeploys a package identified by a URL
162: * @param url an <code>URL</code> value
163: */
164: void undeploy(URL url) throws DeploymentException;
165:
166: /**
167: * The <code>undeploy</code> method undeploys a package identified by a string representation of a URL.
168: * @param urlspec a <code>String</code> value
169: * @exception java.net.MalformedURLException if an error occurs
170: */
171: void undeploy(String urlspec) throws DeploymentException,
172: MalformedURLException;
173:
174: /**
175: * The <code>undeploy</code> method undeploys a package represented by a DeploymentInfo object.
176: * @param di a <code>DeploymentInfo</code> value
177: */
178: void undeploy(DeploymentInfo di);
179:
180: /**
181: * The <code>deploy</code> method deploys a package identified by a string representation of a URL.
182: * @param urlspec a <code>String</code> value
183: * @exception java.net.MalformedURLException if an error occurs
184: */
185: void deploy(String urlspec) throws DeploymentException,
186: MalformedURLException;
187:
188: /**
189: * The <code>deploy</code> method deploys a package identified by a URL
190: * @param url an <code>URL</code> value
191: */
192: void deploy(URL url) throws DeploymentException;
193:
194: /**
195: * The <code>deploy</code> method deploys a package represented by a DeploymentInfo object.
196: * @param deployment a <code>DeploymentInfo</code> value
197: * @exception DeploymentException if an error occurs
198: */
199: void deploy(DeploymentInfo deployment) throws DeploymentException;
200:
201: /**
202: * The <code>start</code> method starts a package identified by a URL
203: * @param urlspec an URL string value
204: * @jmx.managed-operation
205: */
206: public void start(String urlspec) throws DeploymentException,
207: MalformedURLException;
208:
209: /**
210: * The <code>stop</code> method stop a package identified by a URL
211: * @param urlspec an URL string value
212: * @jmx.managed-operation
213: */
214: public void stop(String urlspec) throws DeploymentException,
215: MalformedURLException;
216:
217: /**
218: * The <code>isDeployed</code> method tells you if a package identified
219: * by a string representation of a URL is currently deployed.
220: * @param url a <code>String</code> value
221: * @return a <code>boolean</code> value
222: * @exception java.net.MalformedURLException if an error occurs
223: */
224: boolean isDeployed(String url) throws MalformedURLException;
225:
226: /**
227: * The <code>isDeployed</code> method tells you if a packaged identified
228: * by a URL is deployed.
229: * @param url an <code>URL</code> value
230: * @return a <code>boolean</code> value
231: */
232: boolean isDeployed(URL url);
233:
234: /**
235: * The <code>getDeployment</code> method returns the DeploymentInfo object
236: * for the URL supplied.
237: * @param url an <code>URL</code> value
238: * @return a <code>DeploymentInfo</code> value
239: */
240: DeploymentInfo getDeployment(URL url);
241:
242: /**
243: * The <code>getWatchUrl</code> method returns the URL that,
244: * when modified, indicates that a redeploy is needed.
245: * @param url an <code>URL</code> value
246: * @return a <code>URL</code> value
247: */
248: URL getWatchUrl(URL url);
249:
250: /**
251: * Check the current deployment states and generate an
252: * IncompleteDeploymentException if there are mbeans
253: * waiting for depedencies.
254: * @exception IncompleteDeploymentException
255: */
256: void checkIncompleteDeployments() throws DeploymentException;
257:
258: }
|