Return-Path: Delivered-To: apmail-openejb-commits-archive@www.apache.org Received: (qmail 4542 invoked from network); 23 Nov 2008 14:00:38 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (140.211.11.2) by minotaur.apache.org with SMTP; 23 Nov 2008 14:00:38 -0000 Received: (qmail 53748 invoked by uid 500); 23 Nov 2008 14:00:47 -0000 Delivered-To: apmail-openejb-commits-archive@openejb.apache.org Received: (qmail 53731 invoked by uid 500); 23 Nov 2008 14:00:47 -0000 Mailing-List: contact commits-help@openejb.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@openejb.apache.org Delivered-To: mailing list commits@openejb.apache.org Received: (qmail 53722 invoked by uid 99); 23 Nov 2008 14:00:47 -0000 Received: from athena.apache.org (HELO athena.apache.org) (140.211.11.136) by apache.org (qpsmtpd/0.29) with ESMTP; Sun, 23 Nov 2008 06:00:47 -0800 X-ASF-Spam-Status: No, hits=-2000.0 required=10.0 tests=ALL_TRUSTED X-Spam-Check-By: apache.org Received: from [140.211.11.4] (HELO eris.apache.org) (140.211.11.4) by apache.org (qpsmtpd/0.29) with ESMTP; Sun, 23 Nov 2008 13:59:29 +0000 Received: by eris.apache.org (Postfix, from userid 65534) id B448C2388879; Sun, 23 Nov 2008 05:59:44 -0800 (PST) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Subject: svn commit: r719990 - /openejb/trunk/openejb3/assembly/openejb-tomcat/openejb-tomcat-loader/src/main/java/org/apache/openejb/tomcat/loader/OpenEJBListener.java Date: Sun, 23 Nov 2008 13:59:44 -0000 To: commits@openejb.apache.org From: jgallimore@apache.org X-Mailer: svnmailer-1.0.8 Message-Id: <20081123135944.B448C2388879@eris.apache.org> X-Virus-Checked: Checked by ClamAV on apache.org Author: jgallimore Date: Sun Nov 23 05:59:44 2008 New Revision: 719990 URL: http://svn.apache.org/viewvc?rev=719990&view=rev Log: OPENEJB-961 - allow openejb.war to be defined in a tomcat context. Thanks to Jean-Sébastien Scrève for the patch. Modified: openejb/trunk/openejb3/assembly/openejb-tomcat/openejb-tomcat-loader/src/main/java/org/apache/openejb/tomcat/loader/OpenEJBListener.java 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=719990&r1=719989&r2=719990&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 23 05:59:44 2008 @@ -20,11 +20,14 @@ import java.io.File; import java.util.Properties; +import javax.management.ObjectName; + 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; import org.apache.catalina.core.StandardHost; import org.apache.catalina.core.StandardServer; @@ -78,6 +81,8 @@ openEjbWar = findOpenEjbWar(hostDir); if (openEjbWar != null) { return openEjbWar; + } else { + return findOpenEjbWar(host); } } } @@ -87,6 +92,23 @@ return null; } + + private static File findOpenEjbWar(StandardHost standardHost) { + //look for openejb war in a Tomcat context + for(Container container : standardHost.findChildren()) { + if(container instanceof StandardContext) { + StandardContext standardContext = (StandardContext)container; + File contextDocBase = new File(standardContext.getDocBase()); + if(contextDocBase.isDirectory()) { + File openEjbWar = findOpenEjbWarInContext(contextDocBase); + if (openEjbWar != null) { + return openEjbWar; + } + } + } + } + return null; + } private static File findOpenEjbWar(File hostDir) { if (!hostDir.isDirectory()) { @@ -95,19 +117,27 @@ // iterate over the contexts for (File contextDir : hostDir.listFiles()) { - // does this war have a web-inf lib dir - File webInfLib = new File(new File(contextDir, "WEB-INF"), "lib"); - if (!webInfLib.isDirectory()) { - continue; - } - // iterate over the libs looking for the openejb-loader-*.jar - for (File file : webInfLib.listFiles()) { - if (file.getName().startsWith("openejb-tomcat-loader-") && file.getName().endsWith(".jar")) { - // this should be the openejb war... - // make sure it has a lib directory - if (new File(contextDir, "lib").isDirectory()) { - return contextDir; - } + File foundContextDir = findOpenEjbWarInContext(contextDir); + if(foundContextDir != null) { + return foundContextDir; + } + } + return null; + } + + private static File findOpenEjbWarInContext(File contextDir) { + // does this war have a web-inf lib dir + File webInfLib = new File(new File(contextDir, "WEB-INF"), "lib"); + if (!webInfLib.isDirectory()) { + return null; + } + // iterate over the libs looking for the openejb-loader-*.jar + for (File file : webInfLib.listFiles()) { + if (file.getName().startsWith("openejb-tomcat-loader-") && file.getName().endsWith(".jar")) { + // this should be the openejb war... + // make sure it has a lib directory + if (new File(contextDir, "lib").isDirectory()) { + return contextDir; } } }