/*
 * 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.catalina.startup;

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.URL;
import java.util.Enumeration;
import java.util.Properties;

import org.apache.juli.logging.Log;
import org.apache.juli.logging.LogFactory;


Utility class to read the bootstrap Catalina configuration.
Author:Remy Maucherat
/** * Utility class to read the bootstrap Catalina configuration. * * @author Remy Maucherat */
public class CatalinaProperties { private static final Log log = LogFactory.getLog(CatalinaProperties.class); private static Properties properties = null; static { loadProperties(); }
Params:
  • name – The property name
Returns:specified property value
/** * @param name The property name * @return specified property value */
public static String getProperty(String name) { return properties.getProperty(name); }
Load properties.
/** * Load properties. */
private static void loadProperties() { InputStream is = null; String fileName = "catalina.properties"; try { String configUrl = System.getProperty("catalina.config"); if (configUrl != null) { if (configUrl.indexOf('/') == -1) { // No '/'. Must be a file name rather than a URL fileName = configUrl; } else { is = (new URL(configUrl)).openStream(); } } } catch (Throwable t) { handleThrowable(t); } if (is == null) { try { File home = new File(Bootstrap.getCatalinaBase()); File conf = new File(home, "conf"); File propsFile = new File(conf, fileName); is = new FileInputStream(propsFile); } catch (Throwable t) { handleThrowable(t); } } if (is == null) { try { is = CatalinaProperties.class.getResourceAsStream ("/org/apache/catalina/startup/catalina.properties"); } catch (Throwable t) { handleThrowable(t); } } if (is != null) { try { properties = new Properties(); properties.load(is); } catch (Throwable t) { handleThrowable(t); log.warn(t); } finally { try { is.close(); } catch (IOException ioe) { log.warn("Could not close catalina properties file", ioe); } } } if ((is == null)) { // Do something log.warn("Failed to load catalina properties file"); // That's fine - we have reasonable defaults. properties = new Properties(); } // Register the properties as system properties Enumeration<?> enumeration = properties.propertyNames(); while (enumeration.hasMoreElements()) { String name = (String) enumeration.nextElement(); String value = properties.getProperty(name); if (value != null) { System.setProperty(name, value); } } } // Copied from ExceptionUtils since that class is not visible during start private static void handleThrowable(Throwable t) { if (t instanceof ThreadDeath) { throw (ThreadDeath) t; } if (t instanceof VirtualMachineError) { throw (VirtualMachineError) t; } // All other instances of Throwable will be silently swallowed } }