Настройка источника данных xa (Wildfly) в режиме HA с драйвером JDBC Postgresql

После многих попыток кажется, что драйвер xg-datasource <-> postgres не поддерживает конфигурацию отработки отказа с портом не по умолчанию (5432). Я предполагаю, что драйвер не реализует все методы, ожидаемые XA.

Я был бы рад, если бы кто-нибудь показал мне, что я ошибаюсь по этому поводу...

Этот пример работает, но используется порт по умолчанию:

<xa-datasource jndi-name="java:/Foo" pool-name="Foo" enabled="true" use-ccm="true" statistics-enabled="true">
    <xa-datasource-property name="url">
    jdbc:postgresql://server1,server2/db_name
    </xa-datasource-property>
    <xa-datasource-property name="ApplicationName">
    MyApp
    </xa-datasource-property>
    <xa-datasource-class>org.postgresql.xa.PGXADataSource</xa-datasource-class>
    <driver>postgresql-jdbc4</driver>
    <url-delimiter>,</url-delimiter>
    <xa-pool>
    <min-pool-size>6</min-pool-size>
    <max-pool-size>40</max-pool-size>
    <prefill>true</prefill>
    <is-same-rm-override>false</is-same-rm-override>
    <interleaving>false</interleaving>
    <pad-xid>false</pad-xid>
    <wrap-xa-resource>false</wrap-xa-resource>
    </xa-pool>
    <security>
    <user-name>foo</user-name>
    <password>blah</password>
    </security>
    <validation>
    <validate-on-match>false</validate-on-match>
    <background-validation>false</background-validation>
    </validation>
    <timeout>
    <blocking-timeout-millis>3000</blocking-timeout-millis>
    <idle-timeout-minutes>60</idle-timeout-minutes>
    </timeout>
    <statement>
    <share-prepared-statements>false</share-prepared-statements>
    </statement>
</xa-datasource>

1 ответ

Для базы данных Oracle вы можете использовать конфигурацию ниже.

jdbc:oracle:thin:@(description=(connect_timeout=5)(address_list=(load_balance=on)(failover=on) (address=(protocol=tcp)(host= server1)(port=1521)) (address=(protocol=tcp)(host= server2)(port=1521)) )(connect_data=(service_name=xyzabc)))

Это может быть поздний ответ, но он может помочь кому-то, кто ищет конфигурацию postgres xa-datasource. Прежде всего вам необходимо установить драйвер Postgre в модулях Wildfly, а затем выполнить настройку. Вы можете установить его через командную строку, используя подсистемы, или установить имя драйвера postgresql (enterprise) как "org.edb.Driver" для драйвера предприятия. Поместите файл edb-jdbc17.jar в каталог WILDFLY_HOME\modules\system\layer \base\org\edb\main с модулем module.xml.

Некоторые из драйверов не имеют метода getURL(), реализованного в их классах источника данных. Таким образом, мы должны указать конфигурацию источника данных для них по-другому.

В Postgres нет метода getURL. Итак, мы укажем такие свойства в нашем файле stanalone.xml/domain.xml.

<xa-datasource-property name="ServerName">DatabaseHostName</xa-datasource-property>
<xa-datasource-property name="PortNumber">DatabasePortName</xa-datasource-property>
<xa-datasource-property name="DatabaseName">DatabaseName</xa-datasource-property>
<xa-datasource-class>com.edb.xa.PGXADataSource</xa-datasource-class>
<driver>postgresql</driver>
 <xa-pool>
                            <min-pool-size>5</min-pool-size>
                            <initial-pool-size>5</initial-pool-size>
                            <max-pool-size>30</max-pool-size>
                            <use-strict-min>true</use-strict-min>
                            <is-same-rm-override>false</is-same-rm-override>
                            <no-tx-separate-pools>true</no-tx-separate-pools>
                        </xa-pool>
<security>
     <user-name>database.username</user-name>
     <password>database.password</password>
</security> 
<validation>
        <valid-connection-checker class-name="org.jboss.jca.adapters.jdbc.extensions.postgres.PostgreSQLValidConnectionChecker"/>
        <background-validation>true</background-validation>
        <exception-sorter class-name="org.jboss.jca.adapters.jdbc.extensions.postgres.PostgreSQLExceptionSorter"/>
 </validation>
Другие вопросы по тегам