From: Andreas S. <sch...@us...> - 2002-05-04 01:08:25
|
User: schaefera Date: 02/05/03 18:08:24 Modified: src/main/org/jboss/deployment SARDeployer.java Log: Added new Stats classes (JMS related) to JSR-77 implemenation and added the bank-new test application but this does not work right now properly but it is not added to the default tests so I shouldn't bother someone. Revision Changes Path 1.9 +35 -2 jboss-system/src/main/org/jboss/deployment/SARDeployer.java Index: SARDeployer.java =================================================================== RCS file: /cvsroot/jboss/jboss-system/src/main/org/jboss/deployment/SARDeployer.java,v retrieving revision 1.8 retrieving revision 1.9 diff -u -r1.8 -r1.9 --- SARDeployer.java 15 Apr 2002 02:48:53 -0000 1.8 +++ SARDeployer.java 4 May 2002 01:08:24 -0000 1.9 @@ -16,6 +16,8 @@ import java.io.OutputStream; import java.io.FileOutputStream; +import java.lang.reflect.Method; + import java.net.MalformedURLException; import java.net.URL; @@ -71,7 +73,7 @@ * @author <a href="mailto:Dav...@or...">David Maplesden</a> * @author <a href="mailto:d_j...@us...">David Jencks</a> * @author <a href="mailto:ja...@pl...">Jason Dillon</a> - * @version $Revision: 1.8 $ + * @version $Revision: 1.9 $ * * <p><b>20010830 marc fleury:</b> * <ul> @@ -236,7 +238,38 @@ { // install the MBeans in this descriptor log.debug("Deploying SAR, create step: url " + di.url); - + + // Create JSR-77 EJB-Module +/* + try { + String lURL = di.url.toString(); + int lIndex = lURL.lastIndexOf( "/" ); + String lName = lURL.substring( lIndex >= 0 ? lIndex + 1 : 0 ); + // This is to go around the project dependencies + Class lSARModule = Class.forName( "org.jboss.management.j2ee.SARModule" ); + Method lCreate = lSARModule.getMethod( + "create", + new Class[] { + MBeanServer.class, + String.class, + String.class, + URL.class + } + ); + lCreate.invoke( + null, + new Object[] { + server, + ( di.parent == null ? lName : di.parent.shortName ), + lName, + di.localUrl + } + ); + } + catch( Exception e ) { + log.error( "Could not create SARModule", e ); + } +*/ List mbeans = di.mbeans; mbeans.clear(); |
From: Andreas S. <sch...@us...> - 2002-05-08 06:33:06
|
User: schaefera Date: 02/05/07 23:33:05 Modified: src/main/org/jboss/deployment SARDeployer.java Log: Implemented the JSR-77 representation for SARs and MBeans. Also fixed a problem with the new Mail service in JSR-77 test. Pending is how to deal with EARs etc. in SARs. Revision Changes Path 1.10 +41 -13 jboss-system/src/main/org/jboss/deployment/SARDeployer.java Index: SARDeployer.java =================================================================== RCS file: /cvsroot/jboss/jboss-system/src/main/org/jboss/deployment/SARDeployer.java,v retrieving revision 1.9 retrieving revision 1.10 diff -u -r1.9 -r1.10 --- SARDeployer.java 4 May 2002 01:08:24 -0000 1.9 +++ SARDeployer.java 8 May 2002 06:33:05 -0000 1.10 @@ -73,7 +73,7 @@ * @author <a href="mailto:Dav...@or...">David Maplesden</a> * @author <a href="mailto:d_j...@us...">David Jencks</a> * @author <a href="mailto:ja...@pl...">Jason Dillon</a> - * @version $Revision: 1.9 $ + * @version $Revision: 1.10 $ * * <p><b>20010830 marc fleury:</b> * <ul> @@ -239,37 +239,29 @@ // install the MBeans in this descriptor log.debug("Deploying SAR, create step: url " + di.url); - // Create JSR-77 EJB-Module -/* - try { + // Create JSR-77 SAR-Module String lURL = di.url.toString(); int lIndex = lURL.lastIndexOf( "/" ); String lName = lURL.substring( lIndex >= 0 ? lIndex + 1 : 0 ); // This is to go around the project dependencies Class lSARModule = Class.forName( "org.jboss.management.j2ee.SARModule" ); - Method lCreate = lSARModule.getMethod( + Method lCreateSAR = lSARModule.getMethod( "create", new Class[] { MBeanServer.class, String.class, - String.class, URL.class } ); - lCreate.invoke( + ObjectName lSARName = (ObjectName) lCreateSAR.invoke( null, new Object[] { server, - ( di.parent == null ? lName : di.parent.shortName ), lName, di.localUrl } ); - } - catch( Exception e ) { - log.error( "Could not create SARModule", e ); - } -*/ + log.info( "Created SARModule: " + lSARName ); List mbeans = di.mbeans; mbeans.clear(); @@ -284,6 +276,42 @@ // The service won't be created until explicitly dependent mbeans are created serviceController.create(service); } + // This is to go around the project dependencies + Class lMBean = Class.forName( "org.jboss.management.j2ee.MBean" ); + Method lCreate = lMBean.getMethod( + "create", + new Class[] { + MBeanServer.class, + String.class, + String.class + } + ); + ObjectName[] lNames = (ObjectName[]) mbeans.toArray( new ObjectName[ 0 ] ); + for( int i = 0; i < lNames.length; i++ ) { + // If SARModule is not created yet, do it now + if( lSARName == null ) { + lSARName = (ObjectName) lCreateSAR.invoke( + null, + new Object[] { + server, + lName, + di.localUrl + } + ); + log.info( "Created SARModule: " + lSARName ); + } + // Create JSR-77 MBean + log.info( "Create MBean, name: " + lNames[ i ] + ", SAR Module: " + lSARName ); + lCreate.invoke( + null, + new Object[] { + server, + lNames[ i ] + "", + lSARName == null ? null : lSARName + "" + } + ); + } + } catch (Exception e) { log.error("create operation failed for package " + di.url, e); |
From: Andreas S. <sch...@us...> - 2002-05-09 01:41:39
|
User: schaefera Date: 02/05/08 18:41:38 Modified: src/main/org/jboss/deployment SARDeployer.java Log: Fixed some problem with the standalone Modules, added the correct removale of the Modules and their Commponents for SARModule/MBean and EJBModule/EJB. Revision Changes Path 1.11 +61 -1 jboss-system/src/main/org/jboss/deployment/SARDeployer.java Index: SARDeployer.java =================================================================== RCS file: /cvsroot/jboss/jboss-system/src/main/org/jboss/deployment/SARDeployer.java,v retrieving revision 1.10 retrieving revision 1.11 diff -u -r1.10 -r1.11 --- SARDeployer.java 8 May 2002 06:33:05 -0000 1.10 +++ SARDeployer.java 9 May 2002 01:41:38 -0000 1.11 @@ -73,7 +73,7 @@ * @author <a href="mailto:Dav...@or...">David Maplesden</a> * @author <a href="mailto:d_j...@us...">David Jencks</a> * @author <a href="mailto:ja...@pl...">Jason Dillon</a> - * @version $Revision: 1.10 $ + * @version $Revision: 1.11 $ * * <p><b>20010830 marc fleury:</b> * <ul> @@ -652,6 +652,66 @@ { log.error("Could not remove mbean: " + name, e); } // end of try-catch + } + try { + // This is to go around the project dependencies + Class lMBean = Class.forName( "org.jboss.management.j2ee.MBean" ); + Method lDestroy = lMBean.getMethod( + "destroy", + new Class[] { + MBeanServer.class, + String.class + } + ); + for (ListIterator i = services.listIterator(lastService); i.hasPrevious();) + { + ObjectName name = (ObjectName)i.previous(); + try + { + // Destory JSR-77 MBean + log.info( "Remove MBean, name: " + name ); + lDestroy.invoke( + null, + new Object[] { + server, + name + "" + } + ); + } + catch (Exception e) + { + log.error("Could not remove JSR-77 MBean", e); + } // end of try-catch + } + } + catch( Exception e ) { + log.error( "Could not access JSR-77 MBean class", e ); + } + try { + // Remove JSR-77 SAR-Module + String lURL = di.url.toString(); + int lIndex = lURL.lastIndexOf( "/" ); + String lName = lURL.substring( lIndex >= 0 ? lIndex + 1 : 0 ); + // This is to go around the project dependencies + Class lSARModule = Class.forName( "org.jboss.management.j2ee.SARModule" ); + Method lDestroySAR = lSARModule.getMethod( + "destroy", + new Class[] { + MBeanServer.class, + String.class + } + ); + lDestroySAR.invoke( + null, + new Object[] { + server, + lName + } + ); + log.debug( "Removed SARModule with name: " + lName ); + } + catch( Exception e ) { + log.error( "Could not remove SAR Module", e ); } } |
From: Andreas S. <sch...@us...> - 2002-05-12 07:06:26
|
User: schaefera Date: 02/05/12 00:06:25 Modified: src/main/org/jboss/deployment SARDeployer.java Log: Added the State Management for SAR Modules and some minor fixes for EJBModule. Also corrected some mistakes by Jason recent updates. Revision Changes Path 1.12 +5 -3 jboss-system/src/main/org/jboss/deployment/SARDeployer.java Index: SARDeployer.java =================================================================== RCS file: /cvsroot/jboss/jboss-system/src/main/org/jboss/deployment/SARDeployer.java,v retrieving revision 1.11 retrieving revision 1.12 diff -u -r1.11 -r1.12 --- SARDeployer.java 9 May 2002 01:41:38 -0000 1.11 +++ SARDeployer.java 12 May 2002 07:06:25 -0000 1.12 @@ -73,7 +73,7 @@ * @author <a href="mailto:Dav...@or...">David Maplesden</a> * @author <a href="mailto:d_j...@us...">David Jencks</a> * @author <a href="mailto:ja...@pl...">Jason Dillon</a> - * @version $Revision: 1.11 $ + * @version $Revision: 1.12 $ * * <p><b>20010830 marc fleury:</b> * <ul> @@ -283,7 +283,8 @@ new Class[] { MBeanServer.class, String.class, - String.class + String.class, + ObjectName.class } ); ObjectName[] lNames = (ObjectName[]) mbeans.toArray( new ObjectName[ 0 ] ); @@ -307,7 +308,8 @@ new Object[] { server, lNames[ i ] + "", - lSARName == null ? null : lSARName + "" + lSARName == null ? null : lSARName + "", + lNames[ i ] } ); } |
From: David J. <dav...@di...> - 2002-05-12 23:53:30
|
Are you going to port these changes back to Branch_3_0? I applied a bug fix to head, and want to apply it to Branch_3_0 also. If you are going to backport these changes soon I will wait. Thanks david jencks On 2002.05.12 03:06:26 -0400 Andreas Schaefer wrote: > User: schaefera > Date: 02/05/12 00:06:25 > > Modified: src/main/org/jboss/deployment SARDeployer.java > Log: > Added the State Management for SAR Modules and some minor fixes for > EJBModule. Also corrected some mistakes by Jason recent updates. > > Revision Changes Path > 1.12 +5 -3 jboss-system/src/main/org/jboss/deployment/SARDeployer.java > > Index: SARDeployer.java > =================================================================== > RCS file: /cvsroot/jboss/jboss-system/src/main/org/jboss/deployment/SARDeployer.java,v > retrieving revision 1.11 > retrieving revision 1.12 > diff -u -r1.11 -r1.12 > --- SARDeployer.java 9 May 2002 01:41:38 -0000 1.11 > +++ SARDeployer.java 12 May 2002 07:06:25 -0000 1.12 > @@ -73,7 +73,7 @@ > * @author <a href="mailto:Dav...@or...">David > Maplesden</a> > * @author <a href="mailto:d_j...@us...">David > Jencks</a> > * @author <a href="mailto:ja...@pl...">Jason Dillon</a> > - * @version $Revision: 1.11 $ > + * @version $Revision: 1.12 $ > * > * <p><b>20010830 marc fleury:</b> > * <ul> > @@ -283,7 +283,8 @@ > new Class[] { > MBeanServer.class, > String.class, > - String.class > + String.class, > + ObjectName.class > } > ); > ObjectName[] lNames = (ObjectName[]) mbeans.toArray( new > ObjectName[ 0 ] ); > @@ -307,7 +308,8 @@ > new Object[] { > server, > lNames[ i ] + "", > - lSARName == null ? null : lSARName + "" > + lSARName == null ? null : lSARName + "", > + lNames[ i ] > } > ); > } > > > > > _______________________________________________________________ > > Have big pipes? SourceForge.net is looking for download mirrors. We > supply > the hardware. You get the recognition. Email Us: > ban...@so... > _______________________________________________ > jboss-cvs-commits mailing list > jbo...@li... > https://lists.sourceforge.net/lists/listinfo/jboss-cvs-commits > > |
From: David J. <d_j...@us...> - 2002-05-12 23:51:27
|
User: d_jencks Date: 02/05/12 16:51:26 Modified: src/main/org/jboss/deployment SARDeployer.java Log: Require well-formed classpath elements, and only look at top level Revision Changes Path 1.13 +178 -181 jboss-system/src/main/org/jboss/deployment/SARDeployer.java Index: SARDeployer.java =================================================================== RCS file: /cvsroot/jboss/jboss-system/src/main/org/jboss/deployment/SARDeployer.java,v retrieving revision 1.12 retrieving revision 1.13 diff -u -r1.12 -r1.13 --- SARDeployer.java 12 May 2002 07:06:25 -0000 1.12 +++ SARDeployer.java 12 May 2002 23:51:26 -0000 1.13 @@ -9,33 +9,37 @@ package org.jboss.deployment; + + + + + + + + import java.io.File; +import java.io.FileOutputStream; import java.io.FilenameFilter; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; -import java.io.FileOutputStream; - import java.lang.reflect.Method; - import java.net.MalformedURLException; import java.net.URL; - import java.util.ArrayList; import java.util.Collection; +import java.util.Enumeration; import java.util.HashMap; +import java.util.HashSet; import java.util.Iterator; import java.util.LinkedList; import java.util.List; import java.util.ListIterator; import java.util.Map; import java.util.Set; -import java.util.HashSet; import java.util.StringTokenizer; -import java.util.jar.JarFile; -import java.util.Enumeration; import java.util.jar.JarEntry; - +import java.util.jar.JarFile; import javax.management.InstanceNotFoundException; import javax.management.MBeanException; import javax.management.MBeanServer; @@ -47,22 +51,19 @@ import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.parsers.ParserConfigurationException; - import org.jboss.deployment.DeploymentInfo; - -import org.jboss.system.server.ServerConfig; -import org.jboss.system.server.ServerConfigLocator; - import org.jboss.system.Service; import org.jboss.system.ServiceControllerMBean; import org.jboss.system.ServiceMBeanSupport; +import org.jboss.system.server.ServerConfig; +import org.jboss.system.server.ServerConfigLocator; import org.jboss.util.jmx.MBeanProxy; - import org.w3c.dom.Document; import org.w3c.dom.Element; import org.w3c.dom.NodeList; import org.xml.sax.InputSource; import org.xml.sax.SAXException; +import org.w3c.dom.Node; /** * This is the main Service Deployer API. @@ -73,7 +74,7 @@ * @author <a href="mailto:Dav...@or...">David Maplesden</a> * @author <a href="mailto:d_j...@us...">David Jencks</a> * @author <a href="mailto:ja...@pl...">Jason Dillon</a> - * @version $Revision: 1.12 $ + * @version $Revision: 1.13 $ * * <p><b>20010830 marc fleury:</b> * <ul> @@ -355,197 +356,195 @@ protected void parseXMLClasspath(DeploymentInfo di) throws DeploymentException { - boolean debug = log.isDebugEnabled(); Set classpath = new HashSet(); - NodeList classpaths = di.document.getElementsByTagName("classpath"); - for (int i = 0; i < classpaths.getLength(); i++) + NodeList children = di.document.getDocumentElement().getChildNodes(); + for (int i = 0; i < children.getLength(); i++) { - Element classpathElement = (Element)classpaths.item(i); - if (debug) { - log.debug("Found classpath element: " + classpathElement); - } + if (children.item(i).getNodeType() == Node.ELEMENT_NODE) + { + Element classpathElement = (Element)children.item(i); + if (classpathElement.getTagName().equals("classpath")) + { + log.debug("Found classpath element: " + classpathElement); + if (!classpathElement.hasAttribute("codebase") + || !classpathElement.hasAttribute("archives")) + { + throw new DeploymentException("Invalid classpath element missing codebase or archives: " + classpathElement); + } // end of if () - String codebase = ""; - String archives = ""; - //Does it specify a codebase? - if (classpathElement != null) - { - // Load the codebase - codebase = classpathElement.getAttribute("codebase").trim(); - if (debug) { + // Load the codebase + String codebase = classpathElement.getAttribute("codebase").trim(); log.debug("Setting up classpath from raw codebase: " + codebase); - } - if ("".equals(codebase) || ".".equals(codebase)) - { - //does this work with http??? - // marcf: for http we could just get the substring to the last "/" - codebase = new File(di.url.getProtocol() + "://" + di.url.getFile()).getParent(); - } - // Do we have a relative codebase? - if (!(codebase.startsWith("http:") || codebase.startsWith("file:"))) - { - // put the jboss/system base in front of it - try { - codebase = new URL(installURL, codebase).toString(); - } - catch (MalformedURLException e) { - throw new DeploymentException(e); + if ("".equals(codebase) || ".".equals(codebase)) + { + //does this work with http??? + // marcf: for http we could just get the substring to the last "/" + codebase = new File(di.url.getProtocol() + "://" + di.url.getFile()).getParent(); + } + // Do we have a relative codebase? + if (!(codebase.startsWith("http:") || codebase.startsWith("file:"))) + { + // put the jboss/system base in front of it + try { + codebase = new URL(installURL, codebase).toString(); + } + catch (MalformedURLException e) { + throw new DeploymentException(e); + } } - } - // Let's make sure the formatting of the codebase ends with the / - if (codebase.startsWith("file:") && !codebase.endsWith("/")) - { - codebase += "/"; - } - else if (codebase.startsWith("http:") && !codebase.endsWith("/")) - { - codebase += "/"; - } + // Let's make sure the formatting of the codebase ends with the / + if (codebase.startsWith("file:") && !codebase.endsWith("/")) + { + codebase += "/"; + } + else if (codebase.startsWith("http:") && !codebase.endsWith("/")) + { + codebase += "/"; + } - if (debug) { log.debug("codebase is " + codebase); - } - //get the archives string - archives = classpathElement.getAttribute("archives").trim(); - if (debug) { + //get the archives string + String archives = classpathElement.getAttribute("archives").trim(); log.debug("archives are " + archives); - } - } - - if (codebase.startsWith("file:") && archives.equals("*")) - { - try - { - URL fileURL = new URL(codebase); - File dir = new File(fileURL.getFile()); - // The patchDir can only be a File one, local - File[] jars = dir.listFiles( - new java.io.FileFilter() + + if (codebase.startsWith("file:") && archives.equals("*")) + { + try { - /** - * 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) + URL fileURL = new URL(codebase); + File dir = new File(fileURL.getFile()); + // The patchDir can only be a File one, local + File[] jars = dir.listFiles( + 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. + */ + public boolean accept(File pathname) + { + String name2 = pathname.getName(); + return + (name2.endsWith(".jar") || name2.endsWith(".zip")); + } + }); + + for (int j = 0; jars != null && j < jars.length; j++) { - String name2 = pathname.getName(); - return - (name2.endsWith(".jar") || name2.endsWith(".zip")); + classpath.add(jars[j].getCanonicalFile().toURL()); } - }); - - for (int j = 0; jars != null && j < jars.length; j++) + } + catch (Exception e) + { + log.error("problem listing files in directory", e); + throw new DeploymentException("problem listing files in directory", e); + } + } + // A directory that is to be added to the classpath + else if(codebase.startsWith("file:") && archives.equals("")) { - classpath.add(jars[j].getCanonicalFile().toURL()); + try + { + URL fileURL = new URL(codebase); + File dir = new File(fileURL.getFile()); + classpath.add(dir.getCanonicalFile().toURL()); + } + catch(Exception e) + { + log.error("Failed to add classpath dir", e); + throw new DeploymentException("Failed to add classpath dir", e); + } } - } - catch (Exception e) - { - log.error("problem listing files in directory", e); - throw new DeploymentException("problem listing files in directory", e); - } - } - // A directory that is to be added to the classpath - else if(codebase.startsWith("file:") && archives.equals("")) - { - try - { - URL fileURL = new URL(codebase); - File dir = new File(fileURL.getFile()); - classpath.add(dir.getCanonicalFile().toURL()); - } - catch(Exception e) - { - log.error("Failed to add classpath dir", e); - throw new DeploymentException("Failed to add classpath dir", e); - } - } - // We have an archive whatever the codebase go ahead and load the libraries - else if (!archives.equals("")) - { - // Still no codebase? safeguard - if (codebase.equals("")) { - codebase = libraryURL.toString(); - } - - if (archives.equals("*")) - { - // Safeguard - if (!codebase.startsWith("file:") && archives.equals("*")) { - throw new DeploymentException - ("No wildcard permitted in non-file URL deployment you must specify individual jars"); - } - - try + // We have an archive whatever the codebase go ahead and load the libraries + else if (!archives.equals("")) { - URL fileURL = new URL(codebase); - File dir = new File(fileURL.getFile()); - // The patchDir can only be a File one, local - File[] jars = dir.listFiles( - new java.io.FileFilter() + // Still no codebase? safeguard + if (codebase.equals("")) { + codebase = libraryURL.toString(); + } + + if (archives.equals("*")) + { + // Safeguard + if (!codebase.startsWith("file:") && archives.equals("*")) { + throw new DeploymentException + ("No wildcard permitted in non-file URL deployment you must specify individual jars"); + } + + try { - /** - * 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) + URL fileURL = new URL(codebase); + File dir = new File(fileURL.getFile()); + // The patchDir can only be a File one, local + File[] jars = dir.listFiles( + 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. + */ + public boolean accept(File pathname) + { + String name2 = pathname.getName(); + return name2.endsWith(".jar") || name2.endsWith(".zip"); + } + }); + + for (int j = 0; jars != null && j < jars.length; j++) { - String name2 = pathname.getName(); - return name2.endsWith(".jar") || name2.endsWith(".zip"); + classpath.add(jars[j].getCanonicalFile().toURL()); } - }); + } + catch (Exception e) + { + log.error("problem listing files in directory", e); + throw new DeploymentException("problem listing files in directory", e); + } + } - for (int j = 0; jars != null && j < jars.length; j++) + else // A real archive listing (as opposed to wildcard) { - classpath.add(jars[j].getCanonicalFile().toURL()); + StringTokenizer jars = new StringTokenizer(archives, ","); + //iterate through the packages in archives + while (jars.hasMoreTokens()) + { + // The format is simple codebase + jar + try + { + String archive = codebase + jars.nextToken().trim(); + URL archiveURL = new URL(archive); + classpath.add(archiveURL); + } + catch (MalformedURLException mfue) + { + log.error("couldn't resolve package reference: ", mfue); + } // end of try-catch + } } } - catch (Exception e) + //codebase is empty and archives is empty but we did have a classpath entry + else { - log.error("problem listing files in directory", e); - throw new DeploymentException("problem listing files in directory", e); - } - } - - else // A real archive listing (as opposed to wildcard) - { - StringTokenizer jars = new StringTokenizer(archives, ","); - //iterate through the packages in archives - while (jars.hasMoreTokens()) - { - // The format is simple codebase + jar - try - { - String archive = codebase + jars.nextToken().trim(); - URL archiveURL = new URL(archive); - classpath.add(archiveURL); - } - catch (MalformedURLException mfue) - { - log.error("couldn't resolve package reference: ", mfue); - } // end of try-catch + throw new DeploymentException + ("A classpath entry was declared but no non-file codebase " + + "and no jars specified. Please fix jboss-service.xml in your configuration"); } - } - } - //codebase is empty and archives is empty but we did have a classpath entry - else - { - throw new DeploymentException - ("A classpath entry was declared but no non-file codebase " + - "and no jars specified. Please fix jboss-service.xml in your configuration"); - } - } + + } // end of if () + + } // end of if () + } //end of for //Ok, now we've found the list of urls we need... deploy their classes. Iterator jars = classpath.iterator(); @@ -570,9 +569,7 @@ log.error("operation failed", e); } - if (debug) { - log.debug("deployed classes for " + neededUrl); - } + log.debug("deployed classes for " + neededUrl); } } |
From: David J. <d_j...@us...> - 2002-05-13 02:34:48
|
User: d_jencks Date: 02/05/12 19:34:47 Modified: src/main/org/jboss/deployment Tag: Branch_3_0 SARDeployer.java Log: Require well-formed classpath elements, and only look at top level (merge from head) SARDeployer.java ) Revision Changes Path No revision No revision 1.8.2.1 +171 -180 jboss-system/src/main/org/jboss/deployment/SARDeployer.java Index: SARDeployer.java =================================================================== RCS file: /cvsroot/jboss/jboss-system/src/main/org/jboss/deployment/SARDeployer.java,v retrieving revision 1.8 retrieving revision 1.8.2.1 diff -u -r1.8 -r1.8.2.1 --- SARDeployer.java 15 Apr 2002 02:48:53 -0000 1.8 +++ SARDeployer.java 13 May 2002 02:34:47 -0000 1.8.2.1 @@ -10,30 +10,28 @@ package org.jboss.deployment; import java.io.File; +import java.io.FileOutputStream; import java.io.FilenameFilter; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; -import java.io.FileOutputStream; - +import java.lang.reflect.Method; import java.net.MalformedURLException; import java.net.URL; - import java.util.ArrayList; import java.util.Collection; +import java.util.Enumeration; import java.util.HashMap; +import java.util.HashSet; import java.util.Iterator; import java.util.LinkedList; import java.util.List; import java.util.ListIterator; import java.util.Map; import java.util.Set; -import java.util.HashSet; import java.util.StringTokenizer; -import java.util.jar.JarFile; -import java.util.Enumeration; import java.util.jar.JarEntry; - +import java.util.jar.JarFile; import javax.management.InstanceNotFoundException; import javax.management.MBeanException; import javax.management.MBeanServer; @@ -45,22 +43,19 @@ import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.parsers.ParserConfigurationException; - import org.jboss.deployment.DeploymentInfo; - -import org.jboss.system.server.ServerConfig; -import org.jboss.system.server.ServerConfigLocator; - import org.jboss.system.Service; import org.jboss.system.ServiceControllerMBean; import org.jboss.system.ServiceMBeanSupport; +import org.jboss.system.server.ServerConfig; +import org.jboss.system.server.ServerConfigLocator; import org.jboss.util.jmx.MBeanProxy; - import org.w3c.dom.Document; import org.w3c.dom.Element; import org.w3c.dom.NodeList; import org.xml.sax.InputSource; import org.xml.sax.SAXException; +import org.w3c.dom.Node; /** * This is the main Service Deployer API. @@ -71,7 +66,7 @@ * @author <a href="mailto:Dav...@or...">David Maplesden</a> * @author <a href="mailto:d_j...@us...">David Jencks</a> * @author <a href="mailto:ja...@pl...">Jason Dillon</a> - * @version $Revision: 1.8 $ + * @version $Revision: 1.8.2.1 $ * * <p><b>20010830 marc fleury:</b> * <ul> @@ -292,197 +287,195 @@ protected void parseXMLClasspath(DeploymentInfo di) throws DeploymentException { - boolean debug = log.isDebugEnabled(); Set classpath = new HashSet(); - NodeList classpaths = di.document.getElementsByTagName("classpath"); - for (int i = 0; i < classpaths.getLength(); i++) + NodeList children = di.document.getDocumentElement().getChildNodes(); + for (int i = 0; i < children.getLength(); i++) { - Element classpathElement = (Element)classpaths.item(i); - if (debug) { - log.debug("Found classpath element: " + classpathElement); - } + if (children.item(i).getNodeType() == Node.ELEMENT_NODE) + { + Element classpathElement = (Element)children.item(i); + if (classpathElement.getTagName().equals("classpath")) + { + log.debug("Found classpath element: " + classpathElement); + if (!classpathElement.hasAttribute("codebase") + || !classpathElement.hasAttribute("archives")) + { + throw new DeploymentException("Invalid classpath element missing codebase or archives: " + classpathElement); + } // end of if () - String codebase = ""; - String archives = ""; - //Does it specify a codebase? - if (classpathElement != null) - { - // Load the codebase - codebase = classpathElement.getAttribute("codebase").trim(); - if (debug) { + // Load the codebase + String codebase = classpathElement.getAttribute("codebase").trim(); log.debug("Setting up classpath from raw codebase: " + codebase); - } - if ("".equals(codebase) || ".".equals(codebase)) - { - //does this work with http??? - // marcf: for http we could just get the substring to the last "/" - codebase = new File(di.url.getProtocol() + "://" + di.url.getFile()).getParent(); - } - // Do we have a relative codebase? - if (!(codebase.startsWith("http:") || codebase.startsWith("file:"))) - { - // put the jboss/system base in front of it - try { - codebase = new URL(installURL, codebase).toString(); - } - catch (MalformedURLException e) { - throw new DeploymentException(e); + if ("".equals(codebase) || ".".equals(codebase)) + { + //does this work with http??? + // marcf: for http we could just get the substring to the last "/" + codebase = new File(di.url.getProtocol() + "://" + di.url.getFile()).getParent(); + } + // Do we have a relative codebase? + if (!(codebase.startsWith("http:") || codebase.startsWith("file:"))) + { + // put the jboss/system base in front of it + try { + codebase = new URL(installURL, codebase).toString(); + } + catch (MalformedURLException e) { + throw new DeploymentException(e); + } } - } - // Let's make sure the formatting of the codebase ends with the / - if (codebase.startsWith("file:") && !codebase.endsWith("/")) - { - codebase += "/"; - } - else if (codebase.startsWith("http:") && !codebase.endsWith("/")) - { - codebase += "/"; - } + // Let's make sure the formatting of the codebase ends with the / + if (codebase.startsWith("file:") && !codebase.endsWith("/")) + { + codebase += "/"; + } + else if (codebase.startsWith("http:") && !codebase.endsWith("/")) + { + codebase += "/"; + } - if (debug) { log.debug("codebase is " + codebase); - } - //get the archives string - archives = classpathElement.getAttribute("archives").trim(); - if (debug) { + //get the archives string + String archives = classpathElement.getAttribute("archives").trim(); log.debug("archives are " + archives); - } - } - - if (codebase.startsWith("file:") && archives.equals("*")) - { - try - { - URL fileURL = new URL(codebase); - File dir = new File(fileURL.getFile()); - // The patchDir can only be a File one, local - File[] jars = dir.listFiles( - new java.io.FileFilter() + + if (codebase.startsWith("file:") && archives.equals("*")) + { + try { - /** - * 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) + URL fileURL = new URL(codebase); + File dir = new File(fileURL.getFile()); + // The patchDir can only be a File one, local + File[] jars = dir.listFiles( + 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. + */ + public boolean accept(File pathname) + { + String name2 = pathname.getName(); + return + (name2.endsWith(".jar") || name2.endsWith(".zip")); + } + }); + + for (int j = 0; jars != null && j < jars.length; j++) { - String name2 = pathname.getName(); - return - (name2.endsWith(".jar") || name2.endsWith(".zip")); + classpath.add(jars[j].getCanonicalFile().toURL()); } - }); - - for (int j = 0; jars != null && j < jars.length; j++) + } + catch (Exception e) + { + log.error("problem listing files in directory", e); + throw new DeploymentException("problem listing files in directory", e); + } + } + // A directory that is to be added to the classpath + else if(codebase.startsWith("file:") && archives.equals("")) { - classpath.add(jars[j].getCanonicalFile().toURL()); + try + { + URL fileURL = new URL(codebase); + File dir = new File(fileURL.getFile()); + classpath.add(dir.getCanonicalFile().toURL()); + } + catch(Exception e) + { + log.error("Failed to add classpath dir", e); + throw new DeploymentException("Failed to add classpath dir", e); + } } - } - catch (Exception e) - { - log.error("problem listing files in directory", e); - throw new DeploymentException("problem listing files in directory", e); - } - } - // A directory that is to be added to the classpath - else if(codebase.startsWith("file:") && archives.equals("")) - { - try - { - URL fileURL = new URL(codebase); - File dir = new File(fileURL.getFile()); - classpath.add(dir.getCanonicalFile().toURL()); - } - catch(Exception e) - { - log.error("Failed to add classpath dir", e); - throw new DeploymentException("Failed to add classpath dir", e); - } - } - // We have an archive whatever the codebase go ahead and load the libraries - else if (!archives.equals("")) - { - // Still no codebase? safeguard - if (codebase.equals("")) { - codebase = libraryURL.toString(); - } - - if (archives.equals("*")) - { - // Safeguard - if (!codebase.startsWith("file:") && archives.equals("*")) { - throw new DeploymentException - ("No wildcard permitted in non-file URL deployment you must specify individual jars"); - } - - try + // We have an archive whatever the codebase go ahead and load the libraries + else if (!archives.equals("")) { - URL fileURL = new URL(codebase); - File dir = new File(fileURL.getFile()); - // The patchDir can only be a File one, local - File[] jars = dir.listFiles( - new java.io.FileFilter() + // Still no codebase? safeguard + if (codebase.equals("")) { + codebase = libraryURL.toString(); + } + + if (archives.equals("*")) + { + // Safeguard + if (!codebase.startsWith("file:") && archives.equals("*")) { + throw new DeploymentException + ("No wildcard permitted in non-file URL deployment you must specify individual jars"); + } + + try { - /** - * 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) + URL fileURL = new URL(codebase); + File dir = new File(fileURL.getFile()); + // The patchDir can only be a File one, local + File[] jars = dir.listFiles( + 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. + */ + public boolean accept(File pathname) + { + String name2 = pathname.getName(); + return name2.endsWith(".jar") || name2.endsWith(".zip"); + } + }); + + for (int j = 0; jars != null && j < jars.length; j++) { - String name2 = pathname.getName(); - return name2.endsWith(".jar") || name2.endsWith(".zip"); + classpath.add(jars[j].getCanonicalFile().toURL()); } - }); + } + catch (Exception e) + { + log.error("problem listing files in directory", e); + throw new DeploymentException("problem listing files in directory", e); + } + } - for (int j = 0; jars != null && j < jars.length; j++) + else // A real archive listing (as opposed to wildcard) { - classpath.add(jars[j].getCanonicalFile().toURL()); + StringTokenizer jars = new StringTokenizer(archives, ","); + //iterate through the packages in archives + while (jars.hasMoreTokens()) + { + // The format is simple codebase + jar + try + { + String archive = codebase + jars.nextToken().trim(); + URL archiveURL = new URL(archive); + classpath.add(archiveURL); + } + catch (MalformedURLException mfue) + { + log.error("couldn't resolve package reference: ", mfue); + } // end of try-catch + } } } - catch (Exception e) - { - log.error("problem listing files in directory", e); - throw new DeploymentException("problem listing files in directory", e); - } - } - - else // A real archive listing (as opposed to wildcard) - { - StringTokenizer jars = new StringTokenizer(archives, ","); - //iterate through the packages in archives - while (jars.hasMoreTokens()) + //codebase is empty and archives is empty but we did have a classpath entry + else { - // The format is simple codebase + jar - try - { - String archive = codebase + jars.nextToken().trim(); - URL archiveURL = new URL(archive); - classpath.add(archiveURL); - } - catch (MalformedURLException mfue) - { - log.error("couldn't resolve package reference: ", mfue); - } // end of try-catch + throw new DeploymentException + ("A classpath entry was declared but no non-file codebase " + + "and no jars specified. Please fix jboss-service.xml in your configuration"); } - } - } - //codebase is empty and archives is empty but we did have a classpath entry - else - { - throw new DeploymentException - ("A classpath entry was declared but no non-file codebase " + - "and no jars specified. Please fix jboss-service.xml in your configuration"); - } - } + + } // end of if () + + } // end of if () + } //end of for //Ok, now we've found the list of urls we need... deploy their classes. Iterator jars = classpath.iterator(); @@ -507,9 +500,7 @@ log.error("operation failed", e); } - if (debug) { - log.debug("deployed classes for " + neededUrl); - } + log.debug("deployed classes for " + neededUrl); } } |
From: Jason D. <us...@us...> - 2002-05-16 04:12:09
|
User: user57 Date: 02/05/15 21:12:09 Modified: src/main/org/jboss/deployment SARDeployer.java Log: o abstarcted out the file listing logic o cleaned up some exception logging and nesting o Using Strings.toURL() o Using Streams.copyb() instead of custom stream copy Revision Changes Path 1.14 +78 -170 jboss-system/src/main/org/jboss/deployment/SARDeployer.java Index: SARDeployer.java =================================================================== RCS file: /cvsroot/jboss/jboss-system/src/main/org/jboss/deployment/SARDeployer.java,v retrieving revision 1.13 retrieving revision 1.14 diff -u -r1.13 -r1.14 --- SARDeployer.java 12 May 2002 23:51:26 -0000 1.13 +++ SARDeployer.java 16 May 2002 04:12:09 -0000 1.14 @@ -9,23 +9,17 @@ package org.jboss.deployment; - - - - - - - - import java.io.File; import java.io.FileOutputStream; -import java.io.FilenameFilter; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; + import java.lang.reflect.Method; + import java.net.MalformedURLException; import java.net.URL; + import java.util.ArrayList; import java.util.Collection; import java.util.Enumeration; @@ -40,6 +34,7 @@ import java.util.StringTokenizer; import java.util.jar.JarEntry; import java.util.jar.JarFile; + import javax.management.InstanceNotFoundException; import javax.management.MBeanException; import javax.management.MBeanServer; @@ -48,16 +43,23 @@ import javax.management.ReflectionException; import javax.management.RuntimeErrorException; import javax.management.RuntimeMBeanException; + import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.parsers.ParserConfigurationException; + import org.jboss.deployment.DeploymentInfo; + import org.jboss.system.Service; import org.jboss.system.ServiceControllerMBean; import org.jboss.system.ServiceMBeanSupport; import org.jboss.system.server.ServerConfig; import org.jboss.system.server.ServerConfigLocator; + import org.jboss.util.jmx.MBeanProxy; +import org.jboss.util.stream.Streams; +import org.jboss.util.Strings; + import org.w3c.dom.Document; import org.w3c.dom.Element; import org.w3c.dom.NodeList; @@ -74,7 +76,7 @@ * @author <a href="mailto:Dav...@or...">David Maplesden</a> * @author <a href="mailto:d_j...@us...">David Jencks</a> * @author <a href="mailto:ja...@pl...">Jason Dillon</a> - * @version $Revision: 1.13 $ + * @version $Revision: 1.14 $ * * <p><b>20010830 marc fleury:</b> * <ul> @@ -136,11 +138,10 @@ // Public -------------------------------------------------------- /** - * Gets the FilenameFilter that the AutoDeployer uses to decide which files - * will be deployed by the ServiceDeployer. Currently .sar, and files - * ending in service.xml are accepted. + * Returns true if this deployer can deploy the given DeploymentInfo. * - * @return The FileNameFilter for use by the AutoDeployer. + * @return True if this deployer can deploy the given DeploymentInfo. + * * @jmx:managed-operation */ public boolean accepts(DeploymentInfo di) @@ -187,7 +188,6 @@ // Get the document parseDocument(di); - // In case there is a dependent classpath defined parse it // This creates parseXMLClasspath(di); @@ -217,7 +217,6 @@ } catch (Exception e) { - log.error("Problem in init", e); throw new DeploymentException(e); } @@ -317,9 +316,8 @@ } catch (Exception e) { - log.error("create operation failed for package " + di.url, e); destroy(di); - throw new DeploymentException(e); + throw new DeploymentException("create operation failed for package " + di.url, e); } } @@ -346,15 +344,33 @@ } } catch (Exception e) { - log.error("start operation failed on package " + di.url, e); stop(di); destroy(di); - throw new DeploymentException(e); + throw new DeploymentException("start operation failed on package " + di.url, e); } } + + protected File[] listFiles(final String urlspec) throws Exception + { + URL url = Strings.toURL(urlspec); + + // url is already canonical thanks to Strings.toURL + File dir = new File(url.getFile()); + + File[] files = dir.listFiles(new java.io.FileFilter() + { + public boolean accept(File pathname) + { + String name = pathname.getName().toLowerCase(); + return (name.endsWith(".jar") || name.endsWith(".zip")); + } + }); + + return files; + } protected void parseXMLClasspath(DeploymentInfo di) - throws DeploymentException + throws Exception { Set classpath = new HashSet(); @@ -388,12 +404,7 @@ if (!(codebase.startsWith("http:") || codebase.startsWith("file:"))) { // put the jboss/system base in front of it - try { - codebase = new URL(installURL, codebase).toString(); - } - catch (MalformedURLException e) { - throw new DeploymentException(e); - } + codebase = new URL(installURL, codebase).toString(); } // Let's make sure the formatting of the codebase ends with the / @@ -414,54 +425,17 @@ if (codebase.startsWith("file:") && archives.equals("*")) { - try - { - URL fileURL = new URL(codebase); - File dir = new File(fileURL.getFile()); - // The patchDir can only be a File one, local - File[] jars = dir.listFiles( - 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. - */ - public boolean accept(File pathname) - { - String name2 = pathname.getName(); - return - (name2.endsWith(".jar") || name2.endsWith(".zip")); - } - }); - - for (int j = 0; jars != null && j < jars.length; j++) - { - classpath.add(jars[j].getCanonicalFile().toURL()); - } - } - catch (Exception e) + File[] jars = listFiles(codebase); + + for (int j = 0; jars != null && j < jars.length; j++) { - log.error("problem listing files in directory", e); - throw new DeploymentException("problem listing files in directory", e); + classpath.add(jars[j].getCanonicalFile().toURL()); } } // A directory that is to be added to the classpath else if(codebase.startsWith("file:") && archives.equals("")) { - try - { - URL fileURL = new URL(codebase); - File dir = new File(fileURL.getFile()); - classpath.add(dir.getCanonicalFile().toURL()); - } - catch(Exception e) - { - log.error("Failed to add classpath dir", e); - throw new DeploymentException("Failed to add classpath dir", e); - } + classpath.add(Strings.toURL(codebase)); } // We have an archive whatever the codebase go ahead and load the libraries else if (!archives.equals("")) @@ -479,56 +453,30 @@ ("No wildcard permitted in non-file URL deployment you must specify individual jars"); } - try - { - URL fileURL = new URL(codebase); - File dir = new File(fileURL.getFile()); - // The patchDir can only be a File one, local - File[] jars = dir.listFiles( - 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. - */ - public boolean accept(File pathname) - { - String name2 = pathname.getName(); - return name2.endsWith(".jar") || name2.endsWith(".zip"); - } - }); - - for (int j = 0; jars != null && j < jars.length; j++) - { - classpath.add(jars[j].getCanonicalFile().toURL()); - } - } - catch (Exception e) + File[] jars = listFiles(codebase); + + for (int j = 0; jars != null && j < jars.length; j++) { - log.error("problem listing files in directory", e); - throw new DeploymentException("problem listing files in directory", e); + classpath.add(jars[j].getCanonicalFile().toURL()); } } else // A real archive listing (as opposed to wildcard) { StringTokenizer jars = new StringTokenizer(archives, ","); - //iterate through the packages in archives + + // iterate through the packages in archives while (jars.hasMoreTokens()) { // The format is simple codebase + jar + String archive = codebase + jars.nextToken().trim(); try { - String archive = codebase + jars.nextToken().trim(); - URL archiveURL = new URL(archive); - classpath.add(archiveURL); + classpath.add(Strings.toURL(archive)); } catch (MalformedURLException mfue) { - log.error("couldn't resolve package reference: ", mfue); + log.error("couldn't resolve package reference: " + archive , mfue); } // end of try-catch } } @@ -555,19 +503,12 @@ neededUrl = (URL)jars.next(); // Call the main deployer with it - try - { - // Create a new Deployment not as a subdeployment, - // An external package is not a "subdeployment" it is a stand alone - // deployment scanned as such - DeploymentInfo sub = new DeploymentInfo(neededUrl, null); - mainDeployer.deploy(sub); - } - catch (Exception e) - { - log.error("operation failed", e); - } + // Create a new Deployment not as a subdeployment, + // An external package is not a "subdeployment" it is a stand alone + // deployment scanned as such + DeploymentInfo sub = new DeploymentInfo(neededUrl, null); + mainDeployer.deploy(sub); log.debug("deployed classes for " + neededUrl); } @@ -745,49 +686,30 @@ } - /** - * Supply our default object name - * - * @param server Our mbean server. - * @param name Our proposed object name. - * @return Our actual object name - * - * @throws Exception Thrown if we are supplied an invalid name. - */ - public ObjectName preRegister(MBeanServer server, ObjectName name) - throws Exception + protected ObjectName getObjectName(MBeanServer server, ObjectName name) + throws MalformedObjectNameException { - super.preRegister(server, name); - log.debug("ServiceDeployer preregistered with mbean server"); return name == null ? OBJECT_NAME : name; } - protected void parseDocument(DeploymentInfo di) - throws DeploymentException + throws Exception { - try - { - DocumentBuilder parser = DocumentBuilderFactory.newInstance().newDocumentBuilder(); - InputStream stream = null; - - // If we are in a xml only get the URL - if (di.isXML) - stream = di.localUrl.openStream(); - // Else load from the jar or directory - else - stream = di.localCl.getResourceAsStream("META-INF/jboss-service.xml"); - // Validate that the stream is not null - if (stream == null) - throw new DeploymentException("Failed to find META-INF/jboss-service.xml"); - - InputSource is = new InputSource(stream); - di.document = parser.parse(is); - } - catch (Exception e) - { - throw new DeploymentException("Exception getting document", e); - } + DocumentBuilder parser = DocumentBuilderFactory.newInstance().newDocumentBuilder(); + InputStream stream = null; + + // If we are in a xml only get the URL + if (di.isXML) + stream = di.localUrl.openStream(); + // Else load from the jar or directory + else + stream = di.localCl.getResourceAsStream("META-INF/jboss-service.xml"); + // Validate that the stream is not null + if (stream == null) + throw new DeploymentException("Failed to find META-INF/jboss-service.xml"); + + InputSource is = new InputSource(stream); + di.document = parser.parse(is); } @@ -825,7 +747,6 @@ (JarURLConnection)jarUrl.openConnection(); JarFile jarFile = jarConnection.getJarFile(); */ - String filename = url.getFile(); JarFile jarFile = new JarFile(filename); @@ -835,31 +756,18 @@ { JarEntry entry = (JarEntry)e.nextElement(); String name = entry.getName(); + if (path == null || name.startsWith(path)) { File outFile = new File(destDir, name); if (!outFile.exists()) { - if (entry.isDirectory()) { outFile.mkdirs(); } else { - InputStream in = jarFile.getInputStream(entry); - OutputStream out = new FileOutputStream(outFile); - - try - { - byte[] buffer = new byte[1024]; - int read; - while ((read = in.read(buffer)) > 0) { - out.write(buffer, 0, read); - } - } - finally - { - in.close();out.close(); - } + Streams.copyb(jarFile.getInputStream(entry), + new FileOutputStream(outFile)); } } // end of if (outFile.exists()) } // end of if (matches path) |
From: Jason D. <us...@us...> - 2002-05-20 07:15:25
|
User: user57 Date: 02/05/20 00:15:25 Modified: src/main/org/jboss/deployment SARDeployer.java Log: o Only special case "file" urls, and _only_ "file" urls, not file* Revision Changes Path 1.16 +29 -23 jboss-system/src/main/org/jboss/deployment/SARDeployer.java Index: SARDeployer.java =================================================================== RCS file: /cvsroot/jboss/jboss-system/src/main/org/jboss/deployment/SARDeployer.java,v retrieving revision 1.15 retrieving revision 1.16 diff -u -r1.15 -r1.16 --- SARDeployer.java 16 May 2002 16:57:06 -0000 1.15 +++ SARDeployer.java 20 May 2002 07:15:24 -0000 1.16 @@ -76,7 +76,7 @@ * @author <a href="mailto:Dav...@or...">David Maplesden</a> * @author <a href="mailto:d_j...@us...">David Jencks</a> * @author <a href="mailto:ja...@pl...">Jason Dillon</a> - * @version $Revision: 1.15 $ + * @version $Revision: 1.16 $ * * <p><b>20010830 marc fleury:</b> * <ul> @@ -135,8 +135,6 @@ /** The system library URL. */ private URL libraryURL; - // Public -------------------------------------------------------- - /** * Returns true if this deployer can deploy the given DeploymentInfo. * @@ -166,12 +164,7 @@ try { // resolve the watch - if (di.url.getProtocol().startsWith("http")) - { - // We watch the top only, no directory support - di.watch = di.url; - } - else if(di.url.getProtocol().startsWith("file")) + if(di.url.getProtocol().equals("file")) { File file = new File(di.url.getFile()); @@ -184,6 +177,11 @@ di.watch = new URL(di.url, "META-INF/jboss-service.xml"); } } + else + { + // We watch the top only, no directory support + di.watch = di.url; + } // Get the document parseDocument(di); @@ -386,10 +384,17 @@ if (!classpathElement.hasAttribute("codebase") || !classpathElement.hasAttribute("archives")) { - throw new DeploymentException("Invalid classpath element missing codebase or archives: " + classpathElement); - } // end of if () - - + throw new DeploymentException + ("Invalid classpath element missing codebase or archives: " + classpathElement); + } + + // + // jason: This section needs to be rewritten to be non http & file + // specific. Should probably try to convert to a URL early. + // We should only special case file URLs then treat everything + // else the same. + // + // Load the codebase String codebase = classpathElement.getAttribute("codebase").trim(); log.debug("Setting up classpath from raw codebase: " + codebase); @@ -399,7 +404,8 @@ //does this work with http??? // marcf: for http we could just get the substring to the last "/" codebase = new File(di.url.getProtocol() + "://" + di.url.getFile()).getParent(); - } + } + // Do we have a relative codebase? if (!(codebase.startsWith("http:") || codebase.startsWith("file:"))) { @@ -419,7 +425,7 @@ log.debug("codebase is " + codebase); - //get the archives string + // get the archives string String archives = classpathElement.getAttribute("archives").trim(); log.debug("archives are " + archives); @@ -494,7 +500,7 @@ } // end of if () } //end of for - //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; @@ -577,7 +583,6 @@ { log.error("Could not destroy mbean: " + name, e); } // end of try-catch - } for (ListIterator i = services.listIterator(lastService); i.hasPrevious();) @@ -627,6 +632,7 @@ catch( Exception e ) { log.error( "Could not access JSR-77 MBean class", e ); } + try { // Remove JSR-77 SAR-Module String lURL = di.url.toString(); @@ -655,7 +661,6 @@ } } - /** * The startService method gets the mbeanProxies for MainDeployer * and ServiceController, used elsewhere. @@ -665,6 +670,7 @@ protected void startService() throws Exception { super.startService(); + mainDeployer = (MainDeployerMBean) MBeanProxy.create(MainDeployerMBean.class, MainDeployerMBean.OBJECT_NAME, @@ -699,11 +705,14 @@ InputStream stream = null; // If we are in a xml only get the URL - if (di.isXML) + if (di.isXML) { stream = di.localUrl.openStream(); + } // Else load from the jar or directory - else + else { stream = di.localCl.getResourceAsStream("META-INF/jboss-service.xml"); + } + // Validate that the stream is not null if (stream == null) throw new DeploymentException("Failed to find META-INF/jboss-service.xml"); @@ -711,9 +720,6 @@ InputSource is = new InputSource(stream); di.document = parser.parse(is); } - - - // Private -------------------------------------------------------- /** * The <code>inflateJar</code> copies the jar entries |
From: Scott M S. <st...@us...> - 2002-05-24 17:03:23
|
User: starksm Date: 02/05/24 09:27:01 Modified: src/main/org/jboss/deployment Tag: Branch_3_0 SARDeployer.java Log: Register the SAR DeploymentInfo UCL as an mbean and use this as the serivce mbean loader to ensure that services first look to their deployment context for resources. Revision Changes Path No revision No revision 1.8.2.2 +34 -32 jboss-system/src/main/org/jboss/deployment/SARDeployer.java Index: SARDeployer.java =================================================================== RCS file: /cvsroot/jboss/jboss-system/src/main/org/jboss/deployment/SARDeployer.java,v retrieving revision 1.8.2.1 retrieving revision 1.8.2.2 diff -u -r1.8.2.1 -r1.8.2.2 --- SARDeployer.java 13 May 2002 02:34:47 -0000 1.8.2.1 +++ SARDeployer.java 24 May 2002 16:26:54 -0000 1.8.2.2 @@ -66,7 +66,7 @@ * @author <a href="mailto:Dav...@or...">David Maplesden</a> * @author <a href="mailto:d_j...@us...">David Jencks</a> * @author <a href="mailto:ja...@pl...">Jason Dillon</a> - * @version $Revision: 1.8.2.1 $ + * @version $Revision: 1.8.2.2 $ * * <p><b>20010830 marc fleury:</b> * <ul> @@ -167,11 +167,13 @@ File file = new File(di.url.getFile()); // If not directory we watch the package - if (!file.isDirectory()) { + if (!file.isDirectory()) + { di.watch = di.url; } // If directory we watch the xml files - else { + else + { di.watch = new URL(di.url, "META-INF/jboss-service.xml"); } } @@ -187,23 +189,16 @@ //Copy local directory if local-directory element is present NodeList lds = di.document.getElementsByTagName("local-directory"); - if (debug) { - log.debug("about to copy " + lds.getLength() + " local directories"); - } + log.debug("about to copy " + lds.getLength() + " local directories"); for (int i = 0; i< lds.getLength(); i++) { Element ld = (Element)lds.item(i); String path = ld.getAttribute("path"); - if (debug) { - log.debug("about to copy local directory at " + path); - } + log.debug("about to copy local directory at " + path); // Get the url of the local copy from the classloader. - if (debug) { - log.debug("copying from " + di.localUrl + path + " -> " + dataDir); - } - + log.debug("copying from " + di.localUrl + path + " -> " + dataDir); inflateJar(di.localUrl, dataDir, path); } } @@ -232,25 +227,30 @@ // install the MBeans in this descriptor log.debug("Deploying SAR, create step: url " + di.url); - + // Register the SAR UCL as an mbean so we can use it as the service loader + ObjectName uclName = di.ucl.getObjectName(); + log.debug("Registering service UCL="+uclName); + getServer().registerMBean(di.ucl, uclName); + + // Parse the service definitions List mbeans = di.mbeans; mbeans.clear(); - - mbeans.addAll(serviceController.install(di.document.getDocumentElement())); - + List descriptorMbeans = serviceController.install(di.document.getDocumentElement(), uclName); + mbeans.addAll(descriptorMbeans); // create the services - for (Iterator iter = di.mbeans.iterator(); iter.hasNext(); ) + for (Iterator iter = di.mbeans.iterator(); iter.hasNext(); ) { ObjectName service = (ObjectName)iter.next(); - + // The service won't be created until explicitly dependent mbeans are created - serviceController.create(service); + serviceController.create(service); } } - catch (Exception e) { - log.error("create operation failed for package " + di.url, e); + catch (Exception e) + { + log.error("create operation failed for package " + di.url, e); destroy(di); - throw new DeploymentException(e); + throw new DeploymentException(e); } } @@ -267,23 +267,23 @@ try { // start the services - for (Iterator iter = di.mbeans.iterator(); iter.hasNext(); ) { ObjectName service = (ObjectName)iter.next(); // The service won't be started until explicitely dependent mbeans are started - serviceController.start(service); + serviceController.start(service); } } - catch (Exception e) { - log.error("start operation failed on package " + di.url, e); + catch (Exception e) + { + log.error("start operation failed on package " + di.url, e); stop(di); destroy(di); - throw new DeploymentException(e); + throw new DeploymentException(e); } } - + protected void parseXMLClasspath(DeploymentInfo di) throws DeploymentException { @@ -319,14 +319,15 @@ if (!(codebase.startsWith("http:") || codebase.startsWith("file:"))) { // put the jboss/system base in front of it - try { + try + { codebase = new URL(installURL, codebase).toString(); } catch (MalformedURLException e) { throw new DeploymentException(e); } } - + // Let's make sure the formatting of the codebase ends with the / if (codebase.startsWith("file:") && !codebase.endsWith("/")) { @@ -398,7 +399,8 @@ else if (!archives.equals("")) { // Still no codebase? safeguard - if (codebase.equals("")) { + if (codebase.equals("")) + { codebase = libraryURL.toString(); } |
From: Scott M S. <st...@us...> - 2002-05-24 20:22:27
|
User: starksm Date: 02/05/24 13:22:26 Modified: src/main/org/jboss/deployment SARDeployer.java Log: Register the SAR DeploymentInfo UCL as an mbean and use this as the serivce mbean loader to ensure that services first look to their deployment context for resources. Revision Changes Path 1.17 +25 -20 jboss-system/src/main/org/jboss/deployment/SARDeployer.java Index: SARDeployer.java =================================================================== RCS file: /cvsroot/jboss/jboss-system/src/main/org/jboss/deployment/SARDeployer.java,v retrieving revision 1.16 retrieving revision 1.17 diff -u -r1.16 -r1.17 --- SARDeployer.java 20 May 2002 07:15:24 -0000 1.16 +++ SARDeployer.java 24 May 2002 20:22:26 -0000 1.17 @@ -76,7 +76,7 @@ * @author <a href="mailto:Dav...@or...">David Maplesden</a> * @author <a href="mailto:d_j...@us...">David Jencks</a> * @author <a href="mailto:ja...@pl...">Jason Dillon</a> - * @version $Revision: 1.16 $ + * @version $Revision: 1.17 $ * * <p><b>20010830 marc fleury:</b> * <ul> @@ -169,11 +169,13 @@ File file = new File(di.url.getFile()); // If not directory we watch the package - if (!file.isDirectory()) { + if (!file.isDirectory()) + { di.watch = di.url; } // If directory we watch the xml files - else { + else + { di.watch = new URL(di.url, "META-INF/jboss-service.xml"); } } @@ -193,23 +195,17 @@ //Copy local directory if local-directory element is present NodeList lds = di.document.getElementsByTagName("local-directory"); - if (debug) { - log.debug("about to copy " + lds.getLength() + " local directories"); - } + log.debug("about to copy " + lds.getLength() + " local directories"); for (int i = 0; i< lds.getLength(); i++) { Element ld = (Element)lds.item(i); String path = ld.getAttribute("path"); - if (debug) { - log.debug("about to copy local directory at " + path); - } + log.debug("about to copy local directory at " + path); // Get the url of the local copy from the classloader. - if (debug) { - log.debug("copying from " + di.localUrl + path + " -> " + dataDir); - } - + log.debug("copying from " + di.localUrl + path + " -> " + dataDir); + inflateJar(di.localUrl, dataDir, path); } } @@ -237,6 +233,11 @@ // install the MBeans in this descriptor log.debug("Deploying SAR, create step: url " + di.url); + // Register the SAR UCL as an mbean so we can use it as the service loader + ObjectName uclName = di.ucl.getObjectName(); + log.debug("Registering service UCL="+uclName); + getServer().registerMBean(di.ucl, uclName); + // Create JSR-77 SAR-Module String lURL = di.url.toString(); int lIndex = lURL.lastIndexOf( "/" ); @@ -263,8 +264,8 @@ List mbeans = di.mbeans; mbeans.clear(); - - mbeans.addAll(serviceController.install(di.document.getDocumentElement())); + List descriptorMbeans = serviceController.install(di.document.getDocumentElement(), uclName); + mbeans.addAll(descriptorMbeans); // create the services for (Iterator iter = di.mbeans.iterator(); iter.hasNext(); ) @@ -272,7 +273,7 @@ ObjectName service = (ObjectName)iter.next(); // The service won't be created until explicitly dependent mbeans are created - serviceController.create(service); + serviceController.create(service); } // This is to go around the project dependencies Class lMBean = Class.forName( "org.jboss.management.j2ee.MBean" ); @@ -313,9 +314,11 @@ } } - catch (Exception e) { + catch (Exception e) + { destroy(di); - throw new DeploymentException("create operation failed for package " + di.url, e); + throw new DeploymentException("create operation failed for package " + + di.url, e); } } @@ -341,10 +344,12 @@ serviceController.start(service); } } - catch (Exception e) { + catch (Exception e) + { stop(di); destroy(di); - throw new DeploymentException("start operation failed on package " + di.url, e); + throw new DeploymentException("start operation failed on package " + + di.url, e); } } |
From: Andreas S. <sch...@us...> - 2002-05-26 04:52:33
|
User: schaefera Date: 02/05/25 21:52:32 Modified: src/main/org/jboss/deployment SARDeployer.java Log: Catched possible exception from the call to jboss-management to avoid breaking the deployment. Revision Changes Path 1.18 +63 -51 jboss-system/src/main/org/jboss/deployment/SARDeployer.java Index: SARDeployer.java =================================================================== RCS file: /cvsroot/jboss/jboss-system/src/main/org/jboss/deployment/SARDeployer.java,v retrieving revision 1.17 retrieving revision 1.18 diff -u -r1.17 -r1.18 --- SARDeployer.java 24 May 2002 20:22:26 -0000 1.17 +++ SARDeployer.java 26 May 2002 04:52:32 -0000 1.18 @@ -76,7 +76,7 @@ * @author <a href="mailto:Dav...@or...">David Maplesden</a> * @author <a href="mailto:d_j...@us...">David Jencks</a> * @author <a href="mailto:ja...@pl...">Jason Dillon</a> - * @version $Revision: 1.17 $ + * @version $Revision: 1.18 $ * * <p><b>20010830 marc fleury:</b> * <ul> @@ -242,24 +242,31 @@ String lURL = di.url.toString(); int lIndex = lURL.lastIndexOf( "/" ); String lName = lURL.substring( lIndex >= 0 ? lIndex + 1 : 0 ); - // This is to go around the project dependencies - Class lServiceModule = Class.forName( "org.jboss.management.j2ee.ServiceModule" ); - Method lCreateSAR = lServiceModule.getMethod( - "create", - new Class[] { - MBeanServer.class, - String.class, - URL.class - } - ); - ObjectName lSARName = (ObjectName) lCreateSAR.invoke( - null, - new Object[] { - server, - lName, - di.localUrl - } - ); + ObjectName lSARName = null; + Method lCreateSAR = null; + try { + // This is to go around the project dependencies + Class lServiceModule = Class.forName( "org.jboss.management.j2ee.ServiceModule" ); + lCreateSAR = lServiceModule.getMethod( + "create", + new Class[] { + MBeanServer.class, + String.class, + URL.class + } + ); + lSARName = (ObjectName) lCreateSAR.invoke( + null, + new Object[] { + server, + lName, + di.localUrl + } + ); + } + catch( Exception e ) { + // Ignore it to avoid crashing of the SAR Deployer + } log.info( "Created ServiceModule: " + lSARName ); List mbeans = di.mbeans; @@ -275,42 +282,47 @@ // The service won't be created until explicitly dependent mbeans are created serviceController.create(service); } - // This is to go around the project dependencies - Class lMBean = Class.forName( "org.jboss.management.j2ee.MBean" ); - Method lCreate = lMBean.getMethod( - "create", - new Class[] { - MBeanServer.class, - String.class, - String.class, - ObjectName.class - } - ); - ObjectName[] lNames = (ObjectName[]) mbeans.toArray( new ObjectName[ 0 ] ); - for( int i = 0; i < lNames.length; i++ ) { - // If ServiceModule is not created yet, do it now - if( lSARName == null ) { - lSARName = (ObjectName) lCreateSAR.invoke( + try { + // This is to go around the project dependencies + Class lMBean = Class.forName( "org.jboss.management.j2ee.MBean" ); + Method lCreate = lMBean.getMethod( + "create", + new Class[] { + MBeanServer.class, + String.class, + String.class, + ObjectName.class + } + ); + ObjectName[] lNames = (ObjectName[]) mbeans.toArray( new ObjectName[ 0 ] ); + for( int i = 0; i < lNames.length; i++ ) { + // If ServiceModule is not created yet, do it now + if( lSARName == null ) { + lSARName = (ObjectName) lCreateSAR.invoke( + null, + new Object[] { + server, + lName, + di.localUrl + } + ); + log.info( "Created ServiceModule: " + lSARName ); + } + // Create JSR-77 MBean + log.info( "Create MBean, name: " + lNames[ i ] + ", SAR Module: " + lSARName ); + lCreate.invoke( null, new Object[] { server, - lName, - di.localUrl + lNames[ i ] + "", + lSARName == null ? null : lSARName + "", + lNames[ i ] } ); - log.info( "Created ServiceModule: " + lSARName ); } - // Create JSR-77 MBean - log.info( "Create MBean, name: " + lNames[ i ] + ", SAR Module: " + lSARName ); - lCreate.invoke( - null, - new Object[] { - server, - lNames[ i ] + "", - lSARName == null ? null : lSARName + "", - lNames[ i ] - } - ); + } + catch( Exception e ) { + // Ignore it to avoid crashing of the SAR Deployer } } @@ -635,7 +647,7 @@ } } catch( Exception e ) { - log.error( "Could not access JSR-77 MBean class", e ); + // Ignore Exception } try { @@ -662,7 +674,7 @@ log.debug( "Removed ServiceModule with name: " + lName ); } catch( Exception e ) { - log.error( "Could not remove SAR Module", e ); + // Ignore Exception } } |
From: Scott M S. <st...@us...> - 2002-05-26 23:57:27
|
User: starksm Date: 02/05/26 16:57:26 Modified: src/main/org/jboss/deployment Tag: Branch_3_0 SARDeployer.java Log: Set the location of the descriptor DD so that system entity refs may be resolved Revision Changes Path No revision No revision 1.8.2.3 +12 -14 jboss-system/src/main/org/jboss/deployment/SARDeployer.java Index: SARDeployer.java =================================================================== RCS file: /cvsroot/jboss/jboss-system/src/main/org/jboss/deployment/SARDeployer.java,v retrieving revision 1.8.2.2 retrieving revision 1.8.2.3 diff -u -r1.8.2.2 -r1.8.2.3 --- SARDeployer.java 24 May 2002 16:26:54 -0000 1.8.2.2 +++ SARDeployer.java 26 May 2002 23:57:26 -0000 1.8.2.3 @@ -66,7 +66,7 @@ * @author <a href="mailto:Dav...@or...">David Maplesden</a> * @author <a href="mailto:d_j...@us...">David Jencks</a> * @author <a href="mailto:ja...@pl...">Jason Dillon</a> - * @version $Revision: 1.8.2.2 $ + * @version $Revision: 1.8.2.3 $ * * <p><b>20010830 marc fleury:</b> * <ul> @@ -635,26 +635,25 @@ return name == null ? OBJECT_NAME : name; } - + /** Parse the META-INF/jboss-service.xml descriptor + */ protected void parseDocument(DeploymentInfo di) throws DeploymentException { try { DocumentBuilder parser = DocumentBuilderFactory.newInstance().newDocumentBuilder(); - InputStream stream = null; - - // If we are in a xml only get the URL - if (di.isXML) - stream = di.localUrl.openStream(); - // Else load from the jar or directory - else - stream = di.localCl.getResourceAsStream("META-INF/jboss-service.xml"); - // Validate that the stream is not null - if (stream == null) + URL docURL = di.localUrl; + // Load jboss-service.xml from the jar or directory + if( di.isXML == false ) + docURL = di.localCl.getResource("META-INF/jboss-service.xml"); + // Validate that the descriptor was found + if( docURL == null ) throw new DeploymentException("Failed to find META-INF/jboss-service.xml"); + InputStream stream = docURL.openStream(); InputSource is = new InputSource(stream); + is.setSystemId(docURL.toString()); di.document = parser.parse(is); } catch (Exception e) @@ -662,8 +661,7 @@ throw new DeploymentException("Exception getting document", e); } } - - + // Private -------------------------------------------------------- /** |
From: Jason D. <us...@us...> - 2002-05-28 03:29:54
|
User: user57 Date: 02/05/27 20:29:53 Modified: src/main/org/jboss/deployment SARDeployer.java Log: o SARDeployer will use jboss.server.home.url and jboss.server.lib.url, this allows ../../lib to be used to get to jboss.lib.url, though we should really expose a property subst mechansim here for better control. o Updated files which used "lib" to "../../lib" Revision Changes Path 1.19 +9 -10 jboss-system/src/main/org/jboss/deployment/SARDeployer.java Index: SARDeployer.java =================================================================== RCS file: /cvsroot/jboss/jboss-system/src/main/org/jboss/deployment/SARDeployer.java,v retrieving revision 1.18 retrieving revision 1.19 diff -u -r1.18 -r1.19 --- SARDeployer.java 26 May 2002 04:52:32 -0000 1.18 +++ SARDeployer.java 28 May 2002 03:29:53 -0000 1.19 @@ -76,7 +76,7 @@ * @author <a href="mailto:Dav...@or...">David Maplesden</a> * @author <a href="mailto:d_j...@us...">David Jencks</a> * @author <a href="mailto:ja...@pl...">Jason Dillon</a> - * @version $Revision: 1.18 $ + * @version $Revision: 1.19 $ * * <p><b>20010830 marc fleury:</b> * <ul> @@ -126,13 +126,13 @@ /** A proxy to the MainDeployer. */ private MainDeployerMBean mainDeployer; - /** The system data directory. */ + /** The server data directory. */ private File dataDir; - /** The system install URL. */ - private URL installURL; + /** The server home URL. */ + private URL homeURL; - /** The system library URL. */ + /** The server library URL. */ private URL libraryURL; /** @@ -426,8 +426,8 @@ // Do we have a relative codebase? if (!(codebase.startsWith("http:") || codebase.startsWith("file:"))) { - // put the jboss/system base in front of it - codebase = new URL(installURL, codebase).toString(); + // put the server base in front of it + codebase = new URL(homeURL, codebase).toString(); } // Let's make sure the formatting of the codebase ends with the / @@ -704,9 +704,8 @@ // get the data directory, install url & library url dataDir = config.getServerDataDir(); - installURL = config.getHomeURL(); - libraryURL = config.getLibraryURL(); - + homeURL = config.getServerHomeURL(); + libraryURL = config.getServerLibraryURL(); } protected ObjectName getObjectName(MBeanServer server, ObjectName name) |
From: Scott M S. <st...@us...> - 2002-05-30 18:06:56
|
User: starksm Date: 02/05/30 11:06:56 Modified: src/main/org/jboss/deployment Tag: Branch_3_0 SARDeployer.java Log: Resolve relative codebase values using the server lib URL. Revision Changes Path No revision No revision 1.8.2.4 +22 -58 jboss-system/src/main/org/jboss/deployment/SARDeployer.java Index: SARDeployer.java =================================================================== RCS file: /cvsroot/jboss/jboss-system/src/main/org/jboss/deployment/SARDeployer.java,v retrieving revision 1.8.2.3 retrieving revision 1.8.2.4 diff -u -r1.8.2.3 -r1.8.2.4 --- SARDeployer.java 26 May 2002 23:57:26 -0000 1.8.2.3 +++ SARDeployer.java 30 May 2002 18:06:56 -0000 1.8.2.4 @@ -66,42 +66,7 @@ * @author <a href="mailto:Dav...@or...">David Maplesden</a> * @author <a href="mailto:d_j...@us...">David Jencks</a> * @author <a href="mailto:ja...@pl...">Jason Dillon</a> - * @version $Revision: 1.8.2.3 $ - * - * <p><b>20010830 marc fleury:</b> - * <ul> - * <li>initial import - * </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> - * - * <p><b>20010908 david jencks</b> - * <ul> - * <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. - * </ul> - * - * <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> + * @version $Revision: 1.8.2.4 $ * * @jmx:mbean name="jboss.system:service=ServiceDeployer" * extends="org.jboss.deployment.SubDeployerMBean" @@ -119,8 +84,11 @@ /** The system data directory. */ private File dataDir; - /** The system install URL. */ - private URL installURL; + /** The server configuration base URL. For example, + file:/<jboss_dist_root>/server/default. Relative service + descriptor codebase elements are relative to this URL. + */ + private URL serverHomeURL; /** The system library URL. */ private URL libraryURL; @@ -303,8 +271,7 @@ { throw new DeploymentException("Invalid classpath element missing codebase or archives: " + classpathElement); } // end of if () - - + // Load the codebase String codebase = classpathElement.getAttribute("codebase").trim(); log.debug("Setting up classpath from raw codebase: " + codebase); @@ -314,17 +281,18 @@ //does this work with http??? // marcf: for http we could just get the substring to the last "/" codebase = new File(di.url.getProtocol() + "://" + di.url.getFile()).getParent(); - } + } // Do we have a relative codebase? if (!(codebase.startsWith("http:") || codebase.startsWith("file:"))) { - // put the jboss/system base in front of it + // Resolve relative paths with respect to the serverHomeURL try { - codebase = new URL(installURL, codebase).toString(); + codebase = new URL(serverHomeURL, codebase).toString(); } - catch (MalformedURLException e) { - throw new DeploymentException(e); + catch (MalformedURLException e) + { + throw new DeploymentException("Failed to build codebase URL", e); } } @@ -597,25 +565,21 @@ protected void startService() throws Exception { super.startService(); - mainDeployer = (MainDeployerMBean) - MBeanProxy.create(MainDeployerMBean.class, - MainDeployerMBean.OBJECT_NAME, - server); - + mainDeployer = (MainDeployerMBean) MBeanProxy.create(MainDeployerMBean.class, + MainDeployerMBean.OBJECT_NAME, + server); // get the controller proxy - serviceController = (ServiceControllerMBean) - MBeanProxy.create(ServiceControllerMBean.class, - ServiceControllerMBean.OBJECT_NAME, - server); + serviceController = (ServiceControllerMBean) MBeanProxy.create(ServiceControllerMBean.class, + ServiceControllerMBean.OBJECT_NAME, + server); ServerConfig config = ServerConfigLocator.locate(); - // get the data directory, install url & library url + // get the data directory, server home url & library url dataDir = config.getServerDataDir(); - installURL = config.getHomeURL(); - libraryURL = config.getLibraryURL(); - + serverHomeURL = config.getServerHomeURL(); + libraryURL = config.getServerLibraryURL(); } /** |
From: Scott M S. <st...@us...> - 2002-06-01 02:20:44
|
User: starksm Date: 02/05/31 19:20:44 Modified: src/main/org/jboss/deployment SARDeployer.java Log: Update relative paths given in the classpath codebase to be resolved with respect to the serverHomeURL Revision Changes Path 1.20 +9 -41 jboss-system/src/main/org/jboss/deployment/SARDeployer.java Index: SARDeployer.java =================================================================== RCS file: /cvsroot/jboss/jboss-system/src/main/org/jboss/deployment/SARDeployer.java,v retrieving revision 1.19 retrieving revision 1.20 diff -u -r1.19 -r1.20 --- SARDeployer.java 28 May 2002 03:29:53 -0000 1.19 +++ SARDeployer.java 1 Jun 2002 02:20:43 -0000 1.20 @@ -76,42 +76,7 @@ * @author <a href="mailto:Dav...@or...">David Maplesden</a> * @author <a href="mailto:d_j...@us...">David Jencks</a> * @author <a href="mailto:ja...@pl...">Jason Dillon</a> - * @version $Revision: 1.19 $ - * - * <p><b>20010830 marc fleury:</b> - * <ul> - * <li>initial import - * </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> - * - * <p><b>20010908 david jencks</b> - * <ul> - * <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. - * </ul> - * - * <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> + * @version $Revision: 1.20 $ * * @jmx:mbean name="jboss.system:service=ServiceDeployer" * extends="org.jboss.deployment.SubDeployerMBean" @@ -129,8 +94,11 @@ /** The server data directory. */ private File dataDir; - /** The server home URL. */ - private URL homeURL; + /** The server configuration base URL. For example, + file:/<jboss_dist_root>/server/default. Relative service + descriptor codebase elements are relative to this URL. + */ + private URL serverHomeURL; /** The server library URL. */ private URL libraryURL; @@ -426,8 +394,8 @@ // Do we have a relative codebase? if (!(codebase.startsWith("http:") || codebase.startsWith("file:"))) { - // put the server base in front of it - codebase = new URL(homeURL, codebase).toString(); + // Resolve relative paths with respect to the serverHomeURL + codebase = new URL(serverHomeURL, codebase).toString(); } // Let's make sure the formatting of the codebase ends with the / @@ -704,7 +672,7 @@ // get the data directory, install url & library url dataDir = config.getServerDataDir(); - homeURL = config.getServerHomeURL(); + serverHomeURL = config.getServerHomeURL(); libraryURL = config.getServerLibraryURL(); } |
From: Scott M S. <st...@us...> - 2002-06-22 11:53:46
|
User: starksm Date: 02/06/22 04:53:45 Modified: src/main/org/jboss/deployment SARDeployer.java Log: Change the management object creation log message to debug level. Revision Changes Path 1.21 +32 -40 jboss-system/src/main/org/jboss/deployment/SARDeployer.java Index: SARDeployer.java =================================================================== RCS file: /cvsroot/jboss/jboss-system/src/main/org/jboss/deployment/SARDeployer.java,v retrieving revision 1.20 retrieving revision 1.21 diff -u -r1.20 -r1.21 --- SARDeployer.java 1 Jun 2002 02:20:43 -0000 1.20 +++ SARDeployer.java 22 Jun 2002 11:53:45 -0000 1.21 @@ -76,7 +76,7 @@ * @author <a href="mailto:Dav...@or...">David Maplesden</a> * @author <a href="mailto:d_j...@us...">David Jencks</a> * @author <a href="mailto:ja...@pl...">Jason Dillon</a> - * @version $Revision: 1.20 $ + * @version $Revision: 1.21 $ * * @jmx:mbean name="jboss.system:service=ServiceDeployer" * extends="org.jboss.deployment.SubDeployerMBean" @@ -212,31 +212,28 @@ String lName = lURL.substring( lIndex >= 0 ? lIndex + 1 : 0 ); ObjectName lSARName = null; Method lCreateSAR = null; - try { + try + { // This is to go around the project dependencies Class lServiceModule = Class.forName( "org.jboss.management.j2ee.ServiceModule" ); + Class[] sig = {MBeanServer.class, String.class, URL.class}; lCreateSAR = lServiceModule.getMethod( "create", - new Class[] { - MBeanServer.class, - String.class, - URL.class - } + sig ); + Object[] args = {server, lName, di.localUrl}; lSARName = (ObjectName) lCreateSAR.invoke( null, - new Object[] { - server, - lName, - di.localUrl - } + args ); } - catch( Exception e ) { + catch( Exception e ) + { // Ignore it to avoid crashing of the SAR Deployer } - log.info( "Created ServiceModule: " + lSARName ); - + if( lSARName != null ) + log.debug( "Created ServiceModule: " + lSARName ); + List mbeans = di.mbeans; mbeans.clear(); List descriptorMbeans = serviceController.install(di.document.getDocumentElement(), uclName); @@ -250,49 +247,44 @@ // The service won't be created until explicitly dependent mbeans are created serviceController.create(service); } - try { + try + { // This is to go around the project dependencies Class lMBean = Class.forName( "org.jboss.management.j2ee.MBean" ); + Class[] sig = {MBeanServer.class, String.class, String.class, ObjectName.class}; Method lCreate = lMBean.getMethod( "create", - new Class[] { - MBeanServer.class, - String.class, - String.class, - ObjectName.class - } + sig ); ObjectName[] lNames = (ObjectName[]) mbeans.toArray( new ObjectName[ 0 ] ); - for( int i = 0; i < lNames.length; i++ ) { + for( int i = 0; i < lNames.length; i++ ) + { // If ServiceModule is not created yet, do it now - if( lSARName == null ) { + if( lSARName == null ) + { + Object[] args = {server, lName, di.localUrl}; lSARName = (ObjectName) lCreateSAR.invoke( null, - new Object[] { - server, - lName, - di.localUrl - } + args ); - log.info( "Created ServiceModule: " + lSARName ); + log.debug( "Created ServiceModule: " + lSARName ); } // Create JSR-77 MBean - log.info( "Create MBean, name: " + lNames[ i ] + ", SAR Module: " + lSARName ); - lCreate.invoke( - null, - new Object[] { - server, - lNames[ i ] + "", + log.debug( "Create MBean, name: " + lNames[ i ] + ", SAR Module: " + lSARName ); + Object[] args = {server, lNames[ i ] + "", lSARName == null ? null : lSARName + "", lNames[ i ] - } + }; + lCreate.invoke( + null, + args ); } } - catch( Exception e ) { + catch( Exception e ) + { // Ignore it to avoid crashing of the SAR Deployer } - } catch (Exception e) { @@ -321,7 +313,7 @@ ObjectName service = (ObjectName)iter.next(); // The service won't be started until explicitely dependent mbeans are started - serviceController.start(service); + serviceController.start(service); } } catch (Exception e) |
From: Andreas S. <sch...@us...> - 2002-06-30 20:33:23
|
User: schaefera Date: 02/06/30 13:33:22 Modified: src/main/org/jboss/deployment SARDeployer.java Log: Added the JVM reference to the Modules, removed the ServiceMBean from the JSR-77 management interface because their State attribute clashes with the JSR-77 StateManageable State attribute, added vendor specific attributes to the JNDI-Resource (ports and backlog because Socket Factories should not be a dynamic management property) and fixed the problem in the SARDeployer during the lookup for the deployment name from the URL by looking to the last slash (but directory's last slash it at the end, so a slash at the last character is omitted). Revision Changes Path 1.23 +11 -1 jboss-system/src/main/org/jboss/deployment/SARDeployer.java Index: SARDeployer.java =================================================================== RCS file: /cvsroot/jboss/jboss-system/src/main/org/jboss/deployment/SARDeployer.java,v retrieving revision 1.22 retrieving revision 1.23 diff -u -r1.22 -r1.23 --- SARDeployer.java 27 Jun 2002 16:02:56 -0000 1.22 +++ SARDeployer.java 30 Jun 2002 20:33:22 -0000 1.23 @@ -52,7 +52,7 @@ * @author <a href="mailto:Dav...@or...">David Maplesden</a> * @author <a href="mailto:d_j...@us...">David Jencks</a> * @author <a href="mailto:ja...@pl...">Jason Dillon</a> - * @version $Revision: 1.22 $ + * @version $Revision: 1.23 $ * * @jmx:mbean name="jboss.system:service=ServiceDeployer" * extends="org.jboss.deployment.SubDeployerMBean" @@ -184,6 +184,11 @@ // Create JSR-77 SAR-Module String lURL = di.url.toString(); + // If the given URL is a directory then get ride of the final directory + // slash + if( lURL.endsWith( "/" ) && lURL.length() > 0 ) { + lURL = lURL.substring( 0, lURL.length() - 1 ); + } int lIndex = lURL.lastIndexOf( "/" ); String lName = lURL.substring( lIndex >= 0 ? lIndex + 1 : 0 ); ObjectName lSARName = null; @@ -589,6 +594,11 @@ try { // Remove JSR-77 SAR-Module String lURL = di.url.toString(); + // If the given URL is a directory then get ride of the final directory + // slash + if( lURL.endsWith( "/" ) && lURL.length() > 0 ) { + lURL = lURL.substring( 0, lURL.length() - 1 ); + } int lIndex = lURL.lastIndexOf( "/" ); String lName = lURL.substring( lIndex >= 0 ? lIndex + 1 : 0 ); // This is to go around the project dependencies |
From: Scott M S. <st...@us...> - 2002-07-29 05:44:23
|
User: starksm Date: 02/07/28 22:44:21 Modified: src/main/org/jboss/deployment Tag: Branch_3_0 SARDeployer.java Log: Use the URLClassLoader.findResource when looking for deployment descriptors Revision Changes Path No revision No revision 1.8.2.6 +2 -2 jboss-system/src/main/org/jboss/deployment/SARDeployer.java Index: SARDeployer.java =================================================================== RCS file: /cvsroot/jboss/jboss-system/src/main/org/jboss/deployment/SARDeployer.java,v retrieving revision 1.8.2.5 retrieving revision 1.8.2.6 diff -u -r1.8.2.5 -r1.8.2.6 --- SARDeployer.java 17 Jun 2002 02:07:58 -0000 1.8.2.5 +++ SARDeployer.java 29 Jul 2002 05:44:21 -0000 1.8.2.6 @@ -66,7 +66,7 @@ * @author <a href="mailto:Dav...@or...">David Maplesden</a> * @author <a href="mailto:d_j...@us...">David Jencks</a> * @author <a href="mailto:ja...@pl...">Jason Dillon</a> - * @version $Revision: 1.8.2.5 $ + * @version $Revision: 1.8.2.6 $ * * @jmx:mbean name="jboss.system:service=ServiceDeployer" * extends="org.jboss.deployment.SubDeployerMBean" @@ -610,7 +610,7 @@ URL docURL = di.localUrl; // Load jboss-service.xml from the jar or directory if( di.isXML == false ) - docURL = di.localCl.getResource("META-INF/jboss-service.xml"); + docURL = di.localCl.findResource("META-INF/jboss-service.xml"); // Validate that the descriptor was found if( docURL == null ) throw new DeploymentException("Failed to find META-INF/jboss-service.xml"); |
From: Scott M S. <st...@us...> - 2002-07-30 00:32:34
|
User: starksm Date: 02/07/29 17:32:34 Modified: src/main/org/jboss/deployment SARDeployer.java Log: Restore the use of an existing DeploymentInfo.document value as is the case for deployments from the XSLSubDeployer Revision Changes Path 1.26 +5 -5 jboss-system/src/main/org/jboss/deployment/SARDeployer.java Index: SARDeployer.java =================================================================== RCS file: /cvsroot/jboss/jboss-system/src/main/org/jboss/deployment/SARDeployer.java,v retrieving revision 1.25 retrieving revision 1.26 diff -u -r1.25 -r1.26 --- SARDeployer.java 29 Jul 2002 20:17:52 -0000 1.25 +++ SARDeployer.java 30 Jul 2002 00:32:33 -0000 1.26 @@ -52,7 +52,7 @@ * @author <a href="mailto:Dav...@or...">David Maplesden</a> * @author <a href="mailto:d_j...@us...">David Jencks</a> * @author <a href="mailto:ja...@pl...">Jason Dillon</a> - * @version $Revision: 1.25 $ + * @version $Revision: 1.26 $ * * @jmx:mbean name="jboss.system:service=ServiceDeployer" * extends="org.jboss.deployment.SubDeployerMBean" @@ -674,9 +674,9 @@ /** Parse the META-INF/jboss-service.xml descriptor */ protected void parseDocument(DeploymentInfo di) - throws DeploymentException + throws Exception { - try + if( di.document == null ) { DocumentBuilder parser = DocumentBuilderFactory.newInstance().newDocumentBuilder(); URL docURL = di.localUrl; @@ -692,9 +692,9 @@ is.setSystemId(docURL.toString()); di.document = parser.parse(is); } - catch (Exception e) + else { - throw new DeploymentException("Exception getting document", e); + log.debug("Using existing deployment.document"); } } |
From: Thomas P. <tp...@us...> - 2002-12-08 13:03:15
|
User: tpeuss Date: 02/12/08 05:03:14 Modified: src/main/org/jboss/deployment Tag: Branch_3_0 SARDeployer.java Log: Close the InputStream after parsing the XML-data to get arround "Too many open files"-errors. Revision Changes Path No revision No revision 1.8.2.8 +10 -2 jboss-system/src/main/org/jboss/deployment/SARDeployer.java Index: SARDeployer.java =================================================================== RCS file: /cvsroot/jboss/jboss-system/src/main/org/jboss/deployment/SARDeployer.java,v retrieving revision 1.8.2.7 retrieving revision 1.8.2.8 diff -u -r1.8.2.7 -r1.8.2.8 --- SARDeployer.java 1 Aug 2002 08:27:41 -0000 1.8.2.7 +++ SARDeployer.java 8 Dec 2002 13:03:13 -0000 1.8.2.8 @@ -66,7 +66,7 @@ * @author <a href="mailto:Dav...@or...">David Maplesden</a> * @author <a href="mailto:d_j...@us...">David Jencks</a> * @author <a href="mailto:ja...@pl...">Jason Dillon</a> - * @version $Revision: 1.8.2.7 $ + * @version $Revision: 1.8.2.8 $ * * @jmx:mbean name="jboss.system:service=ServiceDeployer" * extends="org.jboss.deployment.SubDeployerMBean" @@ -614,6 +614,7 @@ protected void parseDocument(DeploymentInfo di) throws DeploymentException { + InputStream stream=null; try { DocumentBuilder parser = DocumentBuilderFactory.newInstance().newDocumentBuilder(); @@ -625,7 +626,7 @@ if( docURL == null ) throw new DeploymentException("Failed to find META-INF/jboss-service.xml"); - InputStream stream = docURL.openStream(); + stream = docURL.openStream(); InputSource is = new InputSource(stream); is.setSystemId(docURL.toString()); di.document = parser.parse(is); @@ -633,6 +634,13 @@ catch (Exception e) { throw new DeploymentException("Exception getting document", e); + } finally { + // close the stream to get around "Too many open files"-errors + try { + stream.close(); + } catch (IOException e) { + // ignore + } } } |
From: Thomas P. <tp...@us...> - 2002-12-08 13:17:32
|
User: tpeuss Date: 02/12/08 05:17:31 Modified: src/main/org/jboss/deployment SARDeployer.java Log: Close the InputStream after parsing the XML-data to get arround "Too many open files"-errors. Revision Changes Path 1.30 +30 -20 jboss-system/src/main/org/jboss/deployment/SARDeployer.java Index: SARDeployer.java =================================================================== RCS file: /cvsroot/jboss/jboss-system/src/main/org/jboss/deployment/SARDeployer.java,v retrieving revision 1.29 retrieving revision 1.30 diff -u -r1.29 -r1.30 --- SARDeployer.java 8 Nov 2002 15:23:42 -0000 1.29 +++ SARDeployer.java 8 Dec 2002 13:17:31 -0000 1.30 @@ -54,7 +54,7 @@ * @author <a href="mailto:d_j...@us...">David Jencks</a> * @author <a href="mailto:ja...@pl...">Jason Dillon</a> * @author <a href="mailto:sac...@co...">Sacha Labourey</a> - * @version $Revision: 1.29 $ + * @version $Revision: 1.30 $ * * @jmx:mbean name="jboss.system:service=ServiceDeployer" * extends="org.jboss.deployment.SubDeployerMBean" @@ -712,25 +712,35 @@ protected void parseDocument(DeploymentInfo di) throws Exception { - if( di.document == null ) - { - DocumentBuilder parser = DocumentBuilderFactory.newInstance().newDocumentBuilder(); - URL docURL = di.localUrl; - // Load jboss-service.xml from the jar or directory - if( di.isXML == false ) - docURL = di.localCl.findResource("META-INF/jboss-service.xml"); - // Validate that the descriptor was found - if( docURL == null ) - throw new DeploymentException("Failed to find META-INF/jboss-service.xml"); - - InputStream stream = docURL.openStream(); - InputSource is = new InputSource(stream); - is.setSystemId(docURL.toString()); - di.document = parser.parse(is); - } - else - { - log.debug("Using existing deployment.document"); + InputStream stream=null; + try { + if( di.document == null ) + { + DocumentBuilder parser = DocumentBuilderFactory.newInstance().newDocumentBuilder(); + URL docURL = di.localUrl; + // Load jboss-service.xml from the jar or directory + if( di.isXML == false ) + docURL = di.localCl.findResource("META-INF/jboss-service.xml"); + // Validate that the descriptor was found + if( docURL == null ) + throw new DeploymentException("Failed to find META-INF/jboss-service.xml"); + + stream = docURL.openStream(); + InputSource is = new InputSource(stream); + is.setSystemId(docURL.toString()); + di.document = parser.parse(is); + } + else + { + log.debug("Using existing deployment.document"); + } + } finally { + // Close the stream to get around "Too many open files"-errors + try { + stream.close(); + } catch (Exception e) { + // ignore + } } } |
From: Thomas P. <tp...@us...> - 2002-12-08 13:20:35
|
User: tpeuss Date: 02/12/08 05:20:34 Modified: src/main/org/jboss/deployment Tag: Branch_3_2 SARDeployer.java Log: Close the InputStream after parsing the XML-data to get arround "Too many open files"-errors. Revision Changes Path No revision No revision 1.26.2.2 +31 -20 jboss-system/src/main/org/jboss/deployment/SARDeployer.java Index: SARDeployer.java =================================================================== RCS file: /cvsroot/jboss/jboss-system/src/main/org/jboss/deployment/SARDeployer.java,v retrieving revision 1.26.2.1 retrieving revision 1.26.2.2 diff -u -r1.26.2.1 -r1.26.2.2 --- SARDeployer.java 8 Nov 2002 14:39:07 -0000 1.26.2.1 +++ SARDeployer.java 8 Dec 2002 13:20:34 -0000 1.26.2.2 @@ -55,7 +55,7 @@ * @author <a href="mailto:d_j...@us...">David Jencks</a> * @author <a href="mailto:ja...@pl...">Jason Dillon</a> * @author <a href="mailto:sac...@co...">Sacha Labourey</a> - * @version $Revision: 1.26.2.1 $ + * @version $Revision: 1.26.2.2 $ * * @jmx:mbean name="jboss.system:service=ServiceDeployer" * extends="org.jboss.deployment.SubDeployerMBean" @@ -714,25 +714,36 @@ protected void parseDocument(DeploymentInfo di) throws Exception { - if( di.document == null ) - { - DocumentBuilder parser = DocumentBuilderFactory.newInstance().newDocumentBuilder(); - URL docURL = di.localUrl; - // Load jboss-service.xml from the jar or directory - if( di.isXML == false ) - docURL = di.localCl.findResource("META-INF/jboss-service.xml"); - // Validate that the descriptor was found - if( docURL == null ) - throw new DeploymentException("Failed to find META-INF/jboss-service.xml"); - - InputStream stream = docURL.openStream(); - InputSource is = new InputSource(stream); - is.setSystemId(docURL.toString()); - di.document = parser.parse(is); - } - else - { - log.debug("Using existing deployment.document"); + InputStream stream=null; + + try { + if( di.document == null ) + { + DocumentBuilder parser = DocumentBuilderFactory.newInstance().newDocumentBuilder(); + URL docURL = di.localUrl; + // Load jboss-service.xml from the jar or directory + if( di.isXML == false ) + docURL = di.localCl.findResource("META-INF/jboss-service.xml"); + // Validate that the descriptor was found + if( docURL == null ) + throw new DeploymentException("Failed to find META-INF/jboss-service.xml"); + + stream = docURL.openStream(); + InputSource is = new InputSource(stream); + is.setSystemId(docURL.toString()); + di.document = parser.parse(is); + } + else + { + log.debug("Using existing deployment.document"); + } + } finally { + // Close the stream to get around "Too many open files"-errors + try { + stream.close(); + } catch (Exception e) { + // ignore + } } } |
From: Jeremy B. <jb...@us...> - 2002-12-14 00:48:15
|
User: jboynes Date: 02/12/13 16:48:14 Modified: src/main/org/jboss/deployment SARDeployer.java Log: Initial checkin for URLLister implementation (file and http/dav) Changed SARDeployer to use for <classpath> element Revision Changes Path 1.31 +41 -179 jboss-system/src/main/org/jboss/deployment/SARDeployer.java Index: SARDeployer.java =================================================================== RCS file: /cvsroot/jboss/jboss-system/src/main/org/jboss/deployment/SARDeployer.java,v retrieving revision 1.30 retrieving revision 1.31 diff -u -r1.30 -r1.31 --- SARDeployer.java 8 Dec 2002 13:17:31 -0000 1.30 +++ SARDeployer.java 14 Dec 2002 00:48:14 -0000 1.31 @@ -14,16 +14,13 @@ import java.io.IOException; import java.io.InputStream; import java.lang.reflect.Method; -import java.net.MalformedURLException; import java.net.URL; -import java.util.ArrayList; import java.util.Enumeration; import java.util.HashSet; import java.util.Iterator; import java.util.List; import java.util.ListIterator; import java.util.Set; -import java.util.StringTokenizer; import java.util.jar.JarEntry; import java.util.jar.JarFile; import javax.management.MBeanServer; @@ -32,13 +29,13 @@ import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; -import org.jboss.system.Service; import org.jboss.system.ServiceControllerMBean; import org.jboss.system.server.ServerConfig; import org.jboss.system.server.ServerConfigLocator; -import org.jboss.util.Strings; import org.jboss.util.jmx.MBeanProxy; import org.jboss.util.stream.Streams; +import org.jboss.net.protocol.URLLister; +import org.jboss.net.protocol.URLListerFactory; import org.w3c.dom.Element; import org.w3c.dom.Node; import org.w3c.dom.NodeList; @@ -54,7 +51,7 @@ * @author <a href="mailto:d_j...@us...">David Jencks</a> * @author <a href="mailto:ja...@pl...">Jason Dillon</a> * @author <a href="mailto:sac...@co...">Sacha Labourey</a> - * @version $Revision: 1.30 $ + * @version $Revision: 1.31 $ * * @jmx:mbean name="jboss.system:service=ServiceDeployer" * extends="org.jboss.deployment.SubDeployerMBean" @@ -78,9 +75,6 @@ */ private URL serverHomeURL; - /** The server library URL. */ - private URL libraryURL; - /** * Returns true if this deployer can deploy the given DeploymentInfo. * @@ -111,8 +105,6 @@ return false; } // end of if () - boolean debug = log.isDebugEnabled(); - try { if (di.watch == null) @@ -314,30 +306,12 @@ } } - protected File[] listFiles(final String urlspec) throws Exception - { - URL url = Strings.toURL(urlspec); - - // url is already canonical thanks to Strings.toURL - File dir = new File(url.getFile()); - - File[] files = dir.listFiles(new java.io.FileFilter() - { - public boolean accept(File pathname) - { - String name = pathname.getName().toLowerCase(); - return (name.endsWith(".jar") || name.endsWith(".zip")); - } - }); - - return files; - } - - protected void parseXMLClasspath(DeploymentInfo di) + protected void parseXMLClasspath(DeploymentInfo di) throws Exception { Set classpath = new HashSet(); - + URLListerFactory listerFactory = new URLListerFactory(); + NodeList children = di.document.getDocumentElement().getChildNodes(); for (int i = 0; i < children.getLength(); i++) { @@ -347,155 +321,47 @@ if (classpathElement.getTagName().equals("classpath")) { log.debug("Found classpath element: " + classpathElement); - if (!classpathElement.hasAttribute("codebase") - || !classpathElement.hasAttribute("archives")) + if (!classpathElement.hasAttribute("codebase")) { throw new DeploymentException - ("Invalid classpath element missing codebase or archives: " + classpathElement); + ("Invalid classpath element missing codebase: " + classpathElement); } - - // - // jason: This section needs to be rewritten to be non http & file - // specific. Should probably try to convert to a URL early. - // We should only special case file URLs then treat everything - // else the same. - // - - // Load the codebase String codebase = classpathElement.getAttribute("codebase").trim(); - String origCodebase = codebase; - - log.debug("Setting up classpath from raw codebase: " + codebase); - - if ("".equals(codebase) || ".".equals(codebase)) - { - //does this work with http??? - // marcf: for http we could just get the substring to the last "/" - codebase = new File(di.url.getProtocol() + "://" + di.url.getFile()).getParent(); - } - - // Do we have a relative codebase? - if (!(codebase.startsWith("http:") || codebase.startsWith("file:"))) - { - // Resolve relative paths with respect to the serverHomeURL - codebase = new URL(serverHomeURL, codebase).toString(); - } - - // Let's make sure the formatting of the codebase ends with the / - if (codebase.startsWith("file:") && !codebase.endsWith("/")) - { - codebase += "/"; - } - else if (codebase.startsWith("http:") && !codebase.endsWith("/")) - { - codebase += "/"; - } - log.debug("codebase is " + codebase); - - // get the archives string - String archives = classpathElement.getAttribute("archives").trim(); - log.debug("archives are " + archives); - - if (codebase.startsWith("file:") && archives.equals("*")) - { - File[] jars = listFiles(codebase); - - for (int j = 0; jars != null && j < jars.length; j++) - { - classpath.add(jars[j].getCanonicalFile().toURL()); + String archives = null; + if (classpathElement.hasAttribute("archives")) { + archives = classpathElement.getAttribute("archives").trim(); + if ("".equals(archives)) { + archives = null; } } - // A directory that is to be added to the classpath - else if(codebase.startsWith("file:") && archives.equals("")) - { - classpath.add(Strings.toURL(codebase)); - } - // We have an archive whatever the codebase go ahead and load the libraries - else if (!archives.equals("")) - { - // Still no codebase? safeguard - if (codebase.equals("")) { - codebase = libraryURL.toString(); - } - - if (archives.equals("*") || archives.endsWith (":*")) // we support the "URL:*" naming scheme (see below) - { - // Safeguard - if (!codebase.startsWith("file:")) - { - // We accept two archives naming schemes for HTTP: - // 1) "*": in this case, we use the default URL to load the list of files - // We simply append "dir=xxx" to the URL, with no specific character before - // ==> an URL such as this one could be prvovided: "http://xxx/MyServlet?config=default&" - // 2) "URL:*" : we use URL to get the list of files, without changing anything to the URL - // - String downloadUrl = null; - if (archives.equals("*")) - { - // We use the default URL stored in property jboss.netboot.listing.url - // - downloadUrl = NetBootHelper.buildListUrlForFolder (null, origCodebase); - } - else - { - downloadUrl= Strings.replaceProperties (archives.substring (0, archives.length ()-2)); - } - - NetBootFile[] files = NetBootHelper.listFilesFromDirectory (downloadUrl); - - for (int f=0; f< files.length; f++) - { - String archive = codebase + files[f].getName (); - try - { - classpath.add(Strings.toURL(archive)); - } - catch (MalformedURLException mfue) - { - log.error("couldn't resolve package reference: " + archive , mfue); - } - } - } - else - { - File[] jars = listFiles(codebase); - - for (int j = 0; jars != null && j < jars.length; j++) - { - classpath.add(jars[j].getCanonicalFile().toURL()); - } - } - } - - else // A real archive listing (as opposed to wildcard) - { - StringTokenizer jars = new StringTokenizer(archives, ","); - - // iterate through the packages in archives - while (jars.hasMoreTokens()) - { - // The format is simple codebase + jar - String archive = codebase + jars.nextToken().trim(); - try - { - classpath.add(Strings.toURL(archive)); - } - catch (MalformedURLException mfue) - { - log.error("couldn't resolve package reference: " + archive , mfue); - } // end of try-catch - } - } + + // Convert codebase to a URL + // "." is resolved relative to the deployment + // other URLs are resolved relative to SERVER_HOME + URL codebaseUrl; + if (archives != null && codebase.endsWith("/") == false) { + codebase += "/"; } - //codebase is empty and archives is empty but we did have a classpath entry - else - { - throw new DeploymentException - ("A classpath entry was declared but no non-file codebase " + - "and no jars specified. Please fix jboss-service.xml in your configuration"); + if (".".equals(codebase)) { + codebaseUrl = di.url; + } else { + codebaseUrl = new URL(serverHomeURL, codebase); + } + log.debug("codebase is "+codebaseUrl); + + if (archives == null) { + // archives not supplied so add the codebase itself + classpath.add(codebaseUrl); + log.debug("added codebase to classpath"); + } else { + // obtain a URLLister for the codebase and use it to obtain + // the list of URLs to add + log.debug("listing codebase for archives matching "+archives); + URLLister lister = listerFactory.createURLLister(codebaseUrl); + log.debug("URLLister class is "+lister.getClass().getName()); + classpath.addAll(lister.listMembers(codebaseUrl, archives)); } - } // end of if () } // end of if () @@ -530,9 +396,7 @@ * redeployed. * * - * @param service the <code>DeploymentInfo</code> value to stop. - * @exception DeploymentException Thrown if the package could not be - * undeployed + * @param di the <code>DeploymentInfo</code> value to stop. * @jmx:managed-operation */ public void stop(DeploymentInfo di) @@ -562,8 +426,7 @@ /** * Describe <code>destroy</code> method here. * - * @param service a <code>DeploymentInfo</code> value - * @exception DeploymentException if an error occurs + * @param di a <code>DeploymentInfo</code> value * @jmx:managed-operation */ public void destroy(DeploymentInfo di) @@ -698,7 +561,6 @@ // get the data directory, install url & library url dataDir = config.getServerDataDir(); serverHomeURL = config.getServerHomeURL(); - libraryURL = config.getServerLibraryURL(); } protected ObjectName getObjectName(MBeanServer server, ObjectName name) @@ -750,7 +612,7 @@ * 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 url 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. * |
From: Scott M S. <st...@us...> - 2002-12-21 00:53:55
|
User: starksm Date: 02/12/20 16:53:54 Modified: src/main/org/jboss/deployment Tag: Branch_3_2 SARDeployer.java Log: - Only register the associated UCL in create as an mbean if it is not already and unregister it in destroy. - Do not create seperate deployments for each classpath jar. These are simply added to the parent deployment UCL. Revision Changes Path No revision No revision 1.26.2.3 +40 -36 jboss-system/src/main/org/jboss/deployment/SARDeployer.java Index: SARDeployer.java =================================================================== RCS file: /cvsroot/jboss/jboss-system/src/main/org/jboss/deployment/SARDeployer.java,v retrieving revision 1.26.2.2 retrieving revision 1.26.2.3 diff -u -r1.26.2.2 -r1.26.2.3 --- SARDeployer.java 8 Dec 2002 13:20:34 -0000 1.26.2.2 +++ SARDeployer.java 21 Dec 2002 00:53:54 -0000 1.26.2.3 @@ -55,7 +55,7 @@ * @author <a href="mailto:d_j...@us...">David Jencks</a> * @author <a href="mailto:ja...@pl...">Jason Dillon</a> * @author <a href="mailto:sac...@co...">Sacha Labourey</a> - * @version $Revision: 1.26.2.2 $ + * @version $Revision: 1.26.2.3 $ * * @jmx:mbean name="jboss.system:service=ServiceDeployer" * extends="org.jboss.deployment.SubDeployerMBean" @@ -188,8 +188,11 @@ // Register the SAR UCL as an mbean so we can use it as the service loader ObjectName uclName = di.ucl.getObjectName(); - log.debug("Registering service UCL="+uclName); - getServer().registerMBean(di.ucl, uclName); + if( getServer().isRegistered(uclName) == false ) + { + log.debug("Registering service UCL="+uclName); + getServer().registerMBean(di.ucl, uclName); + } // Create JSR-77 SAR-Module String lURL = di.url.toString(); @@ -222,9 +225,9 @@ // Ignore it to avoid crashing of the SAR Deployer } if( lSARName != null ) - { + { log.debug( "Created ServiceModule: " + lSARName ); - } + } List mbeans = di.mbeans; mbeans.clear(); List descriptorMbeans = serviceController.install(di.document.getDocumentElement(), uclName); @@ -334,8 +337,13 @@ return files; } - - protected void parseXMLClasspath(DeploymentInfo di) + + /** + * @todo integrate the changes from main to allow non file/http URLs + * @param di + * @throws Exception + */ + protected void parseXMLClasspath(DeploymentInfo di) throws Exception { Set classpath = new HashSet(); @@ -356,14 +364,7 @@ ("Invalid classpath element missing codebase or archives: " + classpathElement); } - // - // jason: This section needs to be rewritten to be non http & file - // specific. Should probably try to convert to a URL early. - // We should only special case file URLs then treat everything - // else the same. - // - - // Load the codebase + // Load the codebase. String codebase = classpathElement.getAttribute("codebase").trim(); String origCodebase = codebase; @@ -371,8 +372,6 @@ if ("".equals(codebase) || ".".equals(codebase)) { - //does this work with http??? - // marcf: for http we could just get the substring to the last "/" codebase = new File(di.url.getProtocol() + "://" + di.url.getFile()).getParent(); } @@ -505,24 +504,14 @@ // Ok, now we've found the list of urls we need... deploy their classes. Iterator jars = classpath.iterator(); - - URL neededUrl = null; while (jars.hasNext()) { - neededUrl = (URL)jars.next(); - - // Call the main deployer with it - - // Create a new Deployment not as a subdeployment, - // An external package is not a "subdeployment" it is a stand alone - // deployment scanned as such - DeploymentInfo sub = new DeploymentInfo(neededUrl, null, getServer()); - mainDeployer.deploy(sub); - - log.debug("deployed classes for " + neededUrl); + URL neededURL = (URL) jars.next(); + di.addLibraryJar(neededURL); + log.debug("deployed classes for " + neededURL); } } - + /** * Undeploys the package at the url string specified. This will: Undeploy * packages depending on this one. Stop, destroy, and unregister all the @@ -578,7 +567,7 @@ { ObjectName name = (ObjectName)i.previous(); log.debug("destroying mbean " + name); - try + try { serviceController.destroy(name); } @@ -587,12 +576,12 @@ log.error("Could not destroy mbean: " + name, e); } // end of try-catch } - + for (ListIterator i = services.listIterator(lastService); i.hasPrevious();) { ObjectName name = (ObjectName)i.previous(); log.debug("removing mbean " + name); - try + try { serviceController.remove(name); } @@ -601,6 +590,21 @@ log.error("Could not remove mbean: " + name, e); } // end of try-catch } + + // Unregister the SAR UCL + try + { + ObjectName uclName = di.ucl.getObjectName(); + if( getServer().isRegistered(uclName) == true ) + { + log.debug("Unregistering service UCL="+uclName); + getServer().registerMBean(di.ucl, uclName); + } + } + catch(Exception ignore) + { + } + try { // This is to go around the project dependencies @@ -615,7 +619,7 @@ for (ListIterator i = services.listIterator(lastService); i.hasPrevious();) { ObjectName name = (ObjectName)i.previous(); - try + try { // Destory JSR-77 MBean log.info( "Remove MBean, name: " + name ); @@ -637,7 +641,7 @@ { // Ignore Exception } - + try { // Remove JSR-77 SAR-Module |