User: user57
Date: 02/01/02 20:00:57
Modified: src/main/org/jboss/deployment AutoDeployer.java
DeployerMBeanSupport.java J2eeDeployer.java
J2eeDeployerMBean.java ServiceDeployer.java
ServiceDeployerMBean.java
Log:
o migrated all components to a new JMX domain name model. jboss.system
is now where to core/spine components live. moved all components that
were in JBOSS-SYSTEM that did not move into a jboss.* domain into
jboss (where the server is now registered). The point was to limit the
members of jboss.system to core bits only.
o Created org.jboss.system.Server, which does the work of initialization
that org.jboss.Main used to do. Main now only parses the command line,
sets up basic legecy properties and creates a Server instance.
o Moved functionality of Shutdown (component not cl tool) into Server (
which is bound as jboss.system:service=Server)
o Moved more Runtime access from Info into Server. Exposed memory info
as attributes.
o Logging a WARN everywhere that uses System.getProperty("jboss.system.home")
as that should go away soon/eventually.
o Initialized the invokerMap in the harmi impl to avoid NPE
o Made getopt.jar a member of the lib/* dir instead of adding it to the
run.jar and shutdown.jars each time.
o Minor cosmetic changes along the way.
Revision Changes Path
1.9 +3 -9 jboss/src/main/org/jboss/deployment/AutoDeployer.java
Index: AutoDeployer.java
===================================================================
RCS file: /cvsroot/jboss/jboss/src/main/org/jboss/deployment/AutoDeployer.java,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -r1.8 -r1.9
--- AutoDeployer.java 2002/01/02 17:06:54 1.8
+++ AutoDeployer.java 2002/01/03 04:00:57 1.9
@@ -4,6 +4,7 @@
* Distributable under LGPL license.
* See terms of license at gnu.org.
*/
+
package org.jboss.deployment;
import java.io.File;
@@ -58,15 +59,12 @@
* @author <a href="mailto:[EMAIL PROTECTED]">Toby Allsopp</a>
* @author <a href="mailto:[EMAIL PROTECTED]">David Maplesden</a>
* @author <a href="mailto:[EMAIL PROTECTED]">Andreas Schaefer</a>
- * @version $Revision: 1.8 $
+ * @version $Revision: 1.9 $
*/
public class AutoDeployer
extends ServiceMBeanSupport
implements AutoDeployerMBean, NotificationListener, Runnable
{
- // Constants -----------------------------------------------------
- // Attributes ----------------------------------------------------
-
/**
* Callback to the JMX agent.
*/
@@ -143,7 +141,7 @@
*/
public AutoDeployer(String urlList)
{
- this("J2EE:service=J2eeDeployer", urlList);
+ this("jboss.j2ee:service=J2eeDeployer", urlList);
}
/**
@@ -592,8 +590,6 @@
}
}
- // Protected -----------------------------------------------------
-
/**
* Scan the watched directories list, add new deployement entires for each
* that does not already exist in the watched urls map.
@@ -729,8 +725,6 @@
throw e.getTargetError();
}
}
-
- // Inner classes -------------------------------------------------
/**
* This class holds info about a deployement, such as the URL and the last
1.16 +96 -101 jboss/src/main/org/jboss/deployment/DeployerMBeanSupport.java
Index: DeployerMBeanSupport.java
===================================================================
RCS file:
/cvsroot/jboss/jboss/src/main/org/jboss/deployment/DeployerMBeanSupport.java,v
retrieving revision 1.15
retrieving revision 1.16
diff -u -r1.15 -r1.16
--- DeployerMBeanSupport.java 2001/12/18 22:59:37 1.15
+++ DeployerMBeanSupport.java 2002/01/03 04:00:57 1.16
@@ -1,9 +1,10 @@
/*
-* JBoss, the OpenSource J2EE webOS
-*
-* Distributable under LGPL license.
-* See terms of license at gnu.org.
-*/
+ * JBoss, the OpenSource J2EE webOS
+ *
+ * Distributable under LGPL license.
+ * See terms of license at gnu.org.
+ */
+
package org.jboss.deployment;
import java.io.File;
@@ -30,35 +31,38 @@
import java.util.List;
/**
-* An abstract base class for deployer service implementations.
-*
-* @author <a href="mailto:[EMAIL PROTECTED]">Toby Allsopp</a>
-* @author <a href="mailto:[EMAIL PROTECTED]">David Jencks</a>
-* @author <a href="mailto:[EMAIL PROTECTED]">Marc Fleury</a>
-* @version $Revision: 1.15 $
-*
-* <p><b>Revisions:</b>
-*
-* <p><b>20010725 Toby Allsopp (patch from David Jencks)</b>
-* <ul><li>Added <code>getDeployments</code> method so that subclasses
-* can find out what has been deployed.</li></ul>
-* <p><b>20011219 Marc Fleury</b>
-* <ul><li>Factored out inner class for deployment info</li></ul>
-*/
+ * An abstract base class for deployer service implementations.
+ *
+ * @author <a href="mailto:[EMAIL PROTECTED]">Toby Allsopp</a>
+ * @author <a href="mailto:[EMAIL PROTECTED]">David Jencks</a>
+ * @author <a href="mailto:[EMAIL PROTECTED]">Marc Fleury</a>
+ * @version $Revision: 1.16 $
+ *
+ * <p><b>Revisions:</b>
+ *
+ * <p><b>20010725 Toby Allsopp (patch from David Jencks)</b>
+ * <ul><li>Added <code>getDeployments</code> method so that subclasses
+ * can find out what has been deployed.</li></ul>
+ * <p><b>20011219 Marc Fleury</b>
+ * <ul><li>Factored out inner class for deployment info</li></ul>
+ */
public abstract class DeployerMBeanSupport
-extends ServiceMBeanSupport
-implements DeployerMBean
+ extends ServiceMBeanSupport
+ implements DeployerMBean
{
// Constants -----------------------------------------------------
- private static final String SERVICE_CONTROLLER_NAME =
"JBOSS-SYSTEM:spine=ServiceController";
+ private static final String SERVICE_CONTROLLER_NAME =
+ "jboss.system:service=ServiceController";
+
// Attributes --------------------------------------------------------
+
private ObjectName serviceControllerName;
private Map deployments = new HashMap();
/**
- * The directory that will contain local copies of deployed packages
- */
+ * The directory that will contain local copies of deployed packages
+ */
private File deployDir;
// Static --------------------------------------------------------
@@ -82,7 +86,7 @@
// DeployerMBean implementation ----------------------------------
public void deploy (String url)
- throws MalformedURLException, IOException, DeploymentException
+ throws MalformedURLException, IOException, DeploymentException
{
URL u = new URL(url);
synchronized (deployments)
@@ -113,7 +117,7 @@
}
public void undeploy (String url)
- throws MalformedURLException, IOException, DeploymentException
+ throws MalformedURLException, IOException, DeploymentException
{
URL u = new URL(url);
synchronized (deployments)
@@ -127,7 +131,7 @@
}
public boolean isDeployed (String url)
- throws MalformedURLException, DeploymentException
+ throws MalformedURLException, DeploymentException
{
URL u = new URL(url);
synchronized (deployments)
@@ -139,19 +143,17 @@
// ServiceMBeanSupport overrides ---------------------------------
/**
- * The <code>startService</code> method sets up a temporary directory
- * to hold the copies of deployed packages and possibly inflations
- * of those copies. The format is (jboss.system.home)/tmp/deploy/(deployername).
- *
- * @exception Exception if an error occurs
- */
+ * The <code>startService</code> method sets up a temporary directory
+ * to hold the copies of deployed packages and possibly inflations
+ * of those copies. The format is (jboss.system.home)/tmp/deploy/(deployername).
+ */
protected void startService()
- throws Exception
+ throws Exception
{
-
// FIXME MARCF I think we should keep the old code around (would speed up
boot time)
// Just delete on undeploy and if there is new stuff
-
+
+ log.warn("using jboss.system.home property");
deployDir = new File(
// from the top of the jboss home distribution
System.getProperty("jboss.system.home"),
@@ -180,10 +182,9 @@
}
/**
- * The <code>stopService</code> method tries to remove the
- * directory created in the createService method.
- *
- */
+ * The <code>stopService</code> method tries to remove the
+ * directory created in the createService method.
+ */
protected void stopService()
{
// Remove our temp directory
@@ -200,16 +201,16 @@
// Protected -----------------------------------------------------
/**
- * Retrieves the object associated with a deployment. This
- * association is made during deployment using the object returned
- * from <code>deploy(URL)</code>. If there is no such deployment,
- * null is returned. Note that this is distinguishable from the
- * case of a deployment with an null information object only using
- * <code>isDeployed(URL)</code>.
- *
- * @param url the deployment for which information is required
- * @return an object, possibly null
- */
+ * Retrieves the object associated with a deployment. This
+ * association is made during deployment using the object returned
+ * from <code>deploy(URL)</code>. If there is no such deployment,
+ * null is returned. Note that this is distinguishable from the
+ * case of a deployment with an null information object only using
+ * <code>isDeployed(URL)</code>.
+ *
+ * @param url the deployment for which information is required
+ * @return an object, possibly null
+ */
protected Object getInfo(URL url)
{
synchronized (deployments)
@@ -219,36 +220,36 @@
}
/**
- * Subclasses override to perform actual deployment.
- *
- * @param url the location to be deployed
- * @return an object, possibly null, that will be passed back to
- * <code>undeploy</code> and can be obtained using
- * <code>getInfo(URL)</code>
- */
+ * Subclasses override to perform actual deployment.
+ *
+ * @param url the location to be deployed
+ * @return an object, possibly null, that will be passed back to
+ * <code>undeploy</code> and can be obtained using
+ * <code>getInfo(URL)</code>
+ */
protected abstract Object deploy(URL url)
- throws IOException, DeploymentException;
+ throws IOException, DeploymentException;
/**
- * Subclasses override to perform any actions neccessary for
- * undeployment.
- *
- * @param url the location to be undeployed
- * @param info the object that was returned by the corresponding
- * <code>deploy</code>
- */
+ * Subclasses override to perform any actions neccessary for
+ * undeployment.
+ *
+ * @param url the location to be undeployed
+ * @param info the object that was returned by the corresponding
+ * <code>deploy</code>
+ */
protected abstract void undeploy(URL url, Object info)
- throws IOException, DeploymentException;
+ throws IOException, DeploymentException;
/**
- * Returns the deployments that have been deployed by this
- * deployer. The <code>Map</code> returned from this method is a
- * snapshot of the deployments at the time the method is called and
- * will not reflect any subsequent deployments or undeployments.
- *
- * @return a mapping from <code>URL</code> to
- * <code>DeploymentInfo</code>
- */
+ * Returns the deployments that have been deployed by this
+ * deployer. The <code>Map</code> returned from this method is a
+ * snapshot of the deployments at the time the method is called and
+ * will not reflect any subsequent deployments or undeployments.
+ *
+ * @return a mapping from <code>URL</code> to
+ * <code>DeploymentInfo</code>
+ */
protected Map getDeployments()
{
Map ret = new HashMap();
@@ -259,25 +260,25 @@
return ret;
}
-
// Below here are helper methods to deal with copying packages,
// unpacking packages recursively, finding things in packages,
// and similar tasks needed for most deployment activities.
- //
+
/**
- * The <code>inflateJar</code> copies the jar entries
- * from the jar url jarUrl to the directory destDir.
- * It can be used on the whole jar, a directory, or
- * a specific file in the jar.
- *
- * @param jarUrl the <code>URL</code> if the directory or entry to copy.
- * @param destDir the <code>File</code> value of the directory in which to
- * place the inflated copies.
- * @exception DeploymentException if an error occurs
- * @exception IOException if an error occurs
- */
+ * The <code>inflateJar</code> copies the jar entries
+ * from the jar url jarUrl to the directory destDir.
+ * It can be used on the whole jar, a directory, or
+ * a specific file in the jar.
+ *
+ * @param jarUrl the <code>URL</code> if the directory or entry to copy.
+ * @param destDir the <code>File</code> value of the directory in which to
+ * place the inflated copies.
+ *
+ * @throws DeploymentException if an error occurs
+ * @throws IOException if an error occurs
+ */
protected void inflateJar(URL url, File destDir, String path)
- throws DeploymentException, IOException
+ throws DeploymentException, IOException
{
/*
//Why doesn't this work???? Maybe in java 1.4?
@@ -346,7 +347,7 @@
}
protected void extractPackages(URL url, ServiceDeploymentInfo di)
- throws DeploymentException, IOException
+ throws DeploymentException, IOException
{
if (url.getFile().endsWith(".xml"))
{
@@ -448,7 +449,7 @@
}
protected void copy(InputStream in, OutputStream out)
- throws IOException
+ throws IOException
{
byte[] buffer = new byte[1024];
int read;
@@ -476,9 +477,8 @@
public File getDeployDir() { return deployDir; }
-
public File getLocalCopy(URL url, ServiceDeploymentInfo di)
- throws IOException
+ throws IOException
{
// Create a directory into which we are going to put the bytes
File localDir = new File(deployDir, generateUniqueDirName()+ File.separator);
@@ -529,17 +529,12 @@
return serviceControllerName;
}
-
// Private -------------------------------------------------------
-
private File getUniqueDir(ServiceDeploymentInfo di)
{
- File dir = new File(deployDir, generateUniqueDirName() + File.separator);
- di.addDir(dir);
- return dir;
+ File dir = new File(deployDir, generateUniqueDirName() + File.separator);
+ di.addDir(dir);
+ return dir;
}
-
- // Inner classes -------------------------------------------------
-
}
1.52 +15 -11 jboss/src/main/org/jboss/deployment/J2eeDeployer.java
Index: J2eeDeployer.java
===================================================================
RCS file: /cvsroot/jboss/jboss/src/main/org/jboss/deployment/J2eeDeployer.java,v
retrieving revision 1.51
retrieving revision 1.52
diff -u -r1.51 -r1.52
--- J2eeDeployer.java 2001/12/20 16:55:03 1.51
+++ J2eeDeployer.java 2002/01/03 04:00:57 1.52
@@ -55,7 +55,7 @@
* @author <a href="mailto:[EMAIL PROTECTED]">Toby Allsopp</a>
* @author <a href="mailto:[EMAIL PROTECTED]">Scott Stark</a>.
* @author <a href="mailto:[EMAIL PROTECTED]">Christoph G. Jung</a>.
- * @version $Revision: 1.51 $
+ * @version $Revision: 1.52 $
*/
public class J2eeDeployer
extends ServiceMBeanSupport
@@ -93,7 +93,6 @@
// <comment author="cgjung"> better be protected for subclassing </comment>
protected InstallerFactory installer;
-
// Constructors --------------------------------------------------
public J2eeDeployer()
@@ -169,16 +168,18 @@
};
}
- /** Deploys the given URL independent if it is a EJB.jar, Web.war
- * or Application.ear. In case of already deployed, it performes a
- * redeploy.
- * @param _url the url (file or http) to the archiv to deploy
- * @throws MalformedURLException in case of a malformed url
- * @throws J2eeDeploymentException if something went wrong...
- * @throws IOException if trouble while file download occurs
+ /**
+ * Deploys the given URL independent if it is a EJB.jar, Web.war
+ * or Application.ear. In case of already deployed, it performes a
+ * redeploy.
+ *
+ * @param _url the url (file or http) to the archiv to deploy
+ * @throws MalformedURLException in case of a malformed url
+ * @throws J2eeDeploymentException if something went wrong...
+ * @throws IOException if trouble while file download occurs
*/
public void deploy(String _url)
- throws MalformedURLException, IOException, J2eeDeploymentException
+ throws MalformedURLException, IOException, J2eeDeploymentException
{
URL url = new URL(_url);
@@ -302,6 +303,8 @@
}
protected File getTempDir() throws IOException {
+ log.warn("using jboss.system.home property");
+
File dir = new File(System.getProperty("jboss.system.home"));
dir = new File(dir, "tmp");
dir = new File(dir, "deploy");
@@ -376,7 +379,8 @@
* @throws IOException if the download fails
* @throws J2eeDeploymentException if the given package is somehow inconsistent
*/
- protected Deployment installApplication(URL _downloadUrl) throws IOException,
J2eeDeploymentException
+ protected Deployment installApplication(URL _downloadUrl)
+ throws IOException, J2eeDeploymentException
{
return installer.install(_downloadUrl);
}
1.10 +17 -19 jboss/src/main/org/jboss/deployment/J2eeDeployerMBean.java
Index: J2eeDeployerMBean.java
===================================================================
RCS file: /cvsroot/jboss/jboss/src/main/org/jboss/deployment/J2eeDeployerMBean.java,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -r1.9 -r1.10
--- J2eeDeployerMBean.java 2001/11/12 06:52:16 1.9
+++ J2eeDeployerMBean.java 2002/01/03 04:00:57 1.10
@@ -4,8 +4,8 @@
* Distributable under LGPL license.
* See terms of license at gnu.org.
*/
-package org.jboss.deployment;
+package org.jboss.deployment;
import java.io.IOException;
import java.net.MalformedURLException;
@@ -13,31 +13,29 @@
import org.jboss.system.ServiceMBean;
/**
- * @see
- * @author <a href="mailto:[EMAIL PROTECTED]">Daniel Schulze</a>
- * @author <a href="mailto:[EMAIL PROTECTED]">Toby Allsopp</a>
- * @version $Revision: 1.9 $
+ * ???
+ *
+ * @author <a href="mailto:[EMAIL PROTECTED]">Daniel Schulze</a>
+ * @author <a href="mailto:[EMAIL PROTECTED]">Toby Allsopp</a>
+ * @version $Revision: 1.10 $
*/
public interface J2eeDeployerMBean
extends DeployerMBean
{
- // Constants -----------------------------------------------------
- public static final String OBJECT_NAME = "J2EE:service=J2eeDeployer";
+ String OBJECT_NAME = "jboss.j2ee:service=J2eeDeployer";
- // Public --------------------------------------------------------
- public void setDeployerName(String name);
- public String getDeployerName();
+ void setDeployerName(String name);
+ String getDeployerName();
- public void setJarDeployer(ObjectName jarDeployer);
- public ObjectName getJarDeployer();
+ void setJarDeployer(ObjectName jarDeployer);
+ ObjectName getJarDeployer();
- public void setWarDeployer(ObjectName warDeployer);
- public ObjectName getWarDeployer();
+ void setWarDeployer(ObjectName warDeployer);
+ ObjectName getWarDeployer();
- public void setRarDeployer(ObjectName rarDeployer);
- public ObjectName getRarDeployer();
+ void setRarDeployer(ObjectName rarDeployer);
+ ObjectName getRarDeployer();
- public void setServiceDeployer(ObjectName javaDeployer);
- public ObjectName getServiceDeployer();
-
+ void setServiceDeployer(ObjectName javaDeployer);
+ ObjectName getServiceDeployer();
}
1.22 +181 -200 jboss/src/main/org/jboss/deployment/ServiceDeployer.java
Index: ServiceDeployer.java
===================================================================
RCS file: /cvsroot/jboss/jboss/src/main/org/jboss/deployment/ServiceDeployer.java,v
retrieving revision 1.21
retrieving revision 1.22
diff -u -r1.21 -r1.22
--- ServiceDeployer.java 2001/12/29 21:57:20 1.21
+++ ServiceDeployer.java 2002/01/03 04:00:57 1.22
@@ -1,11 +1,11 @@
/*
-* JBoss, the OpenSource J2EE webOS
-*
-* Distributable under LGPL license.
-* See terms of license at gnu.org.
-*/
-package org.jboss.deployment;
+ * JBoss, the OpenSource J2EE webOS
+ *
+ * Distributable under LGPL license.
+ * See terms of license at gnu.org.
+ */
+package org.jboss.deployment;
import java.io.File;
import java.io.FilenameFilter;
@@ -43,95 +43,93 @@
import org.xml.sax.SAXException;
/**
-* This is the main Service Deployer API.
-*
-* @see org.jboss.system.Service
-* @author <a href="mailto:[EMAIL PROTECTED]">Marc Fleury</a>
-* @author <a href="mailto:[EMAIL PROTECTED]">David Maplesden</a>
-* @author <a href="mailto:[EMAIL PROTECTED]">David Jencks</a>
-* @version $Revision: 1.21 $ <p>
-*
-* <b>20010830 marc fleury:</b>
-* <ul>initial import
-* <li>
-* </ul>
-*
-* <p><b>20010905 david maplesden:</b>
-* <ul>
-* <li>Changed deployment procedure to deploy all listed mbeans, then
-* initialise them all before finally starting them all. Changed services
-* sets to lists to maintain ordering.
-* </ul>
-*
-* <b>20010908 david jencks</b>
-* <ol>
-* <li> fixed tabs to spaces and log4j logging. Made the urlToServiceSet
-* map actually use the url supplied to deploy. Made postRegister use
-* deploy. Made undeploy work, and implemented sar dependency management
-* and recursive deploy/undeploy.
-* </ol>
-*
-* <p><b>20010907 david maplesden:</b>
-* <ul>
-* <li>Added support for "depends" tag
-* </ul>
-*
-* <p><b>20011210 marc fleury:</b>
-* <ul>
-* <li>Removing the classpath dependency to explicit jars
-* </ul>
-* <p><b>20011211 marc fleury:</b>
-* <ul>
-* <li>rewrite
-* </ul>
-*/
+ * This is the main Service Deployer API.
+ *
+ * @see org.jboss.system.Service
+ * @author <a href="mailto:[EMAIL PROTECTED]">Marc Fleury</a>
+ * @author <a href="mailto:[EMAIL PROTECTED]">David Maplesden</a>
+ * @author <a href="mailto:[EMAIL PROTECTED]">David Jencks</a>
+ * @version $Revision: 1.22 $ <p>
+ *
+ * <b>20010830 marc fleury:</b>
+ * <ul>initial import
+ * <li>
+ * </ul>
+ *
+ * <p><b>20010905 david maplesden:</b>
+ * <ul>
+ * <li>Changed deployment procedure to deploy all listed mbeans, then
+ * initialise them all before finally starting them all. Changed services
+ * sets to lists to maintain ordering.
+ * </ul>
+ *
+ * <b>20010908 david jencks</b>
+ * <ol>
+ * <li> fixed tabs to spaces and log4j logging. Made the urlToServiceSet
+ * map actually use the url supplied to deploy. Made postRegister use
+ * deploy. Made undeploy work, and implemented sar dependency management
+ * and recursive deploy/undeploy.
+ * </ol>
+
+ * <p><b>20010907 david maplesden:</b>
+ * <ul>
+ * <li>Added support for "depends" tag
+ * </ul>
+ *
+ * <p><b>20011210 marc fleury:</b>
+ * <ul>
+ * <li>Removing the classpath dependency to explicit jars
+ * </ul>
+ *
+ * <p><b>20011211 marc fleury:</b>
+ * <ul>
+ * <li>rewrite
+ * </ul>
+ */
public class ServiceDeployer
-extends DeployerMBeanSupport
-implements ServiceDeployerMBean
+ extends DeployerMBeanSupport
+ implements ServiceDeployerMBean
{
// Attributes --------------------------------------------------------
private ObjectName objectName;
- //Find all the deployment info for a url
+ // Find all the deployment info for a url
private final Map urlToServiceDeploymentInfoMap = new HashMap();
- //Find what package an mbean came from.
+ // Find what package an mbean came from.
private final Map objectNameToSupplyingPackageMap = new HashMap();
-
-
// Public --------------------------------------------------------
/**
- * Gets the Name of the ServiceDeployer object
- *
- * @return returns "ServiceDeployer"
- */
+ * Gets the Name of the ServiceDeployer object
+ *
+ * @return returns "ServiceDeployer"
+ */
public String getName()
{
return "ServiceDeployer";
}
/**
- * Gets the FilenameFilter that the AutoDeployer uses to decide which files
- * will be deployed by the ServiceDeployer. Currently .jsr, .sar, and files
- * ending in service.xml are accepted.
- *
- * @return The FileNameFilter for use by the AutoDeployer.
- */
+ * Gets the FilenameFilter that the AutoDeployer uses to decide which files
+ * will be deployed by the ServiceDeployer. Currently .jsr, .sar, and files
+ * ending in service.xml are accepted.
+ *
+ * @return The FileNameFilter for use by the AutoDeployer.
+ */
public FilenameFilter getDeployableFilter()
{
- return
- new FilenameFilter()
+ return new FilenameFilter()
{
/**
- * Determines which files are accepted by the Deployer.
- *
- * @param dir Directory of candidate file.
- * @param filename Filename of candidate file.
- * @return Whether candidate file should be deployed by
- * this deployer.
- */
+ * Determines which files are accepted by the Deployer.
+ *
+ * @param dir Directory of candidate file.
+ * @param filename Filename of candidate file.
+ * @return Whether candidate file should be deployed by
+ * this deployer.
+ */
public boolean accept(File dir, String filename)
{
filename = filename.toLowerCase();
@@ -141,29 +139,28 @@
};
}
-
/**
- * Deploys a package identified by a url string. This stops if a previous
- * version exists. The package can be a *service.xml file, a sar service
- * archive, or a plain jar or zip file with no deployment descriptor.
- * In any case, all classes found in the package or sar subpackages are
- * added to the extensible classloader. If there are classpath elements
- * in the configuration file, the named packages are loaded
- * (in separate classloaders) unless they have been explicitly undeployed,
- * in which case deployment of this package is suspended until they have been
- * redeployed. Then the mbeans named in the configuration file are created
- * using the ServiceController. Dependencies between mbeans are handled by
- * the ServiceController.
- *
- * @param urlString The location of the package to deploy
- * @exception MalformedURLException Thrown if a malformed url string is
- * supplied.
- * @exception IOException Thrown if some read operation failed.
- * @exception DeploymentException Thrown if the package could not be
- * deployed.
- */
+ * Deploys a package identified by a url string. This stops if a previous
+ * version exists. The package can be a *service.xml file, a sar service
+ * archive, or a plain jar or zip file with no deployment descriptor.
+ * In any case, all classes found in the package or sar subpackages are
+ * added to the extensible classloader. If there are classpath elements
+ * in the configuration file, the named packages are loaded
+ * (in separate classloaders) unless they have been explicitly undeployed,
+ * in which case deployment of this package is suspended until they have been
+ * redeployed. Then the mbeans named in the configuration file are created
+ * using the ServiceController. Dependencies between mbeans are handled by
+ * the ServiceController.
+ *
+ * @param urlString The location of the package to deploy
+ * @exception MalformedURLException Thrown if a malformed url string is
+ * supplied.
+ * @exception IOException Thrown if some read operation failed.
+ * @exception DeploymentException Thrown if the package could not be
+ * deployed.
+ */
public Object deploy(URL url)
- throws MalformedURLException, IOException, DeploymentException
+ throws MalformedURLException, IOException, DeploymentException
{
ServiceDeploymentInfo sdi = getSdi(url, true);
@@ -182,13 +179,13 @@
}
// The deployment descriptor was loaded by deployLocalClasses
- if(sdi.dd != null)
+ if (sdi.dd != null)
{
// In case there is a dependent classpath defined parse it
// This creates
parseXMLClasspath(url, sdi);
- //Copy local directory if local-directory element is present
+ // Copy local directory if local-directory element is present
try
{
NodeList lds = sdi.dd.getElementsByTagName("local-directory");
@@ -198,6 +195,7 @@
Element ld = (Element)lds.item(i);
String path = ld.getAttribute("path");
log.debug("about to copy local directory at " + path);
+ log.warn("using jboss.system.home property");
File jbossHomeDir = new
File(System.getProperty("jboss.system.home"));
File localBaseDir = new File(jbossHomeDir, "db"+File.separator);
//Get the url of the local copy from the classloader.
@@ -206,13 +204,12 @@
log.debug("copying to " + localBaseDir);
inflateJar(localUrl, localBaseDir, path);
- } // end of for ()
-
-
- } catch (Exception e)
+ }
+ }
+ catch (Exception e)
{
log.error("Problem copying local directory", e);
- } // end of try-catch
+ }
// install the MBeans in this descriptor
log.debug("addMBeans: url " + url);
@@ -224,7 +221,6 @@
for (int i = 0; i < nl.getLength(); i++)
{
-
Element mbean = (Element)nl.item(i);
log.debug("deploying with ServiceController mbean " + mbean);
@@ -271,19 +267,16 @@
}
return sdi;
}
-
- private ServiceDeploymentInfo loadFiles(URL url)
- throws DeploymentException
+ private ServiceDeploymentInfo loadFiles(URL url) throws DeploymentException
{
-
ServiceDeploymentInfo sdi = getSdi(url, true);
if (sdi.state == ServiceDeploymentInfo.EMPTY)
{
try
{
- log.debug("deploying document " + url);
+ log.info("deploying: " + url);
// A service can be as simple as a directory from which to load classes
if(url.toString().endsWith("/"))
@@ -294,7 +287,6 @@
}
else // That "service" is a file
{
-
// Create a local copy of that File, the sdi keeps track of the copy
directory
File localFile = getLocalCopy(url, sdi);
@@ -313,8 +305,8 @@
sdi.state = ServiceDeploymentInfo.CLASSESLOADED;
}
- //a service archive with classes, jars, and
META-INF/jboss-service.xml
- //configuration file
+ // a service archive with classes, jars, and
META-INF/jboss-service.xml
+ // configuration file
else if (localFile.getName().endsWith(".sar"))
{
sdi.createClassLoader();
@@ -325,20 +317,19 @@
URL docUrl = (URL)i.next();
if (docUrl.getFile().endsWith("META-INF/jboss-service.xml"))
{
-
sdi.dd = getDocument(docUrl);
break docfound;
- } // end of if ()
+ }
+ }
- } // end of for ()
throw new DeploymentException("No META-INF/jboss-service.xml
found in alleged sar!");
}
//sdi.state = ServiceDeploymentInfo.CLASSESLOADED;
log.debug("got document jboss-service.xml from cl");
}
- //Or maybe its just a jar to be put in the extensible classloader.
+ // Or maybe its just a jar to be put in the extensible classloader.
else if(localFile.getName().endsWith(".jar")
|| localFile.getName().endsWith(".zip"))
{
@@ -361,10 +352,10 @@
} // end of if (EMPTY)
return sdi;
-
}
- private void parseXMLClasspath(URL url, ServiceDeploymentInfo sdi) throws
DeploymentException
+ private void parseXMLClasspath(URL url, ServiceDeploymentInfo sdi)
+ throws DeploymentException
{
Document dd = sdi.dd;
@@ -430,12 +421,12 @@
new java.io.FileFilter()
{
/**
- * filters for jar and zip files in the local directory.
- *
- * @param pathname Path to the candidate file.
- * @return True if the file is a jar or zip
- * file.
- */
+ * filters for jar and zip files in the local directory.
+ *
+ * @param pathname Path to the candidate file.
+ * @return True if the file is a jar or zip
+ * file.
+ */
public boolean accept(File pathname)
{
String name2 = pathname.getName();
@@ -458,7 +449,6 @@
// We have an archive whatever the codebase go ahead and load the libraries
else if (!archives.equals(""))
{
-
// We have a real codebase specified in xml
// We add it to the classpath so we load files from it (http/file will
work)
if (!codebase.equals(""))
@@ -472,7 +462,6 @@
{
log.error("Couldn't create URL for codebase "+codebase, e2);
throw new DeploymentException(e2.getMessage());
-
}
}
@@ -482,7 +471,9 @@
if (archives.equals("*") || archives.equals(""))
{
// Safeguard
- if (!codebase.startsWith("file:") && archives.equals("*")) throw new
DeploymentException("No wildcard permitted in http deployment you must specify
individual jars");
+ if (!codebase.startsWith("file:") && archives.equals("*"))
+ throw new DeploymentException
+ ("No wildcard permitted in http deployment you must specify
individual jars");
try
{
@@ -492,12 +483,11 @@
new java.io.FileFilter()
{
/**
- * filters for jar and zip files in the local directory.
- *
- * @param pathname Path to the candidate file.
- * @return True if the file is a jar or zip
- * file.
- */
+ * filters for jar and zip files in the local directory.
+ *
+ * @param pathname Path to the candidate file.
+ * @return True if the file is a jar or zip file.
+ */
public boolean accept(File pathname)
{
String name2 = pathname.getName();
@@ -505,6 +495,7 @@
}
}
);
+
for (int j = 0; jars != null && j < jars.length; j++)
{
classpath.add(jars[j].getCanonicalFile().toURL());
@@ -516,8 +507,6 @@
throw new DeploymentException(e.getMessage());
}
}
-
-
else // A real archive listing (as opposed to wildcard)
{
StringTokenizer jars = new StringTokenizer(archives, ",");
@@ -531,14 +520,13 @@
}
}
}
-
else //codebase is empty and archives is empty but we did have a classpath
entry
{
throw new DeploymentException("A classpath entry was declared but no
codebase and no jars specified. Please fix jboss-service.xml in your configuration");
}
}
- //Ok, now we've found the list of urls we need... deploy their classes.
+ // Ok, now we've found the list of urls we need... deploy their classes.
Iterator jars = classpath.iterator();
URL neededUrl = null;
@@ -546,42 +534,39 @@
{
try
{
-
neededUrl = (URL)jars.next();
loadFiles(neededUrl);
log.debug("deployed classes for " + neededUrl);
-
-
- } catch (DeploymentException e) {
+ }
+ catch (DeploymentException e) {
log.error("problem deploying classes for " + neededUrl, e);
//put in list of failures TODO
- } // end of try-catch
- } // end of while ()
+ }
+ }
}
-
/**
- * Undeploys the package at the url string specified. This will: Undeploy
- * packages depending on this one. Stop, destroy, and unregister all the
- * specified mbeans Unload this package and packages this package deployed
- * via the classpath tag. Keep track of packages depending on this one that
- * we undeployed so that they can be redeployed should this one be
- * redeployed.
- *
- * @param urlString The location of the package to be
- * undeployed (used to index the packages, not to read service.xml on
- * undeploy!
- * @exception MalformedURLException Thrown if the url string is not valid.
- * @exception IOException Thrown if something could not be read.
- * @exception DeploymentException Thrown if the package could not be
- * undeployed
- */
+ * Undeploys the package at the url string specified. This will: Undeploy
+ * packages depending on this one. Stop, destroy, and unregister all the
+ * specified mbeans Unload this package and packages this package deployed
+ * via the classpath tag. Keep track of packages depending on this one that
+ * we undeployed so that they can be redeployed should this one be
+ * redeployed.
+ *
+ * @param urlString The location of the package to be
+ * undeployed (used to index the packages,
+ * not to read service.xml on undeploy!
+ * @exception MalformedURLException Thrown if the url string is not valid.
+ * @exception IOException Thrown if something could not be read.
+ * @exception DeploymentException Thrown if the package could not be
+ * undeployed
+ */
public void undeploy(URL url, Object localurlObject)
- throws MalformedURLException, IOException, DeploymentException
+ throws MalformedURLException, IOException, DeploymentException
{
- log.debug("undeploying document " + url);
+ log.info("undeploying: " + url);
ServiceDeploymentInfo sdi = getSdi(url, false);
@@ -599,17 +584,16 @@
//Hey, man, we're all cleaned up!
}
-
/**
- * MBeanRegistration interface. Get the mbean server.
- *
- * @param server Our mbean server.
- * @param name our proposed object name.
- * @return our actual object name
- * @exception java.lang.Exception Thrown if we are supplied an invalid name.
- */
+ * MBeanRegistration interface. Get the mbean server.
+ *
+ * @param server Our mbean server.
+ * @param name our proposed object name.
+ * @return our actual object name
+ * @exception java.lang.Exception Thrown if we are supplied an invalid name.
+ */
public ObjectName preRegister(MBeanServer server, ObjectName name)
- throws java.lang.Exception
+ throws java.lang.Exception
{
super.preRegister(server, name);
log.debug("ServiceDeployer preregistered with mbean server");
@@ -618,15 +602,14 @@
return objectName;
}
-
/**
- * PostRegister initialized the ServiceDeployed mbean and tries to load a
- * spine package to set up basic jboss. At the moment the spine package
- * should be jboss-service.xml or (deprecated) jboss.jcml. Soon we should
- * have an actual sar with the code as well as configuration info.
- *
- * @param registrationDone Description of Parameter
- */
+ * PostRegister initialized the ServiceDeployed mbean and tries to load a
+ * spine package to set up basic jboss. At the moment the spine package
+ * should be jboss-service.xml or (deprecated) jboss.jcml. Soon we should
+ * have an actual sar with the code as well as configuration info.
+ *
+ * @param registrationDone Description of Parameter
+ */
public void postRegister(java.lang.Boolean registrationDone)
{
try
@@ -651,7 +634,7 @@
}
protected Document getDocument(URL url)
- throws DeploymentException
+ throws DeploymentException
{
try
{
@@ -677,16 +660,15 @@
} // end of try-catch
}
-
// Private --------------------------------------------------------
-
-
- private void removeMBeans(URL url, ServiceDeploymentInfo sdi) throws
DeploymentException
+ private void removeMBeans(URL url, ServiceDeploymentInfo sdi)
+ throws DeploymentException
{
log.debug("removeMBeans: url " + url);
List services = sdi.mbeans;
int lastService = services.size();
+
//stop services in reverse order.
for (ListIterator i = services.listIterator(lastService); i.hasPrevious();)
{
@@ -697,6 +679,7 @@
new Object[] {name},
new String[] {"javax.management.ObjectName"});
}
+
for (ListIterator i = services.listIterator(lastService); i.hasPrevious();)
{
ObjectName name = (ObjectName)i.previous();
@@ -706,6 +689,7 @@
new Object[] {name},
new String[] {"javax.management.ObjectName"});
}
+
for (ListIterator i = services.listIterator(lastService); i.hasPrevious();)
{
ObjectName name = (ObjectName)i.previous();
@@ -717,23 +701,22 @@
//we don't supply it any more, maybe someone else will later.
objectNameToSupplyingPackageMap.remove(name);
}
+
sdi.state = ServiceDeploymentInfo.CLASSESLOADED;
}
-
-
/**
- * Parse an object name from the given element attribute 'name'.
- *
- * @param element Element to parse name from.
- * @return Object name.
- *
- * @throws ConfigurationException Missing attribute 'name'
- * (thrown if 'name' is null or "").
- * @throws MalformedObjectNameException
- */
+ * Parse an object name from the given element attribute 'name'.
+ *
+ * @param element Element to parse name from.
+ * @return Object name.
+ *
+ * @throws ConfigurationException Missing attribute 'name'
+ * (thrown if 'name' is null or "").
+ * @throws MalformedObjectNameException
+ */
private ObjectName parseObjectName(final Element element)
- throws org.jboss.system.ConfigurationException, MalformedObjectNameException
+ throws org.jboss.system.ConfigurationException, MalformedObjectNameException
{
String name = ((org.w3c.dom.Text)element.getFirstChild()).getData().trim();
if (name == null || name.trim().equals("")) {
@@ -742,10 +725,10 @@
}
return new ObjectName(name);
}
-
- /* Calls server.invoke, unwraps exceptions, and returns server output
- */
+ /**
+ * Calls server.invoke, unwraps exceptions, and returns server output
+ */
private Object invoke(ObjectName name, String method, Object[] args, String[]
sig)
{
try
@@ -778,9 +761,9 @@
}
return null;
}
-
- private ServiceDeploymentInfo getSdi(URL url, boolean createIfMissing) throws
DeploymentException
+ private ServiceDeploymentInfo getSdi(URL url, boolean createIfMissing)
+ throws DeploymentException
{
ServiceDeploymentInfo sdi =
(ServiceDeploymentInfo)urlToServiceDeploymentInfoMap.get(url);
if (sdi == null)
@@ -798,5 +781,3 @@
return sdi;
}
}
-
-
1.3 +23 -26 jboss/src/main/org/jboss/deployment/ServiceDeployerMBean.java
Index: ServiceDeployerMBean.java
===================================================================
RCS file:
/cvsroot/jboss/jboss/src/main/org/jboss/deployment/ServiceDeployerMBean.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- ServiceDeployerMBean.java 2001/11/24 19:46:42 1.2
+++ ServiceDeployerMBean.java 2002/01/03 04:00:57 1.3
@@ -1,34 +1,31 @@
/*
-* JBoss, the OpenSource J2EE server
-*
-* Distributable under LGPL license.
-* See terms of license at gnu.org.
-*/
-package org.jboss.deployment;
-
+ * JBoss, the OpenSource J2EE server
+ *
+ * Distributable under LGPL license.
+ * See terms of license at gnu.org.
+ */
+package org.jboss.deployment;
import org.jboss.system.Service;
+
/**
-* This is the main Service Deployer API.
-*
-* @author <a href="mailto:[EMAIL PROTECTED]">Marc Fleury</a>
-* @see org.jboss.system.Service
-*
-* @version $Revision: 1.2 $
-*
-* <p><b>20010830 marc fleury:</b>
-* <ul>
-* initial import
-* <li>
-* </ul>
-*/
+ * This is the main Service Deployer API.
+ *
+ * @author <a href="mailto:[EMAIL PROTECTED]">Marc Fleury</a>
+ * @see org.jboss.system.Service
+ *
+ * @version $Revision: 1.3 $
+ *
+ * <p><b>20010830 marc fleury:</b>
+ * <ul>
+ * initial import
+ * <li>
+ * </ul>
+ */
public interface ServiceDeployerMBean
-extends Service, DeployerMBean
+ extends Service, DeployerMBean
{
- // Public --------------------------------------------------------
-
/** The default object name. */
- public static final String OBJECT_NAME = "JBOSS-SYSTEM:service=ServiceDeployer";
-
-}
+ String OBJECT_NAME = "jboss.system:service=ServiceDeployer";
+}
\ No newline at end of file
_______________________________________________
Jboss-development mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/jboss-development