2016-03-15 11 views
0

После многих попыток кажется, что комбинация xa-datasource < -> драйвер postgres не поддерживает конфигурацию отказа при отсутствии порта по умолчанию (5432). Я предполагаю, что драйвер не реализует все методы, ожидаемые от xa.Конфигурирование xa-datasource (Wildfly) в режиме HA с помощью драйвера Postgresql JDBC

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

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

<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> 
+0

изменение Try connction-URL в 'JDBC: PostgreSQL: // server1: 5432/db_name, JDBC: PostgreSQL: // server2: 5432/db_name' –

+0

@ Federico-Sierra Спасибо, но это не работает или. jdbc: postgresql: // server1: 5555/db_name, jdbc: postgresql: // server2: 5555/db_name => org.postgresql.util.PSQLException: ОШИБКА: Нет такой базы данных: db_name, jdbc: postgresql: // server2: 5555/db_name – Marc

+0

Попробуйте использовать другой 'url-разделитель', например' | 'и проверить, нет ли места между URL-адресами –

ответ

0

Это может быть поздно но он может помочь кому-то, кто ищет конфигурацию xg-datasource postgres. Прежде всего, вам нужно установить драйвер postgre в модули Wildfly, а затем выполнить настройку. Вы можете установить его через командную строку с помощью подсистем или установить имя драйвера postgresql (enterprise) как «org.edb.Driver» для корпоративного драйвера. Поместите edb-jdbc17.jar в папку WILDFLY_HOME \ modules \ system \ layers \ 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>