0

ドミノ サーバーでサーブレットを作成しました。最初に呼び出したときはエラーは表示されませんが、これが表示された後は次のようになります。

java.sql.SQLException: 接続が存在しません。com.ibm.as400.access.JDError.throwSQLException(JDError.java:389) com.ibm.as400.access.AS400JDBCConnection.checkOpen(AS400JDBCConnection.java:394) com.ibm.as400.access.AS400JDBCConnection.prepareStatement (AS400JDBCConnection.java:1868) com.ibm.as400.access.AS400JDBCConnection.prepareStatement(AS400JDBCConnection.java:1703)

サーブレットを呼び出したい場合は、毎回ドミノ サーバーを再起動する必要があります。コードで接続を閉じないようにしましたが、うまくいきましたが、この解決策ではパフォーマンスの問題が発生する可能性があります。

他の解決策をいただければ幸いです

編集 :

Apache DBCP を使用した後、別のエラーが発生しました。

java.sql.SQLException: 接続が閉じられています。org.apache.commons.dbcp.PoolingDataSource$PoolGuardConnectionWrapper.checkOpen(P??oolingDataSource.java:175) で org.apache.commons.dbcp.PoolingDataSource$PoolGuardConnectionWrapper.prepareStat??ement(PoolingDataSource.java:301)で

接続を取得/プールする COODE :

パブリック クラス ConnexionAS400 {

public static ConnexionAS400 connexionAS4000= null;
private static Connection connAS400 = null;

public static ConnexionAS400 getInstance(){
    if(connexionAS4000 == null)
        connexionAS4000 = new ConnexionAS400();
    return connexionAS4000;
}

private ConnexionAS400(){
    String Url = "jdbc:as400://172.31.5.100";
    String Username = "DEVATIRD";
    String Password = "ATIRD";
    String Driver = "com.ibm.as400.access.AS400JDBCDriver";
    try
    {   
        Class.forName(Driver);
        ConnectionFactory connectionFactory = new DriverManagerConnectionFactory(Url,Username,Password);
        PoolableConnectionFactory poolableConnectionFactory = new PoolableConnectionFactory(connectionFactory, new GenericObjectPool(null), null, "SELECT 1", false, true);
        ObjectPool connectionPool = new GenericObjectPool(poolableConnectionFactory,GenericObjectPool.DEFAULT_MAX_ACTIVE,GenericObjectPool.WHEN_EXHAUSTED_GROW,GenericObjectPool.DEFAULT_MAX_WAIT,GenericObjectPool.DEFAULT_MAX_IDLE,false,true);
        PoolingDataSource dataSource = new PoolingDataSource(connectionPool);
        connAS400 = dataSource.getConnection();
    }
    catch (NoClassDefFoundError exno)
    {
        System.out.println("ERREUR: Impossible de charger la classe");
        exno.printStackTrace(); 
    }
    catch (Exception e)
    {
        System.out.println("ERREUR: Impossible de charger le driver JDBC AS400.");
        e.printStackTrace();
    }
}
public  Connection openConnectionAS400() {
    return connAS400;
}

public  void closeConnectionAS400() {
    try {
        connAS400.close();
    } catch (SQLException e) {
        System.out
        .println("ERREUR: Lors de la fermeture de la connection.");
    e.printStackTrace();
    }
}}

前もって感謝します。

4

1 に答える 1