# all this properties are added at JVM system properties at startup
# here some default Apache TomEE system properties
# for more information please see http://tomee.apache.org/properties-listing.html

# allowed packages to be deserialized, by security we denied all by default, tune tomee.serialization.class.whitelist packages to change it
# tomee.remote.support = true
tomee.serialization.class.blacklist = *
# tomee.serialization.class.whitelist = my.package
# Johnzon prevents too big string to be unserialized by default
# You can either configure it by Mapper/Parser instance or globally
# With this property:
# org.apache.johnzon.max-string-length = 8192

# Should a jar with at least one EJB activate CDI for this module?
# Spec says so but this can imply more (permgen) memory usage
# openejb.cdi.activated-on-ejb = true

# openejb.check.classloader = false
# openejb.check.classloader.verbose = false

# Activate EE default resources (ManagedExecutorService, JMSConnectionFactory if JMS is there...)openejb.environment.default = true

# tomee.jaxws.subcontext = webservices
# tomee.jaxws.oldsubcontext = false

# if you want to propagate a deployment on a cluster when a tomcat cluster is defined
# tomee.cluster.deployment = false

# openejb.system.apps = true
# openejb.servicemanager.enabled = true
# openejb.jmx.active = false
# openejb.descriptors.output = false
# openejb.strict.interface.declaration = false
# openejb.conf.file = conf/tomee.xml
# openejb.debuggable-vm-hackery = false
# openejb.validation.skip = false
# openejb.webservices.enabled = true
# openejb.validation.output.level = MEDIUM
# openejb.user.mbeans.list = *
# openejb.deploymentId.format = {appId}/{ejbJarId}/{ejbName}
# openejb.jndiname.format = {deploymentId}{interfaceType.annotationName}
# openejb.deployments.package.include = .*
# openejb.deployments.package.exclude = 
# openejb.autocreate.jta-datasource-from-non-jta-one = true
# openejb.altdd.prefix = 
# org.apache.openejb.default.system.interceptors = 
# openejb.jndiname.failoncollision = true
# openejb.wsAddress.format = /{ejbDeploymentId}
# org.apache.openejb.server.webservices.saaj.provider = 
# openejb.nobanner = true
# openejb.offline = false
# openejb.jmx.active = true
# openejb.exclude-include.order = include-exclude
# openejb.additional.exclude =
# openejb.additional.include =
# openejb.crosscontext = false
# openejb.jsessionid-support = 
# openejb.myfaces.disable-default-values = true
# openejb.web.xml.major = 
# openjpa.Log = 
# openejb.jdbc.log = false
# javax.persistence.provider = org.apache.openjpa.persistence.PersistenceProviderImpl
# javax.persistence.transactionType = 
# javax.persistence.jtaDataSource = 
# javax.persistence.nonJtaDataSource = 
#
# Properties for JAS RS
# openejb.jaxrs.application = 
# openejb.cxf-rs.wadl-generator.ignoreRequests = false
# openejb.cxf-rs.wadl-generator.ignoreMessageWriters = true
# Replace the Jonhzon JSON Providers with the following classes [comma seperated, no spaces]
# openejb.jaxrs.jsonProviders =
#
# These properties are only for cxf service (SOAP webservices) and TomEE+
# If you don't use special tricks and sun default implementation, uncommenting these 4 lines forces TomEE to use it without overhead at all = 
# javax.xml.soap.MessageFactory = com.sun.xml.messaging.saaj.soap.ver1_1.SOAPMessageFactory1_1Impl
# javax.xml.soap.SOAPFactory = com.sun.xml.messaging.saaj.soap.ver1_1.SOAPFactory1_1Impl
# javax.xml.soap.SOAPConnectionFactory = com.sun.xml.messaging.saaj.client.p2p.HttpSOAPConnectionFactory
# javax.xml.soap.MetaFactory = com.sun.xml.messaging.saaj.soap.SAAJMetaFactoryImpl
