#####################
# Parser Properties #
#####################

# Typical values are:
#	For Xerces, on Windows:
#		xmlParser = xerces
#		xmlParserLibrary = xerces-c_2
#	For Xerces, on Unix:
#		xmlParser = xerces
#		xmlParserLibrary = xerces-c

## Values used for XML4C
xml4c.xmlParserLibrary = xml4c_5
xml4c.xmlParserLibraryName = AxisXMLParserXML4C

## Values used for Xerces
xerces.xmlParserLibrary = xerces-c_2
xerces.xmlParserLibraryName = AxisXMLParserXerces


# Name for compiled XML Parser library - excluding any prefix or suffix
# eg: For Windows :   axis_xmlParser will produce axis_xmlParser.dll
#     For Unix    :   axis_xmlParser will produce libaxis_xmlParser.so
xmlParserLibraryName = AxisXMLParser

########################
# Transport Properties #
########################

HTTP.transport.IPV6.dir = ${env.IPV6_HOME}

## Values used for HTTP
HTTP.transportLibraryName = HTTPTransport

# Name for compiled transport library - excluding any prefix or suffix
# eg: For Windows :   axis_transport will produce axis_transport.dll
#     For Unix    :   axis_transport will produce libaxis_transport.so
#
transportLibraryName = HTTPTransport

######################
# Channel Properties #
######################

HTTP.Channel = true

# Name for compiled channel library - excluding any prefix or suffix
# eg: For Windows :   axis_transport will produce axis_transport.dll
#     For Unix    :   axis_transport will produce libaxis_transport.so
#
HTTP.ChannelLibraryName = HTTPChannel

#############################
# Secure Channel Properties #
#############################

# Name for compiled secure channel library - excluding any prefix or suffix
# eg: For Windows :   axis_transport will produce axis_transport.dll
#     For Unix    :   axis_transport will produce libaxis_transport.so

HTTP.SecureChannelLibraryName = HTTPSSLChannel

#################################
# Simple Axis Server Properties #
#################################

# Is Simple Axis Server to be used?
server.simpleAxisServer = true

# Name for compiled server engine - excluding any prefix or suffix
# eg: For Windows :   simple_axis_server will produce simple_axis_server.exe
#     For Unix    :   simple_axis_server will produce simple_axis_server
simpleAxisServerExecutableName = SimpleAxisServer

#####################
# Apache Properties #
#####################

## Values used for Apache 1.3
apache13.serverLibraryName = mod_axis

## Values used for Apache 2.0
apache20.serverLibraryName = mod_axis2

########################################
# Location of gpg keys and databases   #
########################################
gpgdir=/GPG

# Prefix and suffix used for executables and libraries
# Typical values are:
#   For windows:
#		executableSuffix = .exe
#		librarySuffix = .dll
#		libraryPrefix = 
#	For unix:
#		executableSuffix = 
#		librarySuffix = .so
#		libraryPrefix = lib
#	For AIX (as Unix, except):
#		librarySuffix = .a
executableSuffix = .exe
librarySuffix = .dll
libraryPrefix = 
