[jboss-cvs] JBossAS SVN: r111792 - in trunk/server/src: main/java/org/jboss/deployment and 1 other directories.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Wed Jul 20 09:01:48 EDT 2011


Author: jaikiran
Date: 2011-07-20 09:01:47 -0400 (Wed, 20 Jul 2011)
New Revision: 111792

Added:
   trunk/server/src/main/java/org/jboss/deployment/ExplicitDeclaredStructure.java
Modified:
   trunk/server/src/etc/conf/all/bootstrap/deployers.xml
   trunk/server/src/main/java/org/jboss/web/deployers/AbstractWarDeployer.java
Log:
JBAS-8786 Fix the issue where the jar file contents were  filling up filesystem, during .war deployment

Modified: trunk/server/src/etc/conf/all/bootstrap/deployers.xml
===================================================================
--- trunk/server/src/etc/conf/all/bootstrap/deployers.xml	2011-07-20 12:16:20 UTC (rev 111791)
+++ trunk/server/src/etc/conf/all/bootstrap/deployers.xml	2011-07-20 13:01:47 UTC (rev 111792)
@@ -108,7 +108,7 @@
    </bean>
 
    <!-- A declared structure descriptor deployer -->
-   <bean name="DeclaredStructure" class="org.jboss.deployers.vfs.plugins.structure.explicit.DeclaredStructure"/>
+   <bean name="DeclaredStructure" class="org.jboss.deployment.ExplicitDeclaredStructure"/>
 
     <!-- JAR Structure -->
     <bean name="JARStructure" class="org.jboss.deployers.vfs.plugins.structure.jar.JARStructure">

Added: trunk/server/src/main/java/org/jboss/deployment/ExplicitDeclaredStructure.java
===================================================================
--- trunk/server/src/main/java/org/jboss/deployment/ExplicitDeclaredStructure.java	                        (rev 0)
+++ trunk/server/src/main/java/org/jboss/deployment/ExplicitDeclaredStructure.java	2011-07-20 13:01:47 UTC (rev 111792)
@@ -0,0 +1,52 @@
+/*
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2010, Red Hat, Inc., and individual contributors
+ * as indicated by the @author tags. See the copyright.txt file in the
+ * distribution for a full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+
+package org.jboss.deployment;
+
+import org.jboss.deployers.vfs.plugins.structure.explicit.DeclaredStructure;
+import org.jboss.vfs.VirtualFile;
+import org.jboss.vfs.util.automount.Automounter;
+import org.jboss.vfs.util.automount.MountOption;
+
+import java.io.IOException;
+
+/**
+ * This class is just here to fix a bug in {@link DeclaredStructure} where the {@link DeclaredStructure#performMount(org.jboss.vfs.VirtualFile)}
+ * does <i>not</i> explode the .war files.
+ * <p/>
+ * Once the {@link DeclaredStructure} is fixed, we will no longer require this {@link ExplicitDeclaredStructure}
+ * <p/>
+ *
+ * @see Related to https://issues.jboss.org/browse/JBAS-8786
+ * User: Jaikiran Pai
+ */
+public class ExplicitDeclaredStructure extends DeclaredStructure {
+
+    @Override
+    protected void performMount(VirtualFile file) throws IOException {
+        if (file.getName().endsWith(".war")) {
+            Automounter.mount(file, MountOption.EXPANDED, MountOption.COPY);
+            return;
+        }
+        Automounter.mount(file, MountOption.COPY);
+    }
+}

Modified: trunk/server/src/main/java/org/jboss/web/deployers/AbstractWarDeployer.java
===================================================================
--- trunk/server/src/main/java/org/jboss/web/deployers/AbstractWarDeployer.java	2011-07-20 12:16:20 UTC (rev 111791)
+++ trunk/server/src/main/java/org/jboss/web/deployers/AbstractWarDeployer.java	2011-07-20 13:01:47 UTC (rev 111792)
@@ -391,11 +391,9 @@
 
          if (unit instanceof VFSDeploymentUnit)
          {
-            URL expWarUrl;
-
             VFSDeploymentUnit vfsUnit = (VFSDeploymentUnit)unit;
             VirtualFile root = vfsUnit.getRoot();
-            expWarUrl = getExplodedWarUrl(root);
+            final URL expandedWarURL = root.getPhysicalFile().toURI().toURL();
 
             // Map
             String warPathName = root.getPathName();
@@ -413,7 +411,7 @@
                      if (path.startsWith(warPathName))
                      {
                         path = path.substring(warPathName.length());
-                        URL pathURL = new URL(expWarUrl, path);
+                        URL pathURL = new URL(expandedWarURL, path);
                         classpath.add(pathURL);
                      }
                      else
@@ -430,7 +428,7 @@
             }
 
             // Indicate that an expanded URL exists
-            unit.addAttachment("org.jboss.web.expandedWarURL", expWarUrl, URL.class);
+            unit.addAttachment("org.jboss.web.expandedWarURL", expandedWarURL, URL.class);
 
             // Resolve any ear relative alt-dd path to an expWarUrl/WEB-INF/alt-dd.xml file
             String altDDPath = metaData.getAlternativeDD();
@@ -817,39 +815,6 @@
    }
    
    /**
-    * This method is a hack to make sure the WAR is fully exploded.  Currently this is only needed
-    * for WARs that come through the DeclaredStructure deployer.  This should be removed when the 
-    * DeclaredStructure deployer correctly support exploding WARs. 
-    */
-   private URL getExplodedWarUrl(VirtualFile virtualFile) throws MalformedURLException, IOException {
-      if(virtualFile.isDirectory()) 
-      {
-         VirtualFileVisitor visitor = new VirtualFileVisitor() 
-         {
-            public void visit(VirtualFile virtualFile)
-            {
-               try 
-               {
-                  virtualFile.getPhysicalFile();
-               }
-               catch (IOException e) 
-               {
-                  throw new RuntimeException("Failed to force explosion of VirtualFile: " + virtualFile, e);
-               }
-            }
-            
-            public VisitorAttributes getAttributes()
-            {
-               return VisitorAttributes.RECURSE_LEAVES_ONLY;
-            }
-         };
-         virtualFile.visit(visitor);
-         return virtualFile.getPhysicalFile().toURI().toURL();
-      }
-      return virtualFile.toURL();
-   }
-   
-   /**
     * 
     * Similar to {@link ServiceDependencyMetaData} except that this allows to specify the "whenRequired" and
     * "dependentState" {@link ControllerState ControllerState} 



More information about the jboss-cvs-commits mailing list