この記事では、加入者がOracleデータベースを使用しており、クラスタ化された環境で発見プロトコルとしてJDBC_pingを使用している場合の解決策について説明します。 問題は、JGroupのデフォルトの initialize_sql 値がOracleと互換性がないことです。 その結果、 JGROUPSPING テーブルがデータベース に作成されず、ノード同士が接続されない。
決議
解決方法は、 のjdbc_ping_config.xml を以下のように修正します。
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 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>
jdbc_ping_config.xml を修正したら、アプリケーションサーバを起動します。 キーワードを探します。 Accepted view; これはノードが接続されていることを示します。