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