私はこのようなWSO2データソースを経由して接続していますように、Oracleデータベースを使用するカスタムWSO2 ESBメディエーターの小さなセットがあります。私は、接続を使用した後oracleでwso2接続プールを使用して非アクティブなセッションを回避する方法はありますか。
\t private void Connect(boolean isRetry) throws SQLException { \t \t
\t DataSource ds = null;
\t
\t \t try {
\t \t \t Hashtable environment = new Hashtable();
\t environment.put("java.naming.factory.initial", "org.wso2.carbon.tomcat.jndi.CarbonJavaURLContextFactory");
\t Context initContext = new InitialContext(environment);
\t ds = (DataSource)initContext.lookup("jndi/kernel");
\t \t } catch (NamingException e) {
\t \t \t throw new SQLException("Connection pool exception", e);
\t \t }
\t
\t \t // Nawiazanie polaczenia
\t this.connection = ds.getConnection();
\t \t this.connection.setAutoCommit(false);
\t }
をこのようにそれを閉じる:
\t public void Close() throws SQLException {
\t \t try {
\t \t \t if (this.connection != null) {
\t \t \t \t this.connection.close();
\t \t \t \t this.connection = null;
\t \t \t }
\t \t } catch (SQLException e) {
\t \t \t System.out.println(" @@ Failed to close the connection!");
\t \t \t e.printStackTrace();
\t \t \t throw e;
\t \t } \t
\t }
すべてのカスタムメディエータは、最後の最後のスコープのbeginメソッドとCloseメソッドで上記のConnectメソッドを使用しています。
は、(メッセージ・プロセッサによって実行される)は、単一のシーケンスで呼び出され、少なくとも2つのカスタムメディエーターがあり、時には5
問題は、キューを通過するメッセージが多い場合、数百があることですデータベース(オラクル)上の非アクティブなセッションの数。 Connectメソッドが非アクティブな接続を取得して使用しようとしないように見えますが、これは接続プールを持つ全体のポイントだと思っていました。
すべてのヘルプははるかに高く評価されます。..
おそらくInitialContextを使用して私の問題です、私はそれを試してみません:) – poison64