Добавление источника данных в weblogic 12c

#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 — еще один хороший способ сделать это.