#********************************************************************
# Wrapper Properties
#********************************************************************
# Java Application
wrapper.java.command=java

# set the working directory to the SYNAPSE_HOME
wrapper.working.dir=../..

# Java Main class.  This class must implement the WrapperListener interface
#  or guarantee that the WrapperManager class is initialized.  Helper
#  classes are provided to do this for you.  See the Integration section
#  of the documentation for details.
wrapper.java.mainclass=org.tanukisoftware.wrapper.WrapperSimpleApp

# Java Classpath (include wrapper.jar)  Add class path elements as
#  needed starting from 1
wrapper.java.classpath.1=%CLASSPATH%
wrapper.java.classpath.2=lib/wrapper-3.2.3.jar
wrapper.java.classpath.3=lib
wrapper.java.classpath.4=repository/conf
wrapper.java.classpath.5=lib/*.jar

# Java Library Path (location of Wrapper.DLL or libwrapper.so)
wrapper.java.library.path.1=lib


# Java Additional Parameters
wrapper.java.additional.1=-Dsynapse.xml=repository/conf/synapse.xml
wrapper.java.additional.2=-Daxis2.xml=repository/conf/axis2.xml
wrapper.java.additional.3=-Daxis2.repo=repository
wrapper.java.additional.4=-Djava.endorsed.dirs=lib/endorsed
wrapper.java.additional.5=-Dsynapse.home=.
wrapper.java.additional.6=-Dorg.apache.xerces.xni.parser.XMLParserConfiguration=org.apache.xerces.parsers.XMLGrammarCachingConfiguration
wrapper.java.additional.7=-Dlog4j.configuration=file:lib/log4j.properties
wrapper.java.additional.8=-Djava.io.tmpdir=work/temp/synapse
wrapper.java.additional.9=-Dresolve.root=repository
wrapper.java.additional.10=

# Initial Java Heap Size (in MB)
wrapper.java.initmemory=128

# Maximum Java Heap Size (in MB)
wrapper.java.maxmemory=128

# Application parameters.  Add parameters as needed starting from 1
wrapper.app.parameter.1=org.apache.synapse.SynapseServer
wrapper.app.parameter.2=repository

#********************************************************************
# Wrapper Logging Properties
#********************************************************************
# Format of output for the console.  (See docs for formats)
wrapper.console.format=M

# Log Level for console output.  (See docs for log levels)
wrapper.console.loglevel=INFO

# Log file to use for wrapper output logging.
wrapper.logfile=logs/wrapper.log

# Format of output for the log file.  (See docs for formats)
wrapper.logfile.format=M

# Log Level for log file output.  (See docs for log levels)
wrapper.logfile.loglevel=INFO

# Maximum size that the log file will be allowed to grow to before
#  the log is rolled. Size is specified in bytes.  The default value
#  of 0, disables log rolling.  May abbreviate with the 'k' (kb) or
#  'm' (mb) suffix.  For example: 10m = 10 megabytes.
wrapper.logfile.maxsize=0

# Maximum number of rolled log files which will be allowed before old
#  files are deleted.  The default value of 0 implies no limit.
wrapper.logfile.maxfiles=0

# Log Level for sys/event log output.  (See docs for log levels)
wrapper.syslog.loglevel=NONE

#********************************************************************
# Wrapper Windows Properties
#********************************************************************
# Title to use when running as a console
wrapper.console.title=Apache Synapse (Synapse)

#********************************************************************
# Wrapper Windows NT/2000/XP Service Properties
#********************************************************************
# WARNING - Do not modify any of these properties when an application
#  using this configuration file has been installed as a service.
#  Please uninstall the service before modifying this section.  The
#  service can then be reinstalled.

# Name of the service
wrapper.ntservice.name=Synapse

# Display name of the service
wrapper.ntservice.displayname=Apache Synapse (Synapse)

# Description of the service
wrapper.ntservice.description=Apache Synapse (Synapse)

# Service dependencies.  Add dependencies as needed starting from 1
wrapper.ntservice.dependency.1=

# Mode in which the service is installed.  AUTO_START or DEMAND_START
wrapper.ntservice.starttype=AUTO_START

# Allow the service to interact with the desktop.
wrapper.ntservice.interactive=false
