#java #xml #database #weblogic #datasource
#java #xml #База данных #weblogic #источник данных
Вопрос:
Есть ли способ добавить источник данных с помощью XML-файла в weblogic вместо добавления его вручную через консоль. Что-то вроде этого:
<Resource name="DS_WFMT_DATA" auth="Container"
type="javax.sql.DataSource" driverClassName="oracle.jdbc.OracleDriver"
url="jdbc:oracle:thin:@10.81.34.8:1526:wfmtswvu"
username="wfmt_data" password="sa1dview"
maxActive="150" maxIdle="20" maxWait="10000"
removeAbandoned="true" removeAbandonedTimeout="300" logAbandoned="true" />
<Resource name="DS_DIRECTSTAFFWARE" auth="Container"
type="javax.sql.DataSource" driverClassName="oracle.jdbc.OracleDriver"
url="jdbc:oracle:thin:@10.81.34.8:1526:wfmtswvu"
username="swpro" password="staffpro1"
maxActive="150" maxIdle="20" maxWait="10000" logAbandoned="true"/>
<Resource name="DS_NIMS" auth="Container"
type="javax.sql.DataSource" driverClassName="oracle.jdbc.OracleDriver"
url="jdbc:oracle:thin:@10.75.105.167:1521:nimsc"
username="nims" password="nims123"
maxActive="20" maxIdle="10" maxWait="10000"
removeAbandoned="true" removeAbandonedTimeout="120" logAbandoned="true"/>
Я знаю, что когда я добавляю источник данных, в соответствующем домене создается XML-файл в path domains base_domain config jdbc, но он содержит зашифрованный пароль.
Поэтому, когда я попытался добавить новый источник данных, используя XML-файл, созданный при добавлении источника данных вручную, это не удалось добавить. Любая помощь будет оценена.
Ответ №1:
Создайте новый файл конфигурации источника данных в папке domains base_domain config jdbc с уникальным именем файла в следующем формате TESTDB-1234-jdbc.xml . Обычно MYDS — это имя источника данных.
Откройте TESTDB-1234-jdbc.xml файл и отредактируйте, как показано ниже. (Не забудьте изменить приведенные ниже значения в соответствии с вашими настройками)
<?xml version='1.0' encoding='UTF-8'?>
<jdbc-data-source xmlns="http://xmlns.oracle.com/weblogic/jdbc-data-source" xmlns:sec="http://xmlns.oracle.com/weblogic/security" xmlns:wls="http://xmlns.oracle.com/weblogic/security/wls" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.oracle.com/weblogic/jdbc-data-source http://xmlns.oracle.com/weblogic/jdbc-data-source/1.2/jdbc-data-source.xsd">
<name>TESTDB</name>
<jdbc-driver-params>
<url>jdbc:oracle:thin:@host:port:db</url>
<driver-name>oracle.jdbc.OracleDriver</driver-name>
<properties>
<property>
<name>user</name>
<value>user</value>
</property>
</properties>
<password-encrypted></password-encrypted>
</jdbc-driver-params>
<jdbc-connection-pool-params>
<max-capacity>40</max-capacity>
<connection-creation-retry-frequency-seconds>120</connection-creation-retry-frequency-seconds>
<test-connections-on-reserve>true</test-connections-on-reserve>
<test-table-name>SQL SELECT 1 FROM DUAL</test-table-name>
<init-sql>SQL SELECT 1 FROM DUAL</init-sql>
</jdbc-connection-pool-params>
<jdbc-data-source-params>
<jndi-name>TESTDB</jndi-name>
<global-transactions-protocol>OnePhaseCommit</global-transactions-protocol>
</jdbc-data-source-params>
</jdbc-data-source>
В созданном файле отсутствует зашифрованный пароль. Вы можете использовать weblogic.security.Утилита шифрования для шифрования пароля вашей базы данных, как показано ниже. Сначала вам нужно убедиться, что среда Weblogic настроена, перейдя в папку domains base_domain bin и выполнив следующую команду
source ./setDomainEnv.sh
Теперь вы можете перейти в папку domains base_domain и запустить weblogic.security.Утилита шифрования при указании пароля базы данных следующим образом
java weblogic.security.Encrypt dbpassword
Вы должны находиться в папке base_domain. Если вы запустите его в любой другой папке, вы получите исключение
Не удалось инициализировать службу шифрования, убедитесь, что вы находитесь в каталоге домена или указали правильное значение для -Dweblogic.RootDirectory
Если вы не хотите, чтобы пароль базы данных отображался в истории вашей ОС, не указывайте его при выполнении команды, и вам будет предложено ввести пароль. Сгенерированный пароль будет в следующем формате
{AES}H8B3Lp73h/9XghMXUmtq5f3CRSpqAzQ0gwoOm5NHYXg=
Скопируйте это значение в зашифрованный паролем тег в вашем TESTDB-123-jdbc.xml конфигурационный файл, поэтому тег теперь выглядит следующим образом
<password-encrypted>{AES}H8B3Lp73h/9XghMXUmtq5f3CRSpqAzQ0gwoOm5NHYXg=</password-encrypted>
Вы успешно создали источник данных с использованием xml, но теперь вам нужно связать его с экземпляром Weblogic. Перейдите в папку domains base_domain config и отредактируйте config.xml досье. Добавьте недавно настроенный системный ресурс jdbc непосредственно перед закрытием тега домена. Вот фрагмент
<jdbc-system-resource>
<name>TESTDB</name>
<target>AdminServer</target>
<descriptor-file-name>jdbc/TESTDB-1234-jdbc.xml</descriptor-file-name>
</jdbc-system-resource>
Не забывайте использовать значения, которые применяются к вашему серверу приложений. После завершения вы успешно связали источник данных с экземпляром Weblogic, однако источник данных еще не активен. Перезапустите экземпляр weblogic, чтобы источник данных был активным.
После перезапуска вы можете проверить, присутствует ли и активен ли пул соединений, используя утилиту администрирования Weblogic, настроив среду Weblogic, как и раньше, а затем выполнив команду ниже
java weblogic.Admin -username weblogic -password password -url t3://localhost:port EXISTS_POOL TESTDB
Если пул соединений присутствует и активен, вы получите
Уже существует пул с именем TESTDB
В противном случае вы получите приведенное ниже исключение
Pool TESTDB не существует.
Вы также можете выполнить проверку подключения к источнику данных, настроив среду Weblogic, как и раньше, а затем выполнив приведенную ниже команду
java weblogic.Admin -username weblogic -password password -url t3://localhost:port TEST_POOL TESTDB
Если соединение в порядке, вы получите
Проверка соединения JDBC прошла успешно для пула соединений «TESTDB».
Помните, что только потому, что вы не можете успешно протестировать соединение, это не означает, что источник данных не был добавлен в Weblogic. Возможно, база данных не запущена, поэтому вам может потребоваться устранение неполадок по мере необходимости. Также обратите внимание, что вы могли бы использовать утилиту Weblogic Admin напрямую, а также для создания источника данных. При использовании утилиты Weblogic Admin, как указано выше, пароль weblogic будет виден в вашей истории. Вот как вы создаете источник данных из XML-файла. Однако гораздо проще просто использовать консоль Weblogic.
Комментарии:
1. Эй, спасибо, да, вы правы, гораздо проще создать источник данных через консоль. Еще один вопрос: допустим, я создаю источник данных, и создается соответствующий файл jdbc. Если я передам эти файлы кому-то другому, чтобы ему не нужно было добавлять источники данных вручную. Это подойдет? Также вы можете проголосовать за мою очередь, если хотите.
2. Лучшим подходом является использование сценария WLST для создания и привязки вашего источника данных к вашему домену. Ручное обновление файлов конфигурации домена не является рекомендуемым способом и немного рискованно.
3. Да, вы действительно можете передать сгенерированный файл кому-то другому. Им нужно будет заменить зашифрованное паролем значение на то, которое они генерируют в своем экземпляре Weblogic. Им также необходимо будет связать свой недавно скопированный и обновленный файл источника данных со своим экземпляром Weblogic в соответствии с вышеуказанными шагами. @EmmanuelCollin определенно прав, делать это с помощью had немного рискованно, и использование сценария WLST — еще один хороший способ сделать это.