## 3.3.2 JNDI DataSources

#### Referring to a JNDI DataSource

Since many Java EE containers typically supply `DataSource` instances via the Java Naming and Directory Interface (JNDI). Sometimes you are required to look-up a `DataSource` via JNDI.

Grails supports the definition of JNDI data sources as follows:

    dataSource {
        jndiName = "java:comp/env/myDataSource"
    }

The format on the JNDI name may vary from container to container, but the way you define the `DataSource` remains the same.

#### Configuring a Development time JNDI resource

The way in which you configure JNDI data sources at development time is plugin dependent. Using the Tomcat plugin you can define JNDI resources using the `grails.naming.entries` setting in `grails-app/conf/Config.groovy`:

    grails.naming.entries = [
        "bean/MyBeanFactory": [
            auth: "Container",
            type: "com.mycompany.MyBean",
            factory: "org.apache.naming.factory.BeanFactory",
            bar: "23"
        ],
        "jdbc/EmployeeDB": [
            type: "javax.sql.DataSource", //required
            auth: "Container", // optional
            description: "Data source for Foo", //optional
            driverClassName: "org.hsql.jdbcDriver",
            url: "jdbc:HypersonicSQL:database",
            username: "dbusername",
            password: "dbpassword",
            maxActive: "8",
            maxIdle: "4"
        ],
        "mail/session": [
            type: "javax.mail.Session,
            auth: "Container",
            "mail.smtp.host": "localhost"
        ]
    ]