drno-reg
@drno-reg
см не кратко

Как правильно обратиться к JNDI подключению БД Oracle?

Здравствуйте.

Решил Java сервлеты переключить с индивидуальных JDBC подключений на именованое JNDI подключение, для этого в META-INF создал context.xml файл и в нем прописал коннекцию

<Context reloadable="true">
    <Resource name="jdbc/Oracle" auth="Container"
              type="javax.sql.DataSource"
              driverClassName="oracle.jdbc.driver.OracleDriver"
              url="jdbc:oracle:thin:@(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=localhost)(PORT=1521)))(CONNECT_DATA=(SERVICE_NAME=oracledb)))"
              username="dbuser"
              password="db123"
              maxActive="150"
              maxIdle="120"
              maxWait="-1"/>
</Context>


далее создал метод в классе

import java.sql.Connection;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import javax.annotation.Resource;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import javax.sql.DataSource;
public class ManagementSystem {

    public static Connection getConnection() throws SQLException, ClassNotFoundException, NamingException
    {
        Context ctx = new InitialContext();
        DataSource ds = (DataSource)ctx.lookup("java:/comp/env/jdbc/Oracle");
        Connection connection = ds.getConnection();
        System.out.println(connection);
        return connection;
    }

}


при обращении к методу получаю ошибку

Exception in thread "main" javax.naming.NoInitialContextException: Need to specify class name in environment or system property, or as an applet parameter, or in an application resource file: java.naming.factory.initial

Как решить эту проблему?
  • Вопрос задан
  • 613 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы