#
#  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.
#
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/openejb-3.1-SNAPSHOT/data/hsqldb/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/openejb-3.1-SNAPSHOT/data/hsqldb/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/openejb-3.1-SNAPSHOT/data/hsqldb/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/openejb-3.1-SNAPSHOT/data/hsqldb/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/openejb-3.1-SNAPSHOT/data/hsqldb/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/openejb-3.1-SNAPSHOT/data/hsqldb/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.convert-jpa-properties=true
openejb.descriptors.output=true

openejb.deploymentId.format={appId}/{ejbJarId}/{ejbName}

openejb.classloader.forced-load = com.sun.ts.tests.
