You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tomee.apache.org by db...@apache.org on 2012/04/21 21:00:59 UTC
svn commit: r1328725 - in /openejb/trunk/openejb/tomee:
apache-tomee/src/main/groovy/commands/
tomee-catalina/src/main/java/org/apache/tomee/catalina/
tomee-common/src/main/java/org/apache/tomee/installer/
tomee-loader/src/main/java/org/apache/tomee/lo...
Author: dblevins
Date: Sat Apr 21 19:00:59 2012
New Revision: 1328725
URL: http://svn.apache.org/viewvc?rev=1328725&view=rev
Log:
TOMEE-163: Move added libs from webapps/tomee/lib to <tomcat>/lib/ for better tooling support (e.g. Eclipse)
Added:
openejb/trunk/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/ServerListener.java
Modified:
openejb/trunk/openejb/tomee/apache-tomee/src/main/groovy/commands/SetupCommand.groovy
openejb/trunk/openejb/tomee/tomee-common/src/main/java/org/apache/tomee/installer/Installer.java
openejb/trunk/openejb/tomee/tomee-loader/src/main/java/org/apache/tomee/loader/LoaderServlet.java
Modified: openejb/trunk/openejb/tomee/apache-tomee/src/main/groovy/commands/SetupCommand.groovy
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/tomee/apache-tomee/src/main/groovy/commands/SetupCommand.groovy?rev=1328725&r1=1328724&r2=1328725&view=diff
==============================================================================
--- openejb/trunk/openejb/tomee/apache-tomee/src/main/groovy/commands/SetupCommand.groovy (original)
+++ openejb/trunk/openejb/tomee/apache-tomee/src/main/groovy/commands/SetupCommand.groovy Sat Apr 21 19:00:59 2012
@@ -121,7 +121,7 @@ class SetupCommand {
System.setProperty("catalina.base", "${catalinaHome}")
Paths paths = new Paths(new File("${catalinaHome}/webapps/tomee"))
Installer installer = new Installer(paths, true)
- installer.installAll()
+ installer.installFull()
// clean up duplicate jars since in TomEE it is useless
// = gain of space ;)
Added: openejb/trunk/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/ServerListener.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/ServerListener.java?rev=1328725&view=auto
==============================================================================
--- openejb/trunk/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/ServerListener.java (added)
+++ openejb/trunk/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/ServerListener.java Sat Apr 21 19:00:59 2012
@@ -0,0 +1,122 @@
+/**
+ *
+ * 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.catalina;
+
+import org.apache.catalina.Lifecycle;
+import org.apache.catalina.LifecycleEvent;
+import org.apache.catalina.LifecycleListener;
+import org.apache.catalina.core.StandardServer;
+import org.apache.openejb.loader.IO;
+import org.apache.openejb.loader.ProvisioningUtil;
+import org.apache.openejb.loader.SystemInstance;
+import org.apache.tomee.loader.TomcatHelper;
+import org.apache.tomee.loader.TomcatHook;
+
+import java.io.IOException;
+import java.util.Properties;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+public class ServerListener implements LifecycleListener {
+ private static final Logger LOGGER = Logger.getLogger(ServerListener.class.getName());
+
+ static private boolean listenerInstalled;
+
+ public void lifecycleEvent(LifecycleEvent event) {
+ // only install once
+ if (listenerInstalled || !Lifecycle.AFTER_INIT_EVENT.equals(event.getType())) return;
+ if (!(event.getSource() instanceof StandardServer)) return;
+
+ try {
+ final StandardServer server = (StandardServer) event.getSource();
+
+ TomcatHelper.setServer(server);
+
+ final Properties properties = new Properties();
+ properties.setProperty("openejb.embedder.source", getClass().getSimpleName());
+
+
+ // if SystemInstance is already initialized, then return
+ if (SystemInstance.isInitialized()) {
+ return;
+ }
+
+ // set the openejb.loader property to tomcat-system
+ properties.setProperty("openejb.loader", "tomcat-system");
+
+ // Get the value of catalina.home and set it to openejb.home
+ String catalinaHome = System.getProperty("catalina.home");
+ properties.setProperty("openejb.home", catalinaHome);
+
+ //Sets system property for openejb.home
+ System.setProperty("openejb.home", catalinaHome);
+
+ //get the value of catalina.base and set it to openejb.base
+ String catalinaBase = System.getProperty("catalina.base");
+ properties.setProperty("openejb.base", catalinaBase);
+
+ //Sets system property for openejb.base
+ System.setProperty("openejb.base", catalinaBase);
+
+
+ // System.setProperty("tomcat.version", "x.y.z.w");
+ // System.setProperty("tomcat.built", "mmm dd yyyy hh:mm:ss");
+ // set the System properties, tomcat.version, tomcat.built
+ try {
+ ClassLoader classLoader = TomcatHook.class.getClassLoader();
+ Properties tomcatServerInfo = IO.readProperties(classLoader.getResourceAsStream("org/apache/catalina/util/ServerInfo.properties"), new Properties());
+
+ String serverNumber = tomcatServerInfo.getProperty("server.number");
+ if (serverNumber == null) {
+ // Tomcat5 only has server.info
+ String serverInfo = tomcatServerInfo.getProperty("server.info");
+ if (serverInfo != null) {
+ int slash = serverInfo.indexOf('/');
+ serverNumber = serverInfo.substring(slash + 1);
+ }
+ }
+ if (serverNumber != null) {
+ System.setProperty("tomcat.version", serverNumber);
+ }
+
+ String serverBuilt = tomcatServerInfo.getProperty("server.built");
+ if (serverBuilt != null) {
+ System.setProperty("tomcat.built", serverBuilt);
+ }
+ } catch (Throwable e) {
+ // no-op
+ }
+
+ // manage additional libraries
+ try {
+ ProvisioningUtil.addAdditionalLibraries();
+ } catch (IOException e) {
+ // ignored
+ }
+
+ SystemInstance.init(properties);
+ TomcatLoader loader = new TomcatLoader();
+ loader.init(properties);
+
+ listenerInstalled = true;
+ } catch (Exception e) {
+ LOGGER.log(Level.SEVERE, "TomEE Listener can't start OpenEJB", e);
+ // e.printStackTrace(System.err);
+ }
+ }
+}
Modified: openejb/trunk/openejb/tomee/tomee-common/src/main/java/org/apache/tomee/installer/Installer.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/tomee/tomee-common/src/main/java/org/apache/tomee/installer/Installer.java?rev=1328725&r1=1328724&r2=1328725&view=diff
==============================================================================
--- openejb/trunk/openejb/tomee/tomee-common/src/main/java/org/apache/tomee/installer/Installer.java (original)
+++ openejb/trunk/openejb/tomee/tomee-common/src/main/java/org/apache/tomee/installer/Installer.java Sat Apr 21 19:00:59 2012
@@ -45,7 +45,7 @@ public class Installer {
static {
// is the OpenEJB listener installed
- listenerInstalled = "OpenEJBListener".equals(SystemInstance.get().getOptions().get("openejb.embedder.source", ""));
+ listenerInstalled = "OpenEJBListener".equals(SystemInstance.get().getOptions().get("openejb.embedder.source", "")) || "ServerListener".equals(SystemInstance.get().getOptions().get("openejb.embedder.source", ""));
// is the OpenEJB javaagent installed
agentInstalled = invokeStaticNoArgMethod("org.apache.openejb.javaagent.Agent", "getInstrumentation") != null;
@@ -104,6 +104,40 @@ public class Installer {
}
}
+ public void installFull() {
+ installListener("org.apache.tomee.catalina.ServerListener");
+
+ installJavaagent();
+
+ installConfigFiles();
+
+ removeTomcatLibJar("annotations-api.jar");
+ removeTomcatLibJar("el-api.jar");
+ addJavaeeInEndorsed();
+ moveLibs();
+
+ if (!alerts.hasErrors()) {
+ status = Status.REBOOT_REQUIRED;
+ }
+ }
+
+ private void moveLibs() {
+
+ final File libs = paths.getCatalinaLibDir();
+ for (File file : paths.getOpenEJBLibDir().listFiles()) {
+ if (file.isDirectory()) continue;
+ if (!file.getName().endsWith(".jar")) continue;
+
+ try {
+ Installers.copyFile(file, new File(libs, file.getName()));
+ file.delete();
+ alerts.addInfo("Copy " + file.getName() + " to lib");
+ } catch (IOException e) {
+ alerts.addError("Unable to " + file.getName() + " to Tomcat lib directory. This will need to be performed manually.", e);
+ }
+ }
+ }
+
private void addJavaeeInEndorsed() {
File endorsed = new File(paths.getCatalinaHomeDir(), "endorsed");
@@ -171,6 +205,10 @@ public class Installer {
}
public void installListener() {
+ installListener("org.apache.tomee.loader.OpenEJBListener");
+ }
+
+ public void installListener(final String listener) {
if (listenerInstalled && !force) {
// addInfo("OpenEJB Listener already installed");
return;
@@ -207,7 +245,7 @@ public class Installer {
}
// does the server.xml contain our listener name... it is possible that they commented out our listener, but that would be a PITA to detect
- if (serverXmlOriginal.contains("org.apache.tomee.loader.OpenEJBListener")) {
+ if (serverXmlOriginal.contains(listener)) {
alerts.addWarning("OpenEJB Listener already declared in Tomcat server.xml file.");
return;
}
@@ -225,8 +263,8 @@ public class Installer {
"<Server",
">",
">\r\n" +
- " <!-- OpenEJB plugin for Tomcat -->\r\n" +
- " <Listener className=\"org.apache.tomee.loader.OpenEJBListener\" />");
+ " <!-- TomEE plugin for Tomcat -->\r\n" +
+ " <Listener className=\"" + listener + "\" />");
} catch (IOException e) {
alerts.addError("Error while adding listener to server.xml file", e);
}
Modified: openejb/trunk/openejb/tomee/tomee-loader/src/main/java/org/apache/tomee/loader/LoaderServlet.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/tomee/tomee-loader/src/main/java/org/apache/tomee/loader/LoaderServlet.java?rev=1328725&r1=1328724&r2=1328725&view=diff
==============================================================================
--- openejb/trunk/openejb/tomee/tomee-loader/src/main/java/org/apache/tomee/loader/LoaderServlet.java (original)
+++ openejb/trunk/openejb/tomee/tomee-loader/src/main/java/org/apache/tomee/loader/LoaderServlet.java Sat Apr 21 19:00:59 2012
@@ -47,7 +47,9 @@ public class LoaderServlet extends HttpS
// only install once
if (embedded) return;
embedded = true;
-
+
+ if (System.getProperties().containsKey("openejb.embedder.source")) return;
+
//Gets parameters from servlet initialization parameter
Properties properties = initParamsToProperties(config);