Title:      Apache TomEE configuration
Notice:    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.

###Configuring Resources:
    
*    Drivers are dropped into tomeeDir/lib
*    Resources are configured in tomeeDir/conf/tomee.xml.    
*    The configurations take a very simple (XML+Property-file) syntax.
*    Tag names match annotation names

For example,

    @Resource DataSource moviesDatabase 

is injected with the following resource:


    <Resource id="moviesDatabase" type="DataSource">    
    JdbcDriver org.hsqldb.jdbcDriver    
    JdbcUrl jdbc:mysql:localhost:3306/moviesdb    
    UserName sa    
    Password secret    
    JtaManaged true    
    </Resource>

For more on how to configure, read through [configuring-datasources](/configuring-datasources.html), [containers-and-resources](containers-and-resources.html) docs.