0 Replies Latest reply on Sep 25, 2019 5:25 AM by sbaham

    Multiple DataSources pointing to same Database

    sbaham

      Hi all,

       

      I understand XA datasources should be used when attempting to commit to separate DataSources pointing at separate databases in the same transaction.

      Does this also hold for attempting to commit to separate DataSources pointing to the same database?

      In my application I have defined a separate DataSource for each schema in the database, but they all read/write on the same DB.

       

      e.g. setting <property name="com.arjuna.ats.arjuna.allowMultipleLastResources" value="true"/> and defining my DataSources as below works; commits, and rollbacks seem to function as expected, but is it safe?

      Is there anywhere I could read more about this specific use case?

       

      <datasource jndi-name="java:/DSONE" pool-name="DSONE" enabled="true">

          <connection-url>jdbc:postgresql://dbserver:5432/myApp</connection-url>

          <connection-property name="databaseName">

              myApp

          </connection-property>

          <driver>pgjdbc</driver>

          <pool>

              <max-pool-size>25</max-pool-size>

              <prefill>true</prefill>

          </pool>

          <security>

              <user-name>dsoneuser</user-name>

              <password>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>

          <statement>

              <prepared-statement-cache-size>25</prepared-statement-cache-size>

              <share-prepared-statements>true</share-prepared-statements>

          </statement>

      </datasource>

      <datasource jndi-name="java:/DSTWO" pool-name="DSTWO" enabled="true">

          <connection-url>jdbc:postgresql://dbserver:5432/myApp</connection-url>

          <connection-property name="databaseName">

              myApp

          </connection-property>

          <driver>pgjdbc</driver>

          <pool>

              <max-pool-size>25</max-pool-size>

              <prefill>true</prefill>

          </pool>

          <security>

              <user-name>dstwouser</user-name>

              <password>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>

          <statement>

              <prepared-statement-cache-size>25</prepared-statement-cache-size>

              <share-prepared-statements>true</share-prepared-statements>

          </statement>

      </datasource>

       

      Thanks