You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tomee.apache.org by jg...@apache.org on 2010/11/21 21:07:56 UTC

svn commit: r1037542 - in /openejb/trunk/openejb3/assembly: ./ itest-runner/ itest-runner/src/test/groovy/commands/ openejb-tomcat/openejb-tomcat-catalina/ openejb-tomcat/openejb-tomcat-catalina/src/main/java/org/apache/openejb/tomcat/catalina/ openejb...

Author: jgallimore
Date: Sun Nov 21 20:07:55 2010
New Revision: 1037542

URL: http://svn.apache.org/viewvc?rev=1037542&view=rev
Log:
OPENEJB-1403 fixed Tomcat 7 installation issues

Added:
    openejb/trunk/openejb3/assembly/openejb-tomcat/openejb-tomcat-loader/src/main/java/org/apache/openejb/tomcat/loader/TomcatHelper.java
Modified:
    openejb/trunk/openejb3/assembly/itest-runner/pom.xml
    openejb/trunk/openejb3/assembly/itest-runner/src/test/groovy/commands/SetupCommand.groovy
    openejb/trunk/openejb3/assembly/openejb-tomcat/openejb-tomcat-catalina/pom.xml
    openejb/trunk/openejb3/assembly/openejb-tomcat/openejb-tomcat-catalina/src/main/java/org/apache/openejb/tomcat/catalina/OpenEJBValve.java
    openejb/trunk/openejb3/assembly/openejb-tomcat/openejb-tomcat-catalina/src/main/java/org/apache/openejb/tomcat/catalina/TomcatLoader.java
    openejb/trunk/openejb3/assembly/openejb-tomcat/openejb-tomcat-catalina/src/main/java/org/apache/openejb/tomcat/catalina/TomcatSecurityService.java
    openejb/trunk/openejb3/assembly/openejb-tomcat/openejb-tomcat-catalina/src/main/java/org/apache/openejb/tomcat/catalina/TomcatWebAppBuilder.java
    openejb/trunk/openejb3/assembly/openejb-tomcat/openejb-tomcat-catalina/src/main/java/org/apache/openejb/tomcat/catalina/TomcatWsRegistry.java
    openejb/trunk/openejb3/assembly/openejb-tomcat/openejb-tomcat-common/src/main/java/org/apache/openejb/tomcat/common/TomcatVersion.java
    openejb/trunk/openejb3/assembly/openejb-tomcat/openejb-tomcat-common/src/main/java/org/apache/openejb/tomcat/installer/Paths.java
    openejb/trunk/openejb3/assembly/openejb-tomcat/openejb-tomcat-loader/src/main/java/org/apache/openejb/tomcat/loader/OpenEJBListener.java
    openejb/trunk/openejb3/assembly/openejb-tomcat/openejb-tomcat-webapp/src/main/webapp/testhome.jsp
    openejb/trunk/openejb3/assembly/openejb-webapp/src/main/webapp/testhome.jsp
    openejb/trunk/openejb3/assembly/pom.xml

Modified: openejb/trunk/openejb3/assembly/itest-runner/pom.xml
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/assembly/itest-runner/pom.xml?rev=1037542&r1=1037541&r2=1037542&view=diff
==============================================================================
--- openejb/trunk/openejb3/assembly/itest-runner/pom.xml (original)
+++ openejb/trunk/openejb3/assembly/itest-runner/pom.xml Sun Nov 21 20:07:55 2010
@@ -18,7 +18,6 @@
       <plugin>
         <groupId>org.codehaus.gmaven</groupId>
         <artifactId>gmaven-plugin</artifactId>
-
         <executions>
           <execution>
             <id>setup-environment</id>
@@ -28,7 +27,7 @@
             </goals>
             <configuration>
               <source>
-								new commands.SetupCommand(this).execute()
+					new commands.SetupCommand(this).execute()
               </source>
               <skip>${maven.test.skip}</skip>
             </configuration>
@@ -38,7 +37,6 @@
       <plugin>
         <groupId>org.apache.maven.plugins</groupId>
         <artifactId>maven-dependency-plugin</artifactId>
-
         <executions>
           <execution>
             <id>unpack</id>
@@ -115,6 +113,13 @@
       <groupId>log4j</groupId>
       <artifactId>log4j</artifactId>
     </dependency>
+    <dependency>
+      <groupId>org.apache.openejb</groupId>
+      <artifactId>openejb-webapp-common</artifactId>
+      <version>${version}</version>
+      <type>jar</type>
+      <scope>compile</scope>
+    </dependency>
   </dependencies>
   <properties>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>

Modified: openejb/trunk/openejb3/assembly/itest-runner/src/test/groovy/commands/SetupCommand.groovy
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/assembly/itest-runner/src/test/groovy/commands/SetupCommand.groovy?rev=1037542&r1=1037541&r2=1037542&view=diff
==============================================================================
--- openejb/trunk/openejb3/assembly/itest-runner/src/test/groovy/commands/SetupCommand.groovy (original)
+++ openejb/trunk/openejb3/assembly/itest-runner/src/test/groovy/commands/SetupCommand.groovy Sun Nov 21 20:07:55 2010
@@ -20,17 +20,20 @@
 package commands
 
 import org.apache.commons.lang.SystemUtils
+import org.apache.openejb.webapp.common.Installers
+import org.apache.openejb.webapp.common.Alerts
+import java.io.File
 
 class SetupCommand
 {
-	def log;
-	def ant;
-	def project;
+	def log
+	def ant
+	def project
 	
     def SetupCommand(source) {
-		this.log = source.log;
+		this.log = source.log
 		this.project = source.project
-		this.ant = new AntBuilder();
+		this.ant = new AntBuilder()
     }
 	
 	def get(name) {
@@ -76,12 +79,23 @@ class SetupCommand
 		return value
 	}
 	
-	def execute() {
-		def tomcatVersion = require('tomcat.version');
-		def localRepo = require('localRepository');
-		def openejbHome = require('openejb.home');
+	def isWindows() {
+		def os = System.getProperty("os.name").toLowerCase()
+	    return (os.indexOf("win") >= 0)
+	}
+	
+    def execute() {
+		def tomcatVersion = require('tomcat.version')
+		def localRepo = require('localRepository')
+		def openejbHome = require('openejb.home')
+		def extension = ".sh"
+		def stopPort = get('tomcat.port.stop', '18005')
+		def httpPort = get('tomcat.port.http', '18080')
+		def ajpPort = get('tomcat.port.ajp', '18009')		
 		
-		ant.echo("OPENEJB_HOME=${openejbHome}")
+		if (isWindows()) {
+			extension = ".bat"
+		}
 		
 		if (getBoolean('skipTests', false)) {
 			log.info('Skipping itests.')
@@ -98,31 +112,45 @@ class SetupCommand
 		ant.unzip(src: "${localRepo}/org/apache/openejb/openejb-itests-web/${project.version}/openejb-itests-web-${project.version}.war",
 					dest: "${project.build.directory}/apache-tomcat-${tomcatVersion}/webapps/itests")
 		
+		def alerts = new Alerts()
+		def file = new File("${project.build.directory}/apache-tomcat-${tomcatVersion}/conf/server.xml")
+		def fileContent = Installers.readAll(file, alerts)
+		fileContent = fileContent.replaceAll("Server port=\"8005\"", "Server port=\"" + stopPort + "\"");
+		fileContent = fileContent.replaceAll("Connector port=\"8080\"", "Connector port=\"" + httpPort + "\"");
+		fileContent = fileContent.replaceAll("Connector port=\"8009\"", "Connector port=\"" + ajpPort + "\"");
+		Installers.writeAll(file, fileContent, alerts)
+		
 		ant.echo("Starting Tomcat...")
-		ant.exec(executable: "${project.build.directory}/apache-tomcat-${tomcatVersion}/bin/startup.sh")
+		ant.exec(executable: "${project.build.directory}/apache-tomcat-${tomcatVersion}/bin/startup${extension}") {
+			//arg(line: "jpda start")
+		}
 		
 		ant.waitfor(maxwait: 1, maxwaitunit: "minute") {
 			ant.and() {
-				ant.socket(server: "localhost", port: "8080")
-				ant.socket(server: "localhost", port: "8005")
-				ant.socket(server: "localhost", port: "8009")
+				ant.socket(server: "localhost", port: httpPort)
+				ant.socket(server: "localhost", port: stopPort)
+				ant.socket(server: "localhost", port: ajpPort)
 			}
 		}
 		
 		ant.echo("Tomcat started. Running itests...")
 		ant.java(jar: "${localRepo}/org/apache/openejb/openejb-itests-standalone-client/${project.version}/openejb-itests-standalone-client-${project.version}.jar", fork: "yes") {
 			sysproperty(key: "openejb.home", value: "${openejbHome}")
+			sysproperty(key: "openejb.server.uri", value: "http://127.0.0.1:" + httpPort + "/openejb/ejb")
+			
+			//sysproperty(key:"DEBUG", value:"true")
+			//jvmarg(value:"-Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8888")
 			arg(value: "tomcat")
 		}
 
 		ant.echo("Tomcat itests complete, stopping Tomcat")
-		ant.exec(executable: "${project.build.directory}/apache-tomcat-${tomcatVersion}/bin/shutdown.sh")
+		ant.exec(executable: "${project.build.directory}/apache-tomcat-${tomcatVersion}/bin/shutdown${extension}")
 		ant.waitfor(maxwait: 1, maxwaitunit: "minute") {
 			ant.not() {
 				ant.or() {
-					ant.socket(server: "localhost", port: "8080")
-					ant.socket(server: "localhost", port: "8005")
-					ant.socket(server: "localhost", port: "8009")
+					ant.socket(server: "localhost", port: httpPort)
+					ant.socket(server: "localhost", port: stopPort)
+					ant.socket(server: "localhost", port: ajpPort)
 					ant.socket(server: "localhost", port: "61616")
 				}
 			}
@@ -131,3 +159,4 @@ class SetupCommand
 		ant.echo("Tomcat stopped, itest run complete")
     }
 }
+

Modified: openejb/trunk/openejb3/assembly/openejb-tomcat/openejb-tomcat-catalina/pom.xml
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/assembly/openejb-tomcat/openejb-tomcat-catalina/pom.xml?rev=1037542&r1=1037541&r2=1037542&view=diff
==============================================================================
--- openejb/trunk/openejb3/assembly/openejb-tomcat/openejb-tomcat-catalina/pom.xml (original)
+++ openejb/trunk/openejb3/assembly/openejb-tomcat/openejb-tomcat-catalina/pom.xml Sun Nov 21 20:07:55 2010
@@ -66,6 +66,11 @@
     </dependency>
     <dependency>
       <groupId>org.apache.openejb</groupId>
+      <artifactId>openejb-tomcat-loader</artifactId>
+      <version>${project.version}</version>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.openejb</groupId>
       <artifactId>openejb-server</artifactId>
       <version>${project.version}</version>
     </dependency>

Modified: openejb/trunk/openejb3/assembly/openejb-tomcat/openejb-tomcat-catalina/src/main/java/org/apache/openejb/tomcat/catalina/OpenEJBValve.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/assembly/openejb-tomcat/openejb-tomcat-catalina/src/main/java/org/apache/openejb/tomcat/catalina/OpenEJBValve.java?rev=1037542&r1=1037541&r2=1037542&view=diff
==============================================================================
--- openejb/trunk/openejb3/assembly/openejb-tomcat/openejb-tomcat-catalina/src/main/java/org/apache/openejb/tomcat/catalina/OpenEJBValve.java (original)
+++ openejb/trunk/openejb3/assembly/openejb-tomcat/openejb-tomcat-catalina/src/main/java/org/apache/openejb/tomcat/catalina/OpenEJBValve.java Sun Nov 21 20:07:55 2010
@@ -29,9 +29,9 @@ import java.io.IOException;
 
 public class OpenEJBValve extends ValveBase {
     protected TomcatSecurityService securityService;
+    protected static final String info = OpenEJBValve.class.getName() + "/" + OpenEjbVersion.get().getVersion();
 
     public OpenEJBValve() {
-        info = getClass().getName() + "/" + OpenEjbVersion.get().getVersion();
         securityService = getSecurityService();
     }
 

Modified: openejb/trunk/openejb3/assembly/openejb-tomcat/openejb-tomcat-catalina/src/main/java/org/apache/openejb/tomcat/catalina/TomcatLoader.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/assembly/openejb-tomcat/openejb-tomcat-catalina/src/main/java/org/apache/openejb/tomcat/catalina/TomcatLoader.java?rev=1037542&r1=1037541&r2=1037542&view=diff
==============================================================================
--- openejb/trunk/openejb3/assembly/openejb-tomcat/openejb-tomcat-catalina/src/main/java/org/apache/openejb/tomcat/catalina/TomcatLoader.java (original)
+++ openejb/trunk/openejb3/assembly/openejb-tomcat/openejb-tomcat-catalina/src/main/java/org/apache/openejb/tomcat/catalina/TomcatLoader.java Sun Nov 21 20:07:55 2010
@@ -23,7 +23,6 @@ import org.apache.catalina.Host;
 import org.apache.catalina.Lifecycle;
 import org.apache.catalina.LifecycleEvent;
 import org.apache.catalina.LifecycleListener;
-import org.apache.catalina.ServerFactory;
 import org.apache.catalina.Service;
 import org.apache.catalina.core.StandardContext;
 import org.apache.catalina.core.StandardServer;
@@ -40,6 +39,7 @@ import org.apache.openejb.server.ejbd.Ej
 import org.apache.openejb.server.webservices.WsRegistry;
 import org.apache.openejb.tomcat.installer.Installer;
 import org.apache.openejb.tomcat.installer.Paths;
+import org.apache.openejb.tomcat.loader.TomcatHelper;
 import org.apache.openejb.util.LogCategory;
 import org.apache.openejb.util.Logger;
 import org.apache.openejb.util.OptionsLog;
@@ -195,7 +195,7 @@ public class TomcatLoader implements Loa
         ejbServer.init(ejbServerProps);
 
         // Add our naming context listener to the server which registers all Tomcat resources with OpenEJB
-        StandardServer standardServer = (StandardServer) ServerFactory.getServer();
+        StandardServer standardServer = (StandardServer) TomcatHelper.getServer();
         OpenEJBNamingContextListener namingContextListener = new OpenEJBNamingContextListener(standardServer);
         // Standard server has no state property, so we check global naming context to determine if server is started yet
         if (standardServer.getGlobalNamingContext() != null) {
@@ -274,7 +274,7 @@ public class TomcatLoader implements Loa
                         for (Container hostChild : host.findChildren()) {
                             if (hostChild instanceof StandardContext) {
                                 StandardContext standardContext = (StandardContext) hostChild;
-                                int state = standardContext.getState();
+                                int state = TomcatHelper.getContextState(standardContext);
                                 if (state == 0) {
                                     // context only initialized
                                     tomcatWebAppBuilder.init(standardContext);

Modified: openejb/trunk/openejb3/assembly/openejb-tomcat/openejb-tomcat-catalina/src/main/java/org/apache/openejb/tomcat/catalina/TomcatSecurityService.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/assembly/openejb-tomcat/openejb-tomcat-catalina/src/main/java/org/apache/openejb/tomcat/catalina/TomcatSecurityService.java?rev=1037542&r1=1037541&r2=1037542&view=diff
==============================================================================
--- openejb/trunk/openejb3/assembly/openejb-tomcat/openejb-tomcat-catalina/src/main/java/org/apache/openejb/tomcat/catalina/TomcatSecurityService.java (original)
+++ openejb/trunk/openejb3/assembly/openejb-tomcat/openejb-tomcat-catalina/src/main/java/org/apache/openejb/tomcat/catalina/TomcatSecurityService.java Sun Nov 21 20:07:55 2010
@@ -20,11 +20,11 @@ package org.apache.openejb.tomcat.catali
 import org.apache.catalina.Engine;
 import org.apache.catalina.Realm;
 import org.apache.catalina.Server;
-import org.apache.catalina.ServerFactory;
 import org.apache.catalina.Service;
 import org.apache.openejb.BeanContext;
 import org.apache.openejb.core.security.AbstractSecurityService;
 import org.apache.openejb.spi.CallerPrincipal;
+import org.apache.openejb.tomcat.loader.TomcatHelper;
 
 import javax.security.auth.Subject;
 import javax.security.auth.login.LoginException;
@@ -45,7 +45,7 @@ public class TomcatSecurityService exten
     private Realm defaultRealm;
 
     public TomcatSecurityService() {
-        Server server = ServerFactory.getServer();
+        Server server = TomcatHelper.getServer();
         for (Service service : server.findServices()) {
             if (service.getContainer() instanceof Engine) {
                 Engine engine = (Engine) service.getContainer();

Modified: openejb/trunk/openejb3/assembly/openejb-tomcat/openejb-tomcat-catalina/src/main/java/org/apache/openejb/tomcat/catalina/TomcatWebAppBuilder.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/assembly/openejb-tomcat/openejb-tomcat-catalina/src/main/java/org/apache/openejb/tomcat/catalina/TomcatWebAppBuilder.java?rev=1037542&r1=1037541&r2=1037542&view=diff
==============================================================================
--- openejb/trunk/openejb3/assembly/openejb-tomcat/openejb-tomcat-catalina/src/main/java/org/apache/openejb/tomcat/catalina/TomcatWebAppBuilder.java (original)
+++ openejb/trunk/openejb3/assembly/openejb-tomcat/openejb-tomcat-catalina/src/main/java/org/apache/openejb/tomcat/catalina/TomcatWebAppBuilder.java Sun Nov 21 20:07:55 2010
@@ -20,7 +20,6 @@ package org.apache.openejb.tomcat.catali
 import org.apache.catalina.Container;
 import org.apache.catalina.Engine;
 import org.apache.catalina.LifecycleListener;
-import org.apache.catalina.ServerFactory;
 import org.apache.catalina.Service;
 import org.apache.catalina.Wrapper;
 import org.apache.catalina.core.ContainerBase;
@@ -70,6 +69,7 @@ import static org.apache.openejb.tomcat.
 import static org.apache.openejb.tomcat.catalina.BackportUtil.getServlet;
 import org.apache.openejb.tomcat.common.LegacyAnnotationProcessor;
 import org.apache.openejb.tomcat.common.TomcatVersion;
+import org.apache.openejb.tomcat.loader.TomcatHelper;
 import org.apache.openejb.util.LinkResolver;
 import org.apache.openejb.util.LogCategory;
 import org.apache.openejb.util.Logger;
@@ -151,9 +151,14 @@ public class TomcatWebAppBuilder impleme
      * instance.
      */
     public TomcatWebAppBuilder() {
-        StandardServer standardServer = (StandardServer) ServerFactory.getServer();
+    	
+    	// TODO: re-write this bit, so this becomes part of the listener, and we register this with the mbean server.
+    	
+        StandardServer standardServer = (StandardServer) TomcatHelper.getServer();
         globalListenerSupport = new GlobalListenerSupport(standardServer, this);
 
+        // could search mbeans
+        
         //Getting host config listeners
         for (Service service : standardServer.findServices()) {
             if (service.getContainer() instanceof Engine) {
@@ -221,6 +226,8 @@ public class TomcatWebAppBuilder impleme
                 if (host == null) {
                     host = "localhost";
                 }
+                
+                // TODO: instead of storing deployers, we could just lookup the right hostconfig for the server.
                 HostConfig deployer = deployers.get(host);
                 if (deployer != null) {
                     // host isn't set until we call deployer.manageApp, so pass it

Modified: openejb/trunk/openejb3/assembly/openejb-tomcat/openejb-tomcat-catalina/src/main/java/org/apache/openejb/tomcat/catalina/TomcatWsRegistry.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/assembly/openejb-tomcat/openejb-tomcat-catalina/src/main/java/org/apache/openejb/tomcat/catalina/TomcatWsRegistry.java?rev=1037542&r1=1037541&r2=1037542&view=diff
==============================================================================
--- openejb/trunk/openejb3/assembly/openejb-tomcat/openejb-tomcat-catalina/src/main/java/org/apache/openejb/tomcat/catalina/TomcatWsRegistry.java (original)
+++ openejb/trunk/openejb3/assembly/openejb-tomcat/openejb-tomcat-catalina/src/main/java/org/apache/openejb/tomcat/catalina/TomcatWsRegistry.java Sun Nov 21 20:07:55 2010
@@ -24,7 +24,6 @@ import org.apache.catalina.Host;
 import org.apache.catalina.Lifecycle;
 import org.apache.catalina.LifecycleEvent;
 import org.apache.catalina.LifecycleListener;
-import org.apache.catalina.ServerFactory;
 import org.apache.catalina.Service;
 import org.apache.catalina.Wrapper;
 import org.apache.catalina.authenticator.BasicAuthenticator;
@@ -40,6 +39,8 @@ import org.apache.catalina.deploy.Securi
 import org.apache.openejb.server.httpd.HttpListener;
 import org.apache.openejb.server.webservices.WsRegistry;
 import org.apache.openejb.server.webservices.WsServlet;
+import org.apache.openejb.tomcat.loader.TomcatHelper;
+
 import static org.apache.openejb.tomcat.catalina.TomcatWebAppBuilder.IGNORE_CONTEXT;
 
 import java.net.URI;
@@ -55,7 +56,7 @@ public class TomcatWsRegistry implements
     private List<Connector> connectors;
 
     public TomcatWsRegistry() {
-        StandardServer standardServer = (StandardServer) ServerFactory.getServer();
+        StandardServer standardServer = (StandardServer) TomcatHelper.getServer();
         for (Service service : standardServer.findServices()) {
             if (service.getContainer() instanceof Engine) {
                 connectors = Arrays.asList(service.findConnectors());

Modified: openejb/trunk/openejb3/assembly/openejb-tomcat/openejb-tomcat-common/src/main/java/org/apache/openejb/tomcat/common/TomcatVersion.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/assembly/openejb-tomcat/openejb-tomcat-common/src/main/java/org/apache/openejb/tomcat/common/TomcatVersion.java?rev=1037542&r1=1037541&r2=1037542&view=diff
==============================================================================
--- openejb/trunk/openejb3/assembly/openejb-tomcat/openejb-tomcat-common/src/main/java/org/apache/openejb/tomcat/common/TomcatVersion.java (original)
+++ openejb/trunk/openejb3/assembly/openejb-tomcat/openejb-tomcat-common/src/main/java/org/apache/openejb/tomcat/common/TomcatVersion.java Sun Nov 21 20:07:55 2010
@@ -23,7 +23,7 @@ import java.util.Properties;
  */
 public enum TomcatVersion {
 
-    v3, v40, v41, v50, v55, v6, UNKNOWN;
+    v3, v40, v41, v50, v55, v6, v7, UNKNOWN;
 
     private String serverNumber;
     private String serverBuilt;
@@ -90,6 +90,7 @@ public enum TomcatVersion {
             else if (serverNumber.startsWith("5.0")) version = v50;
             else if (serverNumber.startsWith("5.5")) version = v55;
             else if (serverNumber.startsWith("6.")) version = v6;
+            else if (serverNumber.startsWith("7.")) version = v7;
             else version = UNKNOWN;
 
             version.serverNumber = serverNumber;

Modified: openejb/trunk/openejb3/assembly/openejb-tomcat/openejb-tomcat-common/src/main/java/org/apache/openejb/tomcat/installer/Paths.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/assembly/openejb-tomcat/openejb-tomcat-common/src/main/java/org/apache/openejb/tomcat/installer/Paths.java?rev=1037542&r1=1037541&r2=1037542&view=diff
==============================================================================
--- openejb/trunk/openejb3/assembly/openejb-tomcat/openejb-tomcat-common/src/main/java/org/apache/openejb/tomcat/installer/Paths.java (original)
+++ openejb/trunk/openejb3/assembly/openejb-tomcat/openejb-tomcat-common/src/main/java/org/apache/openejb/tomcat/installer/Paths.java Sun Nov 21 20:07:55 2010
@@ -146,7 +146,7 @@ public class Paths {
 
         if (catalinaHomeDir == null) return null;
 
-        if (TomcatVersion.v6.isTheVersion()) {
+        if (TomcatVersion.v6.isTheVersion() || TomcatVersion.v7.isTheVersion()) {
             return new File(catalinaHomeDir, "lib");
         } else {
             return new File(new File(catalinaHomeDir, "server"), "lib");

Modified: openejb/trunk/openejb3/assembly/openejb-tomcat/openejb-tomcat-loader/src/main/java/org/apache/openejb/tomcat/loader/OpenEJBListener.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/assembly/openejb-tomcat/openejb-tomcat-loader/src/main/java/org/apache/openejb/tomcat/loader/OpenEJBListener.java?rev=1037542&r1=1037541&r2=1037542&view=diff
==============================================================================
--- openejb/trunk/openejb3/assembly/openejb-tomcat/openejb-tomcat-loader/src/main/java/org/apache/openejb/tomcat/loader/OpenEJBListener.java (original)
+++ openejb/trunk/openejb3/assembly/openejb-tomcat/openejb-tomcat-loader/src/main/java/org/apache/openejb/tomcat/loader/OpenEJBListener.java Sun Nov 21 20:07:55 2010
@@ -23,7 +23,6 @@ import java.util.Properties;
 import org.apache.catalina.Container;
 import org.apache.catalina.LifecycleEvent;
 import org.apache.catalina.LifecycleListener;
-import org.apache.catalina.ServerFactory;
 import org.apache.catalina.Service;
 import org.apache.catalina.core.StandardContext;
 import org.apache.catalina.core.StandardEngine;
@@ -53,15 +52,16 @@ public class OpenEJBListener implements 
     public void lifecycleEvent(LifecycleEvent event) {
         // only install once
         if (listenerInstalled) return;
-        listenerInstalled = true;
-
-        Properties properties = new Properties();
-        File webappDir = findOpenEjbWar();
-        properties.setProperty("openejb.war", webappDir.getAbsolutePath());
-
-        properties.setProperty("openejb.embedder.source", getClass().getSimpleName());
-
-        TomcatEmbedder.embed(properties, StandardServer.class.getClassLoader());
+        
+        try {
+	        Properties properties = new Properties();
+	        File webappDir = findOpenEjbWar();
+	        properties.setProperty("openejb.war", webappDir.getAbsolutePath());
+	        properties.setProperty("openejb.embedder.source", getClass().getSimpleName());
+	        TomcatEmbedder.embed(properties, StandardServer.class.getClassLoader());
+	        listenerInstalled = true;
+        } catch (Exception e) {
+        }
     }
 
     private static File findOpenEjbWar() {
@@ -72,36 +72,39 @@ public class OpenEJBListener implements 
         if (openEjbWar != null) {
             return openEjbWar;
         }
-
-        // in Tomcat 6 the OpenEjb war is normally in webapps, but we just scan all hosts directories
-        for (Service service : ServerFactory.getServer().findServices()) {
-            Container container = service.getContainer();
-            if (container instanceof StandardEngine) {
-                StandardEngine engine = (StandardEngine) container;
-                for (Container child : engine.findChildren()) {
-                    if (child instanceof StandardHost) {
-                        StandardHost host = (StandardHost) child;
-                        String appBase = host.getAppBase();
-
-                        // determine the host dir (normally webapps)
-                        File hostDir = new File(appBase);
-                        if (!hostDir.isAbsolute()) {
-                            hostDir = new File(catalinaBase, appBase);
-                        }
-
-                        openEjbWar = findOpenEjbWar(hostDir);
-                        if (openEjbWar != null) {
-                            return openEjbWar;
-                        } else {
-                        	return findOpenEjbWar(host);
-                        }
-                    }
-                }
-            }
-        }
-
-
-        return null;
+		        
+		try {
+			// in Tomcat 6 the OpenEjb war is normally in webapps, but we just
+			// scan all hosts directories
+			for (Service service : TomcatHelper.getServer().findServices()) {
+				Container container = service.getContainer();
+				if (container instanceof StandardEngine) {
+					StandardEngine engine = (StandardEngine) container;
+					for (Container child : engine.findChildren()) {
+						if (child instanceof StandardHost) {
+							StandardHost host = (StandardHost) child;
+							String appBase = host.getAppBase();
+
+							// determine the host dir (normally webapps)
+							File hostDir = new File(appBase);
+							if (!hostDir.isAbsolute()) {
+								hostDir = new File(catalinaBase, appBase);
+							}
+
+							openEjbWar = findOpenEjbWar(hostDir);
+							if (openEjbWar != null) {
+								return openEjbWar;
+							} else {
+								return findOpenEjbWar(host);
+							}
+						}
+					}
+				}
+			}
+		} catch (Exception e) {
+		}      
+		
+		return null;
     }
     
     private static File findOpenEjbWar(StandardHost standardHost) {

Added: openejb/trunk/openejb3/assembly/openejb-tomcat/openejb-tomcat-loader/src/main/java/org/apache/openejb/tomcat/loader/TomcatHelper.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/assembly/openejb-tomcat/openejb-tomcat-loader/src/main/java/org/apache/openejb/tomcat/loader/TomcatHelper.java?rev=1037542&view=auto
==============================================================================
--- openejb/trunk/openejb3/assembly/openejb-tomcat/openejb-tomcat-loader/src/main/java/org/apache/openejb/tomcat/loader/TomcatHelper.java (added)
+++ openejb/trunk/openejb3/assembly/openejb-tomcat/openejb-tomcat-loader/src/main/java/org/apache/openejb/tomcat/loader/TomcatHelper.java Sun Nov 21 20:07:55 2010
@@ -0,0 +1,74 @@
+package org.apache.openejb.tomcat.loader;
+
+import java.lang.management.ManagementFactory;
+import java.lang.reflect.Method;
+
+import javax.management.MBeanServer;
+import javax.management.ObjectName;
+
+import org.apache.catalina.core.StandardContext;
+import org.apache.catalina.core.StandardServer;
+
+public class TomcatHelper {
+
+	public static StandardServer getServer() {
+		StandardServer server = null;
+		
+		// first try to use Tomcat's ServerFactory class to give us a reference to the server
+		
+		try {
+			Class<?> tomcatServerFactory = Class.forName("org.apache.catalina.ServerFactory");
+			Method getServerMethod = tomcatServerFactory.getMethod("getServer");
+			server = (StandardServer) getServerMethod.invoke(null);
+		} catch (Exception e) {
+		}
+		
+		if (server != null) {
+			return server;
+		}
+		
+		// if this fails, we'll try and get a reference from the platform mbean server
+		try {
+			MBeanServer mbeanServer = ManagementFactory.getPlatformMBeanServer();
+			server = (StandardServer) mbeanServer.getAttribute(new ObjectName("Catalina:type=Server"), "managedResource");
+		} catch (Exception e) {
+		}
+
+		// if this still fails, that's too bad.
+		
+		return server;
+	}
+	
+	public static int getContextState(StandardContext standardContext) {
+		int state;
+		
+		try {
+			Method getStateMethod = StandardContext.class.getMethod("getState");
+			Object result = getStateMethod.invoke(standardContext);
+			
+			
+			if (Integer.TYPE.equals(result.getClass())) {
+				state = (Integer) result;
+				return state;
+			}
+			
+			if (result.getClass().isEnum()) {
+				Enum<?> e = (Enum<?>) result;
+				
+				if ("FAILED".equals(e.toString())) {
+					return 4;
+				} else if ("STOPPING".equals(e.toString()) || "STOPPING_PREP".equals(e.toString()) || "MUST_STOP".equals(e.toString()) || "MUST_DESTROY".equals(e.toString())) {
+					return 2;
+				} else if ("RUNNING".equals(e.toString()) || "STARTED".equals(e.toString())) {
+					return 1;
+				} else if ("INITIALIZED".equals(e.toString())) {
+					return 0;
+				}
+			}
+		} catch (Exception e) {
+		}
+		
+		// return STOPPED by default
+		return 3;
+	}
+}

Modified: openejb/trunk/openejb3/assembly/openejb-tomcat/openejb-tomcat-webapp/src/main/webapp/testhome.jsp
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/assembly/openejb-tomcat/openejb-tomcat-webapp/src/main/webapp/testhome.jsp?rev=1037542&r1=1037541&r2=1037542&view=diff
==============================================================================
--- openejb/trunk/openejb3/assembly/openejb-tomcat/openejb-tomcat-webapp/src/main/webapp/testhome.jsp (original)
+++ openejb/trunk/openejb3/assembly/openejb-tomcat/openejb-tomcat-webapp/src/main/webapp/testhome.jsp Sun Nov 21 20:07:55 2010
@@ -145,7 +145,7 @@ java.io.File
             out.print("<tr><td><font size='2'>has lib directory</font></td> ");
 
             File openejbHomeLib;
-            if (TomcatVersion.v6.isTheVersion()) {
+            if (TomcatVersion.v6.isTheVersion() || TomcatVersion.v7.isTheVersion()) {
                 openejbHomeLib = new File(openejbHome, "lib");
             } else {
                 File common = new File(openejbHome, "common");

Modified: openejb/trunk/openejb3/assembly/openejb-webapp/src/main/webapp/testhome.jsp
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/assembly/openejb-webapp/src/main/webapp/testhome.jsp?rev=1037542&r1=1037541&r2=1037542&view=diff
==============================================================================
--- openejb/trunk/openejb3/assembly/openejb-webapp/src/main/webapp/testhome.jsp (original)
+++ openejb/trunk/openejb3/assembly/openejb-webapp/src/main/webapp/testhome.jsp Sun Nov 21 20:07:55 2010
@@ -145,7 +145,7 @@ java.io.File
             out.print("<tr><td><font size='2'>has lib directory</font></td> ");
 
             File openejbHomeLib;
-            if (TomcatVersion.v6.isTheVersion()) {
+            if (TomcatVersion.v6.isTheVersion() || TomcatVersion.v7.isTheVersion()) {
                 openejbHomeLib = new File(openejbHome, "lib");
             } else {
                 File common = new File(openejbHome, "common");

Modified: openejb/trunk/openejb3/assembly/pom.xml
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/assembly/pom.xml?rev=1037542&r1=1037541&r2=1037542&view=diff
==============================================================================
--- openejb/trunk/openejb3/assembly/pom.xml (original)
+++ openejb/trunk/openejb3/assembly/pom.xml Sun Nov 21 20:07:55 2010
@@ -40,5 +40,4 @@
     <!-- don't run this just yet, its in progress -->
     <!-- <module>itest-runner</module> -->
   </modules>
-</project>
-
+</project>
\ No newline at end of file