<?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="Default CMP Container" ctype="CMP_ENTITY">
      CmpEngineFactory org.apache.openejb.core.cmp.jpa.JpaCmpEngineFactory
      Engine  derby
      ConnectorName  Default JDBC Database
  </Container>
  -->

  <!--
  <Container id="Default BMP Container" ctype="BMP_ENTITY"/>
  -->


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


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

  <!--
  <Container id="Default MDB Container" ctype="MESSAGE">
      ResourceAdapter Default JMS Resource Adapter
      ActivationSpecClass org.apache.activemq.ra.ActiveMQActivationSpec
      InstanceLimit 10
  </Container>
  -->

  <Connector id="Default JDBC Database">
    JdbcDriver org.apache.derby.jdbc.EmbeddedDriver
    JdbcUrl jdbc:derby:data/derbydb;create=true
    UserName cts
    Password cts
  </Connector>

  <Connector id="Default Unmanaged JDBC Database">
    JdbcDriver org.apache.derby.jdbc.EmbeddedDriver
    JdbcUrl jdbc:derby:data/derbydb;create=true
    UserName cts
    Password cts
  </Connector>

  <!--
  <Resource id="Default JMS Resource Adapter">
      # Broker configuration
      BrokerXmlConfig broker:(tcp://localhost:61616)

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

  <!--
  <Connector id="Default JMS Connection Factory">
      ResourceAdapter Default JMS Resource Adapter
  </Connector>
  -->

  <Resource id="Default Mail Session">
    mail.smtp.class=org.apache.geronimo.mail.NullTransport
  </Resource>

  <Deployments dir="apps/"/>

</openejb>
