###############################################################################
# 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.
###############################################################################
####
# OFBiz Startup Application Settings
####

# --- Java LIB tools.jar is not required
#java.tools.jar.required=false

# --- External Base configuration files (relative to ofbiz.home)
#ofbiz.base.config=framework/base/config

# --- External Base schema files (relative to ofbiz.home)
#ofbiz.base.schema=framework/base/dtd

# --- External Base libraries (relative to ofbiz.home)
#ofbiz.base.lib=framework/base/lib

# --- Base Jar [ofbiz-base.jar] (relative to ofbiz.home)
#ofbiz.base.jar=framework/base/build/lib/ofbiz-base.jar

# --- Default logs directory (relative to ofbiz.home)
#ofbiz.log.dir=runtime/logs

# --- Location (relative to ofbiz.home) for (normal) container configuration
ofbiz.container.config=framework/base/config/both-containers.xml

# -- StartupLoader implementation for Splash Screen
ofbiz.start.loader1=org.ofbiz.base.splash.SplashLoader

# --- StartupLoader implementations to load (in order)
ofbiz.start.loader2=org.ofbiz.base.container.ContainerLoader

# -- Splash Logo
ofbiz.start.splash.logo=framework/images/webapp/images/ofbiz_logo.gif

# -- Enable the shutdown hook
ofbiz.enable.hook=true

# -- Auto-Shutdown after load
ofbiz.auto.shutdown=false

# --- Default Derby system home directory
#derby.system.home=runtime/data/derby

# --- By default we will find base/config/debug.properties and point to there
#log4j.configuration=log4j.xml

# --- Tells AWT (i.e. JasperReports/FOP/etc) to not require a head (X11)
java.awt.headless=false
