#
#  Licensed to the Apache Software Foundation (ASF) under one or more
#  contributor license agreements.  See the NOTICE file distributed with
#  this work for additional information regarding copyright ownership.
#  The ASF licenses this file to You under the Apache License, Version 2.0
#  (the "License"); you may not use this file except in compliance with
#  the License.  You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
#  Unless required by applicable law or agreed to in writing, software
#  distributed under the License is distributed on an "AS IS" BASIS,
#  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
#  See the License for the specific language governing permissions and
#  limitations under the License.
#

openejb.system.apps=true
openejb.deployments.classpath=true
tomee.remote.support=true
openejb.embedded.remotable=true
openejb.forceReadOnlyAppNamingContext=true

RESOURCE.whitebox-notx-param|poolMaxSize=100
RESOURCE.whitebox-notx|poolMaxSize=100
RESOURCE.whitebox-tx-param|poolMaxSize=100
RESOURCE.whitebox-tx|poolMaxSize=100
RESOURCE.whitebox-xa-param|poolMaxSize=100
RESOURCE.whitebox-xa|poolMaxSize=100

RESOURCE.JDBCwhitebox-notx-param|ConnectionURL=jdbc:hsqldb:file:target/apache-tomcat-7.0.8/hsqldb;user=cts;password=cts
RESOURCE.JDBCwhitebox-notx-param|DriverName=org.hsqldb.jdbcDriver
RESOURCE.JDBCwhitebox-notx-param|poolMaxSize=100

RESOURCE.JDBCwhitebox-notx|ConnectionURL=jdbc:hsqldb:file:target/apache-tomcat-7.0.8/hsqldb;user=cts;password=cts
RESOURCE.JDBCwhitebox-notx|DriverName=org.hsqldb.jdbcDriver
RESOURCE.JDBCwhitebox-notx|poolMaxSize=100

RESOURCE.JDBCwhitebox-tx-param|ConnectionURL=jdbc:hsqldb:file:target/apache-tomcat-7.0.8/hsqldb;user=cts;password=cts
RESOURCE.JDBCwhitebox-tx-param|DriverName=org.hsqldb.jdbcDriver
RESOURCE.JDBCwhitebox-tx-param|poolMaxSize=100

RESOURCE.JDBCwhitebox-tx|ConnectionURL=jdbc:hsqldb:file:target/apache-tomcat-7.0.8/hsqldb;user=cts;password=cts
RESOURCE.JDBCwhitebox-tx|DriverName=org.hsqldb.jdbcDriver
RESOURCE.JDBCwhitebox-tx|poolMaxSize=100

RESOURCE.JDBCwhitebox-xa-param|XAProps=JdbcUrl="jdbc:hsqldb:file:target/apache-tomcat-7.0.8/hsqldb;user=cts;password=cts"
RESOURCE.JDBCwhitebox-xa-param|XADataSourceName=org.apache.openejb.cts.DriverManagerXADataSource
RESOURCE.JDBCwhitebox-xa-param|poolMaxSize=100

RESOURCE.JDBCwhitebox-xa|XAProps=JdbcUrl='jdbc:hsqldb:file:target/apache-tomcat-7.0.8/hsqldb;user=cts;password=cts'
RESOURCE.JDBCwhitebox-xa|XADataSourceName=org.apache.openejb.cts.DriverManagerXADataSource
RESOURCE.JDBCwhitebox-xa|poolMaxSize=100

RESOURCE.whitebox-xa.rar|TSRValue=java:comp/TransactionSynchronizationRegistry

openejb.descriptors.output=true
openejb.deploymentId.format={appId}/{ejbJarId}/{ejbName}
