<?xml version="1.0" encoding="UTF-8"?>
<!--

    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>

<Container id="CmpContainer" ctype="CMP_ENTITY">
    CmpEngineFactory org.apache.openejb.core.cmp.jpa.JpaCmpEngineFactory
    Engine  derby
    ConnectorName  CtsDataSource
</Container>

<Container id="StatefulContainer" ctype="STATEFUL">
    Passivator   org.apache.openejb.core.stateful.SimplePassivater
    TimeOut  20
    BulkPassivate  50
</Container>



<Container id="StatelessContainer" ctype="STATELESS">
    TimeOut  0
    PoolSize  10
    StrictPooling  true
</Container>

<Container id="SingletonContainer" ctype="SINGLETON">
    AccessTimeout  2 minutes
</Container>

<!--<Container id="JmsMdbContainer" ctype="MESSAGE">-->
    <!--ResourceAdapter JmsResourceAdapter-->
    <!--ActivationSpecClass org.apache.activemq.ra.ActiveMQActivationSpec-->
    <!--InstanceLimit 10-->
<!--</Container>-->

<!-- That should be also specified in the system.properties file of the target environment -->
<Resource id="jdbc/DB1" type="DataSource">
    JdbcDriver org.apache.derby.jdbc.ClientDriver
    JdbcUrl jdbc:derby://localhost:%derby.server.port%/derbydb;create=true
    UserName     cts
    Password     cts
</Resource>

<Resource id="jdbc/DB1Unmanaged" type="DataSource">
    JdbcDriver org.apache.derby.jdbc.ClientDriver
    JdbcUrl jdbc:derby://localhost:%derby.server.port%/derbydb;create=true
    UserName     cts
    Password     cts
    JtaManaged  false
</Resource>


<!--<Resource id="JmsResourceAdapter" type="ActiveMQResourceAdapter">-->
    <!--# Broker configuration-->
    <!--BrokerXmlConfig broker:(tcp://localhost:61616)?useJmx=false-->

    <!--# Broker address-->
    <!--ServerUrl vm://localhost?async=true-->

    <!--DataSource   CtsDataSourceUnmanaged-->
<!--</Resource>-->


<!--<Resource id="JmsConnectionFactory" type="javax.jms.ConnectionFactory">-->
    <!--ResourceAdapter JmsResourceAdapter-->
<!--</Resource>-->


<Resource id="MailSession" type="javax.mail.Session">
mail.smtp.class=org.apache.geronimo.mail.NullTransport
</Resource>

<Deployments dir="apps/" />

</openejb>
