Найти местоположение oracle_home из java

#java #oracle

#java #Oracle

Вопрос:

Какой был бы наилучший способ найти oracle home и tnsnames.ora из java? На самом деле я пытаюсь получить список записей tns и отобразить его в выпадающем списке программы.

Ответ №1:

Здесь нет какого-то автоматического поиска. Если вы хотите, чтобы драйвер Oracle JDBC использовал ваши имена tns, вам необходимо определить системное свойство (-D) oracle.net.tns_admin=<directory where tnsnames.ora is located> . Я рекомендую настроить его так, чтобы вы могли им пользоваться и ojdbc тоже будете им пользоваться (при необходимости)

Комментарии:

1. oracle.net.tns_admin Работает ли, если задано во время выполнения с помощью System.setProperty или требуется, чтобы параметр был установлен при запуске приложения?

2. Чтобы вы могли его использовать, вам просто нужно убедиться, что он настроен, прежде чем он вам понадобится. OJDBC, я полагаю, нуждается в нем в некотором static инициализаторе, и чтобы быть доступным для него, вы должны убедиться, что он настроен перед загрузкой классов ojdbc (но это сложно, поэтому безопаснее всего поместить его в командную строку — вам это нужно, если вы хотите использовать tnsnames для подключений oracle)

3. Прямо перед Class.forName() тогда недостаточно рано? Естественно, все становится еще сложнее, когда вводятся фреймворки для обработки драйверов и подключений.

Ответ №2:

tnsnames.ora находится в ORACLE_HOME/network/admin . Код будет:

 String oracleHome = System.getenv("ORACLE_HOME");
if(oracleHome != null){
     String tnsFilename = oracleHome   File.separatorChar   
                       "network"   File.separatorChar   
                       "admin"   File.separatorChar   
                       "tnsnames.ora";
}
  

Ответ №3:

Если вы ORACLE_HOME установили в качестве переменной envinroment, то вы можете использовать System.getenv("ORACLE_HOME"); для доступа к ней.

Смотрите javadoc.