#********************************************************************
# 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=-Dhttp_port
wrapper.java.additional.2=-Dhttps_port
wrapper.java.additional.3=-Dserver_name
wrapper.java.additional.4=-Djava.endorsed.dirs=lib/endorsed
wrapper.java.additional.5=-Dlog4j.configuration=file:lib/log4j.properties
wrapper.java.additional.6=-Djava.io.tmpdir=work/temp/sampleServer
wrapper.java.additional.7=


# Initial Java Heap Size (in MB) - compute according to system
wrapper.java.initmemory=128

# Maximum Java Heap Size (in MB) - compute according to system
wrapper.java.maxmemory=128

# Application parameters.  Add parameters as needed starting from 1
wrapper.app.parameter.1=samples.util.SampleAxis2Server
wrapper.app.parameter.2=-repo %AXIS2_HOME%repository
wrapper.app.parameter.3=-conf %AXIS2_HOME%repository\conf\axis2.xml

#********************************************************************
# 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/sample-server.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=5m

# 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=5

# 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=Sample Axis2 Server

#********************************************************************
# 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=SampleAxis2Server

# Display name of the service
#wrapper.ntservice.displayname=Sample Axis2 Server

# Description of the service
#wrapper.ntservice.description=Sample Axis2 Server

# 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

