Page tree

Linking to Other Databases

In order to link to tables in another database, you must first tell the application server about that database by adding a datasource descriptor file. Agiloft only supports external tables with single primary key field which must be of exact numeric type, like bigint or integ.

To link to another database, edit the configuration file in Agiloft/wildfly/standalone/configuration/agiloft.xml and add a custom data source to it. 

<datasource connectable="false" enabled="true" jndi-name="java:jboss/datasources/SWDictionaryDS" jta="true" pool-name="SWDictionaryDS" spy="false" use-ccm="true" use-java-context="true">
<connection-url>jdbc:mysql:///sw2_std?socketFactory=org.newsclub.net.mysql.AFUNIXDatabaseSocketFactoryCJ&sslMode=DISABLED&junixsocket.file=/opt/server/Agiloft/mysql/ewdbsocket&useUnicode=true&character
Encoding=UTF-8&useSSL=false&zeroDateTimeBehavior=convertToNull&autoDeserialize=true&autoReconnect=true&maxReconnects=5&autoReconnectForPools=true&jdbcCompliantTruncation=false&netTimeoutForStreamingResults
=1200&useLocalSessionState=true</connection-url>
<driver>mysql</driver>
<security>
   <security-domain>Sec_SWDictionaryDS</security-domain>
</security>
<datasource-class/>
<transaction-isolation>TRANSACTION_READ_COMMITTED</transaction-isolation>
<pool>
   <initial-pool-size>5</initial-pool-size>
   <min-pool-size>5</min-pool-size>
   <max-pool-size>500</max-pool-size>
   <prefill>false</prefill>
   <use-strict-min>false</use-strict-min>
   <flush-strategy>FailingConnectionOnly</flush-strategy>
</pool>
<timeout>
   <blocking-timeout-millis>7500</blocking-timeout-millis>
   <idle-timeout-minutes>5</idle-timeout-minutes>
   <xa-resource-timeout>0</xa-resource-timeout>
</timeout>
<statement>
   <track-statements>false</track-statements>
   <prepared-statement-cache-size>100</prepared-statement-cache-size>
</statement>
<validation>
   <valid-connection-checker class-name="org.jboss.jca.adapters.jdbc.extensions.mysql.MySQLValidConnectionChecker"/>
   <use-fast-fail>false</use-fast-fail>
   <exception-sorter class-name="org.jboss.jca.adapters.jdbc.extensions.mysql.MySQLExceptionSorter"/>
</validation>


JBoss

KBs on versions of Agiloft prior to release 2019_01 use JBoss instead of Wildfly. You can see examples of such datasource configurations in EW_HOME/jboss/server/sw/deploy/ew-ds.xml as well as JBoss AS Config DataSources. More detailed information is available in the Configuring JDBC DataSources document from JBoss AS documentation.

MSSQL Example:

<no-tx-datasource>
<jndi-name>DATABASE_NAME</jndi-name>
<min-pool-size>10</min-pool-size>
<max-pool-size>20</max-pool-size>
<blocking-timeout-millis>7500</blocking-timeout-millis>
<idle-timeout-minutes>5</idle-timeout-minutes>
<connection-url>jdbc:sqlserver://SQL_SERVER_HOSTNAME:1433;database=DATABASE_NAME;
SelectMethod=direct;lastupdatecount=true;responseBuffering=adaptive;
lockTimeout=900000;packetSize=512;applicationName=EW</connection-url>
<driver-class>com.microsoft.sqlserver.jdbc.SQLServerDriver</driver-class>
<user-name>USER_NAME</user-name>
<password>PASSWORD</password>
<type-mapping>MS SQLSERVER2000</type-mapping>
</no-tx-datasource>

To prevent the datasource file from being overwritten on update, give it a name matching one of the following patterns:

  • *ewcustom*-ds.xml
  • ew_datasource_*-ds.xml

Example

 ew_datasource_my_external_db_ds.xml or my_db_ewcustom-ds.xml.

Jboss AS picks up the changes to this file immediately, so it is advisable to stop the server process before making changes to this file and start again only after changes are complete.

CONTENTS