-1

再生可能なデータソースを取得できません (コードは以下に添付されています)。

    PoolDataSource  pds = PoolDataSourceFactory.getPoolDataSource();
                                 pds.setConnectionFactoryClassName("oracle.jdbc.replay.OracleDataSourceImpl");

                                 System.out.println("connection factory set");

                                 String URL = "jdbc:oracle:thin:@(DESCRIPTION = (TRANSPORT_CONNECT_TIMEOUT=3) (RETRY_COUNT=20)(FAILOVER=ON) " +
                                  " (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521)) (CONNECT_DATA = " +
                                  " (SERVER = DEDICATED) (SERVICE_NAME=orcl)))";
                                 System.out.println("Using URL\n" + URL);
                                 pds.setURL(URL);
                                 pds.setUser("system");
                                 pds.setPassword("oracle");

                                 pds.setInitialPoolSize(10);
                                 pds.setMinPoolSize(10);
                                 pds.setMaxPoolSize(20);
                                 pds.setConnectionWaitTimeout(10);
                                 // RAC Features
                                 pds.setConnectionPoolName("Application Continuity Pool");
                                 pds.setFastConnectionFailoverEnabled(true);

                                 System.out.println("pool configured, trying to get a connection");

                                 Connection conn = null;

                                 try{
                                           conn = pds.getConnection();
                                 }catch(Exception e){
                                           e.printStackTrace();
                                 }

                                 if (conn == null || !((ValidConnection) conn).isValid())  {

                                   System.out.println("connection is not valid");
                                   throw new Exception ("invalid connection obtained from the pool");
                                 }

                                 if ( conn instanceof oracle.jdbc.replay.ReplayableConnection ) {
                                   System.out.println("got a replay data source");
                                 } else {
                                   System.out.println("this is not a replay data source. Why not?");
                                 }

以下は、上記のコードから取得したシステム プリントです。これは、接続インスタンスが再生可能なタイプではないことを示しています。

接続ファクトリ セット URL jdbc:oracle:thin:@(DESCRIPTION = (TRANSPORT_CONNECT_TIMEOUT=3) (RETRY_COUNT=20)(FAILOVER=ON) (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521)) ( CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = orcl))) プールが構成 されています。接続を取得しようとしていますが、これはリプレイ データ ソースではありません。なぜだめですか?

以下のサイトからコードを入手し、少し修正してスレッドを追加し、AC をシミュレートしました。しかし、再生可能なデータソースを取得できません。

https://martincarstenbach.wordpress.com/2013/12/13/playing-with-application-continuity-in-rac-12c/

4

1 に答える 1