<?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/securityAPIDB" 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/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>
