###############################################################################
# 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
####

# --- 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/ofbiz-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
ofbiz.start.loader2.loaders=main,pos,rmi

# -- 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

# --- Tells AWT (i.e. JasperReports/FOP/etc) to not require a head (X11)
java.awt.headless=false
