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 2014/05/29 19:49:23 UTC

svn commit: r1598344 - in /tomee/tomee/trunk/tomee: ./ tomee-loader/src/main/java/org/apache/tomee/loader/ tomee-overlay-runner/ tomee-overlay-runner/src/ tomee-overlay-runner/src/main/ tomee-overlay-runner/src/main/java/ tomee-overlay-runner/src/main/...

Author: rmannibucau
Date: Thu May 29 17:49:23 2014
New Revision: 1598344

URL: http://svn.apache.org/r1598344
Log:
TOMEE-1227 tomee-overlay-runner to ease EE in tomcat applications

Added:
    tomee/tomee/trunk/tomee/tomee-overlay-runner/
    tomee/tomee/trunk/tomee/tomee-overlay-runner/pom.xml
    tomee/tomee/trunk/tomee/tomee-overlay-runner/src/
    tomee/tomee/trunk/tomee/tomee-overlay-runner/src/main/
    tomee/tomee/trunk/tomee/tomee-overlay-runner/src/main/java/
    tomee/tomee/trunk/tomee/tomee-overlay-runner/src/main/java/org/
    tomee/tomee/trunk/tomee/tomee-overlay-runner/src/main/java/org/apache/
    tomee/tomee/trunk/tomee/tomee-overlay-runner/src/main/java/org/apache/tomee/
    tomee/tomee/trunk/tomee/tomee-overlay-runner/src/main/java/org/apache/tomee/overlay/
    tomee/tomee/trunk/tomee/tomee-overlay-runner/src/main/java/org/apache/tomee/overlay/Deployer.java
    tomee/tomee/trunk/tomee/tomee-overlay-runner/src/main/java/org/apache/tomee/overlay/TomEEOverlayRunner.java
    tomee/tomee/trunk/tomee/tomee-overlay-runner/src/main/resources/
    tomee/tomee/trunk/tomee/tomee-overlay-runner/src/main/resources/META-INF/
    tomee/tomee/trunk/tomee/tomee-overlay-runner/src/main/resources/META-INF/services/
    tomee/tomee/trunk/tomee/tomee-overlay-runner/src/main/resources/META-INF/services/javax.servlet.ServletContainerInitializer
Modified:
    tomee/tomee/trunk/tomee/pom.xml
    tomee/tomee/trunk/tomee/tomee-loader/src/main/java/org/apache/tomee/loader/LoaderServlet.java

Modified: tomee/tomee/trunk/tomee/pom.xml
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/tomee/pom.xml?rev=1598344&r1=1598343&r2=1598344&view=diff
==============================================================================
--- tomee/tomee/trunk/tomee/pom.xml (original)
+++ tomee/tomee/trunk/tomee/pom.xml Thu May 29 17:49:23 2014
@@ -55,6 +55,7 @@
     <module>apache-tomee</module>
     <module>tomee-util</module>
     <module>tomee-juli</module>
+    <module>tomee-overlay-runner</module>
     <!--<module>tomee-deb</module>-->
   </modules>
 

Modified: tomee/tomee/trunk/tomee/tomee-loader/src/main/java/org/apache/tomee/loader/LoaderServlet.java
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/tomee/tomee-loader/src/main/java/org/apache/tomee/loader/LoaderServlet.java?rev=1598344&r1=1598343&r2=1598344&view=diff
==============================================================================
--- tomee/tomee/trunk/tomee/tomee-loader/src/main/java/org/apache/tomee/loader/LoaderServlet.java (original)
+++ tomee/tomee/trunk/tomee/tomee-loader/src/main/java/org/apache/tomee/loader/LoaderServlet.java Thu May 29 17:49:23 2014
@@ -32,6 +32,7 @@ import javax.servlet.http.HttpServlet;
  *
  * This method of bootstrapping is mutually exclussive to the {@link OpenEJBListener} approach
  */
+@Deprecated // use tomee-overlay-runner or another way to ensure you deterministicly work
 public class LoaderServlet extends HttpServlet {
     
     //Default serial version id
@@ -75,7 +76,7 @@ public class LoaderServlet extends HttpS
      * @param config javax.servlet.ServletConfig
      * @return java.util.Properties
      */
-    private Properties initParamsToProperties(final ServletConfig config) {
+    protected Properties initParamsToProperties(final ServletConfig config) {
         final Properties properties = new Properties();
 
         //@Tomcat

Added: tomee/tomee/trunk/tomee/tomee-overlay-runner/pom.xml
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/tomee/tomee-overlay-runner/pom.xml?rev=1598344&view=auto
==============================================================================
--- tomee/tomee/trunk/tomee/tomee-overlay-runner/pom.xml (added)
+++ tomee/tomee/trunk/tomee/tomee-overlay-runner/pom.xml Thu May 29 17:49:23 2014
@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+  <parent>
+    <artifactId>tomee</artifactId>
+    <groupId>org.apache.openejb</groupId>
+    <version>1.7.0-SNAPSHOT</version>
+  </parent>
+  <modelVersion>4.0.0</modelVersion>
+
+  <artifactId>tomee-overlay-runner</artifactId>
+  <name>OpenEJB :: TomEE :: Overlay Runner</name>
+  <description>This jar is intended to be embed in a war overlay of one TomEE war to start TomEE from a webapp</description>
+
+  <dependencies>
+    <dependency>
+      <groupId>org.apache.openejb</groupId>
+      <artifactId>javaee-api</artifactId>
+      <version>6.0-5</version>
+      <scope>provided</scope>
+    </dependency>
+
+    <dependency> <!-- openejb-core is not needed but parent import it so setting it as provided to avoid wrong packaging -->
+      <groupId>org.apache.openejb</groupId>
+      <artifactId>openejb-core</artifactId>
+      <version>${openejb.version}</version>
+      <scope>provided</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.openejb</groupId>
+      <artifactId>tomee-catalina</artifactId>
+      <version>${project.version}</version>
+      <scope>provided</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.tomcat</groupId>
+      <artifactId>tomcat-catalina</artifactId>
+      <version>${tomcat.version}</version>
+      <scope>provided</scope>
+    </dependency>
+  </dependencies>
+</project>
\ No newline at end of file

Added: tomee/tomee/trunk/tomee/tomee-overlay-runner/src/main/java/org/apache/tomee/overlay/Deployer.java
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/tomee/tomee-overlay-runner/src/main/java/org/apache/tomee/overlay/Deployer.java?rev=1598344&view=auto
==============================================================================
--- tomee/tomee/trunk/tomee/tomee-overlay-runner/src/main/java/org/apache/tomee/overlay/Deployer.java (added)
+++ tomee/tomee/trunk/tomee/tomee-overlay-runner/src/main/java/org/apache/tomee/overlay/Deployer.java Thu May 29 17:49:23 2014
@@ -0,0 +1,36 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.tomee.overlay;
+
+import org.apache.catalina.core.StandardContext;
+import org.apache.openejb.loader.SystemInstance;
+import org.apache.openejb.util.reflection.Reflections;
+import org.apache.tomee.catalina.TomcatWebAppBuilder;
+
+import javax.servlet.ServletContext;
+
+// mainly to avoid classloading issue since TomcatWebAppBuilder is added on the fly to tomcat classloader
+public class Deployer {
+    public static void deploy(final ServletContext ctx) {
+        final TomcatWebAppBuilder builder = SystemInstance.get().getComponent(TomcatWebAppBuilder.class);
+        builder.configureStart(StandardContext.class.cast(Reflections.get(Reflections.get(ctx, "context"), "context")));
+    }
+
+    private Deployer() {
+        // no-op
+    }
+}

Added: tomee/tomee/trunk/tomee/tomee-overlay-runner/src/main/java/org/apache/tomee/overlay/TomEEOverlayRunner.java
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/tomee/tomee-overlay-runner/src/main/java/org/apache/tomee/overlay/TomEEOverlayRunner.java?rev=1598344&view=auto
==============================================================================
--- tomee/tomee/trunk/tomee/tomee-overlay-runner/src/main/java/org/apache/tomee/overlay/TomEEOverlayRunner.java (added)
+++ tomee/tomee/trunk/tomee/tomee-overlay-runner/src/main/java/org/apache/tomee/overlay/TomEEOverlayRunner.java Thu May 29 17:49:23 2014
@@ -0,0 +1,52 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.tomee.overlay;
+
+import org.apache.tomee.loader.TomcatEmbedder;
+
+import javax.servlet.ServletContainerInitializer;
+import javax.servlet.ServletContext;
+import javax.servlet.ServletException;
+import java.io.File;
+import java.util.Properties;
+import java.util.Set;
+
+public class TomEEOverlayRunner implements ServletContainerInitializer {
+    @Override
+    public void onStartup(final Set<Class<?>> classes, final ServletContext ctx) throws ServletException {
+        if (System.getProperty("openejb.embedder.source") != null) {
+            ctx.log("TomEE already initialized");
+            return;
+        }
+
+        ctx.log("Embedded TomEE starting");
+
+        final Properties properties = new Properties();
+        properties.putAll(System.getProperties());
+        properties.setProperty("openejb.system.apps", Boolean.toString(Boolean.getBoolean("openejb.system.apps")));
+        properties.setProperty("tomee.war", new File(ctx.getRealPath("WEB-INF")).getParentFile().getAbsolutePath());
+        properties.setProperty("openejb.embedder.source", getClass().getSimpleName());
+
+        TomcatEmbedder.embed(properties, ServletContainerInitializer.class.getClassLoader());
+
+        ctx.log("Embedded TomEE started");
+
+        Deployer.deploy(ctx);
+
+        ctx.log("Application '" + ctx.getContextPath() + "' TomEE-ised");
+    }
+}

Added: tomee/tomee/trunk/tomee/tomee-overlay-runner/src/main/resources/META-INF/services/javax.servlet.ServletContainerInitializer
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/tomee/tomee-overlay-runner/src/main/resources/META-INF/services/javax.servlet.ServletContainerInitializer?rev=1598344&view=auto
==============================================================================
--- tomee/tomee/trunk/tomee/tomee-overlay-runner/src/main/resources/META-INF/services/javax.servlet.ServletContainerInitializer (added)
+++ tomee/tomee/trunk/tomee/tomee-overlay-runner/src/main/resources/META-INF/services/javax.servlet.ServletContainerInitializer Thu May 29 17:49:23 2014
@@ -0,0 +1 @@
+org.apache.tomee.overlay.TomEEOverlayRunner