You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tomee.apache.org by rm...@apache.org on 2015/05/06 12:51:50 UTC

tomee git commit: TOMEE-1579 one more step to do friendly jars (executable) + slight rework of our tomee-embedded uber jar to avoid to bring descriptors we don't want

Repository: tomee
Updated Branches:
  refs/heads/master 554ccb1ce -> 151887528


TOMEE-1579 one more step to do friendly jars (executable) + slight rework of our tomee-embedded uber jar to avoid to bring descriptors we don't want


Project: http://git-wip-us.apache.org/repos/asf/tomee/repo
Commit: http://git-wip-us.apache.org/repos/asf/tomee/commit/15188752
Tree: http://git-wip-us.apache.org/repos/asf/tomee/tree/15188752
Diff: http://git-wip-us.apache.org/repos/asf/tomee/diff/15188752

Branch: refs/heads/master
Commit: 151887528f8d15ad5c01a36185b0375c7d463640
Parents: 554ccb1
Author: Romain Manni-Bucau <rm...@apache.org>
Authored: Wed May 6 12:51:40 2015 +0200
Committer: Romain Manni-Bucau <rm...@apache.org>
Committed: Wed May 6 12:51:40 2015 +0200

----------------------------------------------------------------------
 .../apache/openejb/config/DeploymentLoader.java | 28 ++++++++++++++++++--
 tomee/tomee-embedded/pom.xml                    | 28 ++++++++++++++++++++
 .../java/org/apache/tomee/embedded/Main.java    | 11 ++++++++
 3 files changed, 65 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tomee/blob/15188752/container/openejb-core/src/main/java/org/apache/openejb/config/DeploymentLoader.java
----------------------------------------------------------------------
diff --git a/container/openejb-core/src/main/java/org/apache/openejb/config/DeploymentLoader.java b/container/openejb-core/src/main/java/org/apache/openejb/config/DeploymentLoader.java
index 1242ae2..58ba02e 100644
--- a/container/openejb-core/src/main/java/org/apache/openejb/config/DeploymentLoader.java
+++ b/container/openejb-core/src/main/java/org/apache/openejb/config/DeploymentLoader.java
@@ -958,8 +958,10 @@ public class DeploymentLoader implements DeploymentFilterable {
         ensureContainerUrls();
         webUrls.addAll(containerUrls);
 
+        final SystemInstance systemInstance = SystemInstance.get();
+
         // add these urls first to ensure we load classes from here first
-        final String externalRepos = SystemInstance.get().getProperty("tomee." + warFile.getName().replace(".war", "") + ".externalRepositories");
+        final String externalRepos = systemInstance.getProperty("tomee." + warFile.getName().replace(".war", "") + ".externalRepositories");
         List<URL> externalUrls = null;
         if (externalRepos != null) {
             externalUrls = new ArrayList<URL>();
@@ -1023,12 +1025,34 @@ public class DeploymentLoader implements DeploymentFilterable {
         // if we want to manage it in a generic way
         // simply add a boolean shared between tomcat and openejb world
         // to know if we should fire it or not
-        SystemInstance.get().fireEvent(new BeforeDeploymentEvent(webUrlsArray, parentClassLoader));
+        systemInstance.fireEvent(new BeforeDeploymentEvent(webUrlsArray, parentClassLoader));
 
         final ClassLoader warClassLoader = ClassLoaderUtil.createTempClassLoader(appId, webUrlsArray, parentClassLoader);
 
         // create web module
         final List<URL> scannableUrls = filterWebappUrls(webUrlsArray, descriptors.get(NewLoaderLogic.EXCLUSION_FILE));
+        // executable war will add war in scannable urls, we don't want it since it will surely contain tomee, cxf, ...
+        if (Boolean.parseBoolean(systemInstance.getProperty("openejb.core.skip-war-in-loader", "true"))) {
+            File archive = warFile;
+            if (!archive.getName().endsWith(".war")) {
+                archive = new File(warFile.getParentFile(), warFile.getName() + ".war");
+                final String unpackDir = systemInstance.getProperty("tomee.unpack.dir");
+                if (unpackDir != null && !archive.isFile()) {
+                    try {
+                        archive = new File(systemInstance.getBase().getDirectory(unpackDir, false), warFile.getName());
+                    } catch (final IOException e) {
+                        // no-op
+                    }
+                }
+            }
+            if (archive.isFile()) {
+                try {
+                    scannableUrls.remove(archive.toURI().toURL());
+                } catch (final MalformedURLException e) {
+                    // no-op
+                }
+            }
+        }
         if (externalUrls != null) {
             for (final URL url : externalUrls) {
                 if (scannableUrls.contains(url)) {

http://git-wip-us.apache.org/repos/asf/tomee/blob/15188752/tomee/tomee-embedded/pom.xml
----------------------------------------------------------------------
diff --git a/tomee/tomee-embedded/pom.xml b/tomee/tomee-embedded/pom.xml
index f8c0f0a..e000f66 100644
--- a/tomee/tomee-embedded/pom.xml
+++ b/tomee/tomee-embedded/pom.xml
@@ -66,6 +66,34 @@
               <createDependencyReducedPom>false</createDependencyReducedPom>
               <shadedArtifactAttached>true</shadedArtifactAttached>
               <shadedClassifierName>uber</shadedClassifierName>
+              <transformers>
+                <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
+                  <mainClass>org.apache.tomee.embedded.Main</mainClass>
+                </transformer>
+                <transformer implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
+                  <resource>META-INF/cxf/bus-extensions.txt</resource>
+                </transformer>
+                <transformer implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
+                  <resource>META-INF/openwebbeans/openwebbeans.properties</resource>
+                </transformer>
+              </transformers>
+              <filters>
+                <filter>
+                  <artifact>*:*</artifact>
+                  <excludes>
+                    <exclude>META-INF/ejb-jar.xml</exclude>
+                    <exclude>META-INF/openejb-jar.xml</exclude>
+                    <exclude>META-INF/web-fragment.xml</exclude>
+                    <!--
+                    NOTE:
+                    we shouldn't exclude faces-config.xml while we didn't impl the feature in another manner
+                    but it breaks all apps not using JSF.
+                    Solution would be to handle it more deeply in our myfaces integration
+                    -->
+                    <exclude>META-INF/faces-config.xml</exclude>
+                  </excludes>
+                </filter>
+              </filters>
             </configuration>
           </execution>
         </executions>

http://git-wip-us.apache.org/repos/asf/tomee/blob/15188752/tomee/tomee-embedded/src/main/java/org/apache/tomee/embedded/Main.java
----------------------------------------------------------------------
diff --git a/tomee/tomee-embedded/src/main/java/org/apache/tomee/embedded/Main.java b/tomee/tomee-embedded/src/main/java/org/apache/tomee/embedded/Main.java
index e8edf6c..1720f9f 100644
--- a/tomee/tomee-embedded/src/main/java/org/apache/tomee/embedded/Main.java
+++ b/tomee/tomee-embedded/src/main/java/org/apache/tomee/embedded/Main.java
@@ -27,6 +27,8 @@ import org.apache.commons.cli.ParseException;
 import org.apache.commons.cli.PosixParser;
 import org.apache.openejb.loader.ProvisioningUtil;
 
+import static org.apache.openejb.loader.JarLocation.jarLocation;
+
 public class Main {
     public static final String PORT = "port";
     public static final String SHUTDOWN = "shutdown";
@@ -59,6 +61,7 @@ public class Main {
                 contexts = null;
             }
 
+            boolean autoWar = true;
             int i = 0;
             if (line.hasOption(PATH)) {
                 for (final String path : line.getOptionValues(PATH)) {
@@ -77,10 +80,18 @@ public class Main {
                         container.deploy(name, file, true);
                     }
                 }
+                autoWar = false;
             }
             if (line.hasOption(AS_WAR)) {
                 container.deployClasspathAsWebApp(contexts == null || i == contexts.length ? "" : contexts[i],
                         line.hasOption(DOC_BASE) ? new File(line.getOptionValue(DOC_BASE)) : null);
+                autoWar = false;
+            }
+            if (autoWar) { // nothing deployed check if we are a war and deploy ourself then
+                final File me = jarLocation(Main.class);
+                if (me.getName().endsWith(".war")) {
+                    container.deploy(contexts == null || i == contexts.length ? "" : contexts[i], me);
+                }
             }
 
             Runtime.getRuntime().addShutdownHook(new Thread() {