This article documents a solution if subscribers are using an Oracle database and using JDBC_ping as the discovery protocol in a clustered environment. The issue is that the JGroup's default initialize_sql value is incompatible with Oracle. As a result, the JGROUPSPING table is not created in the database and the nodes do not connect with each other.
Resolution
The solution is to modify the jdbc_ping_config.xml with the following:
initialize_sql="CREATE TABLE JGROUPSPING (own_addr varchar(200) NOT NULL, cluster_name varchar(200) NOT NULL, ping_data raw(2000) DEFAULT NULL, PRIMARY KEY (own_addr, cluster_name))"
Here is a sample:
<jdbc_ping connection_driver="oracle.jdbc.OracleDriver" connection_password="userpassword" connection_url="jdbc:oracle:thin:@172.16.xx.xxx:1521:orcl" connection_username="username" initialize_sql="CREATE TABLE JGROUPSPING (own_addr varchar(200) NOT NULL, cluster_name varchar(200) NOT NULL, ping_data raw(2000) DEFAULT NULL, PRIMARY KEY (own_addr, cluster_name))"> </jdbc_ping>
Once the jdbc_ping_config.xml has been modified, start the application server. Look for the key words: Accepted view; this indicates that the nodes are connected.