summaryrefslogtreecommitdiffstats
path: root/java/sca/distribution/tomcat/tomcat-hook/src/main/java/org/apache/tuscany/sca/tomcat/TuscanyLifecycleListener.java
diff options
context:
space:
mode:
Diffstat (limited to 'java/sca/distribution/tomcat/tomcat-hook/src/main/java/org/apache/tuscany/sca/tomcat/TuscanyLifecycleListener.java')
-rw-r--r--java/sca/distribution/tomcat/tomcat-hook/src/main/java/org/apache/tuscany/sca/tomcat/TuscanyLifecycleListener.java170
1 files changed, 0 insertions, 170 deletions
diff --git a/java/sca/distribution/tomcat/tomcat-hook/src/main/java/org/apache/tuscany/sca/tomcat/TuscanyLifecycleListener.java b/java/sca/distribution/tomcat/tomcat-hook/src/main/java/org/apache/tuscany/sca/tomcat/TuscanyLifecycleListener.java
deleted file mode 100644
index 75f925fec5..0000000000
--- a/java/sca/distribution/tomcat/tomcat-hook/src/main/java/org/apache/tuscany/sca/tomcat/TuscanyLifecycleListener.java
+++ /dev/null
@@ -1,170 +0,0 @@
-/*
- * 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.tuscany.sca.tomcat;
-
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.IOException;
-import java.util.Properties;
-import java.util.logging.Logger;
-
-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.connector.Connector;
-import org.apache.catalina.core.StandardEngine;
-import org.apache.catalina.core.StandardHost;
-import org.apache.catalina.core.StandardServer;
-import org.apache.catalina.core.StandardService;
-import org.apache.catalina.startup.HostConfig;
-
-/**
- * A Tomcat LifecycleListener that initilizes the Tuscany Tomcat integration.
- * It sets a System property with the location of the Tuscany runtime .war
- * and configures each Tomcat Connector to use the TuscanyStandardContext.
- *
- * To configure Tomcat to use this add the following to the Tomcat conf/server.xml
- * <Listener className="org.apache.tuscany.sca.tomcat.TuscanyLifecycleListener"/>
- */
-public class TuscanyLifecycleListener implements LifecycleListener {
- private static final Logger log = Logger.getLogger(TuscanyLifecycleListener.class.getName());
-
- public static final String TUSCANY_WAR_PROP = "org.apache.tuscany.sca.tomcat.war";
-
- private static boolean running;
-
- public static boolean isRunning() {
- return running;
- }
-
- static final String TUSCANY_SHARED_PROP = "org.apache.tuscany.sca.tomcat.shared";
-
- public TuscanyLifecycleListener() {
- running = true;
- log.info("Apache Tuscany initilizing");
- }
-
- public void lifecycleEvent(LifecycleEvent event) {
- if ("init".equals(event.getType()) && (event.getSource() instanceof StandardServer)) {
- File webappDir = findTuscanyWar();
- if (webappDir == null) {
- log.severe("Tuscany disabled as Tuscany webapp not found");
- } else {
- System.setProperty(TUSCANY_WAR_PROP, webappDir.getAbsolutePath());
- System.setProperty("org.apache.tuscany.sca.contribution.processor.ValidationSchemaExtensionPoint.enabled", "false");
- File propFile = new File(webappDir, "tuscany.properties");
- if (propFile.isFile()) {
- try {
- FileInputStream is = new FileInputStream(propFile);
- Properties props = new Properties();
- props.load(is);
- is.close();
- System.setProperty(TUSCANY_SHARED_PROP, props.getProperty("singleton", "false"));
- } catch (IOException e) {
- // Ignore
- }
- }
- log.info("Using Tuscany webapp: " + webappDir.getAbsolutePath());
- StandardServer server = (StandardServer)event.getSource();
- StandardService catalina = (StandardService)server.findService("Catalina");
- for (Connector connector : catalina.findConnectors()) {
- for (Container container : connector.getContainer().findChildren()) {
- if (container instanceof StandardHost) {
- for (LifecycleListener listener : ((StandardHost)container).findLifecycleListeners()) {
- if (listener instanceof HostConfig) {
- ((HostConfig)listener)
- .setContextClass("org.apache.tuscany.sca.tomcat.TuscanyStandardContext");
- log.info("Tuscany enabled on connector: " + container.getName()
- + ":"
- + connector.getPort());
- }
- }
- }
- }
- }
- }
- }
- }
-
- private static File findTuscanyWar() {
-
- // in Tomcat 5.5 the Tuscany war is in the server/webapps director
- String catalinaBase = System.getProperty("catalina.base");
- File serverWebapps = new File(catalinaBase, "server/webapps");
- File tuscanyWar = findTuscanyWar(serverWebapps);
- if (tuscanyWar != null) {
- return tuscanyWar;
- }
-
- // in Tomcat 6 the Tuscany 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);
- }
-
- tuscanyWar = findTuscanyWar(hostDir);
- if (tuscanyWar != null) {
- return tuscanyWar;
- }
- }
- }
- }
- }
- return null;
- }
-
- private static File findTuscanyWar(File hostDir) {
- if (!hostDir.isDirectory()) {
- return null;
- }
-
- // iterate over the contexts
- for (File contextDir : hostDir.listFiles()) {
- // does this war have a web-inf lib dir
- File hookLib = new File(contextDir, "tomcat-lib");
- if (!hookLib.isDirectory()) {
- continue;
- }
- // iterate over the libs looking for the tuscany-tomcat-*.jar
- for (File file : hookLib.listFiles()) {
- if (file.getName().startsWith("tuscany-tomcat-hook-") && file.getName().endsWith(".jar")) {
- // this should be in the Tuscany war...
- // make sure it has a runtime directory
- if (new File(contextDir, "tuscany-lib").isDirectory()) {
- return contextDir;
- }
- }
- }
- }
- return null;
- }
-}