
# Apache ACE agent launcher defaults
# 
# This file is loaded by the launcher to provide solid defaults. The 'default' agent 
# configuration will typically be overridden in a user specified configuration. The 
# 'system' and 'framework' options below are expert only.
#

agents=default
serverurl=http://localhost:8080
logstores=auditlog

#
# Component factories
#
# Used to instantiate the the agent service components. These are instantiated by the management 
# agent factory when a new agent is configured and may be specified per agent. 
# All classes MUST be on the (system)bundle class-path.
#
#system.factories= org.apache.ace.agent.identification.IdentifierBasedIdentificationFactory, \
#  	org.apache.ace.agent.discovery.PropertyBasedDiscoveryFactory,\
#   	org.apache.ace.agent.logging.LogFactory,\
#	org.apache.ace.agent.logging.LogStoreFactory,\
#	org.apache.ace.agent.logging.LogSyncTaskFactory,\
#	org.apache.ace.agent.deployment.DeploymentServiceFactory,\
#	org.apache.ace.agent.deployment.DeploymentAdminDeployerFactory,\
#	org.apache.ace.agent.deployment.DeploymentCheckTaskFactory,\
#	org.apache.ace.agent.deployment.DeploymentUpdateTaskFactory,\
#	org.apache.ace.agent.connection.ConnectionFactoryFactory

#
# Extension activators
#
# Additional 'extension' activators to be started at Management Agent startup. These these are 
# handled by the management agent configuration component once, before configuring any agents. 
# All classes MUST be on the (system)bundle class-path.
#
#system.activators= org.apache.ace.connectionfactory.impl.Activator, \
#	org.apache.ace.scheduler.Activator,\
#	org.apache.felix.deploymentadmin.Activator	

#
# Framework options 
#
# Additional framework specific configuration properties that are passed on at framework 
# initialization. These are handled by the launcher itself and follow the pattern 
# 'framework.<some.property' allowing any property to be passed on (unchecked).
#

framework.org.osgi.framework.system.packages.extra= org.osgi.service.deploymentadmin;version="1.0",\
	org.osgi.service.deploymentadmin.spi;version="1.0"
	