Подключение к базе данных с использованием JNDI

Чтобы подключиться к БД используя JNDI необходимо:
  • Осуществить вход на https://jelastic.com выбрав своего хостинг-провайдера
  • Создать окружение с базой данных
  • Изменить некоторые файлы конфигурации в папке web-app
  • Реализовать подключение в java-классе
Теперь более детально:
  1. Создаём окружение с базой данных (например, MySQL):
  2. Создаём нового пользователя для базы данных:
  3. Как создавать пользователя- - жмём здесь

    Название базы данных: jelasticDb

    Имя пользователя: jelastic

    Пароль: jelastic

  4. Вносим изменения в конфигурационные файлы:
  5. context.xml:

     
    <Context antiJARLocking="true" path="/JNDI">
        <Resource name="jdbc/jelasticDb" auth="Container" type="javax.sql.DataSource"
                   maxActive="100" maxIdle="30" maxWait="10000"
                   username="jelastic" password="jelastic" driverClassName="com.mysql.jdbc.Driver"
                   url="jdbc:mysql://mysql-jndi-example.{hoster_domain}/jelasticDb"/>
    </Context>
    

    web.xml:

     
    <resource-ref>
     <description>MySQL Datasource example</description>
     <res-ref-name>jdbc/jelasticDb</res-ref-name>
     <res-type>javax.sql.DataSource</res-type>
     <res-auth>Container</res-auth>
    </resource-ref>
    

    4. Реализуем подключение в java-классе
     
    public class MyConnection {
    
        private DataSource dataSource;
    
        public MyConnection() {
            try {
    
                InitialContext context = new InitialContext();
                dataSource = (DataSource) context.lookup("java:comp/env/jdbc/jelasticDb");
    
            } catch (NamingException ex) {
                Logger.getLogger(MyConnection.class.getName()).log(Level.SEVERE, null, ex);
            }
        }
    
        public Connection getConnection() {
            Connection conn = null;
            try {
                conn = dataSource.getConnection();
            } catch (SQLException ex) {
                Logger.getLogger(MyConnection.class.getName()).log(Level.SEVERE, null, ex);
            }
            return conn;
        }
    }