8

Java を使用して red5 アプリケーションを作成しており、データベースとのやり取りに c3p0 を使用しています。

私のMySQLサーバーで接続がタイムアウトした後、私のアプリケーションはautoreconnect = trueを設定するように提案して動作を停止したようです。

どうすればそうできますか?

これは、データソースを作成するために使用する関数です:

private ComboPooledDataSource _createDataSource() {
    Properties props = new Properties();
    // Looks for the file 'database.properties' in {TOMCAT_HOME}\webapps\{RED5_HOME}\WEB-INF\
    try {
        FileInputStream in = new FileInputStream(System.getProperty("red5.config_root") + "/database.properties");
        props.load(in);
        in.close();
    } catch (IOException ex) {
        log.error("message: {}", ex.getMessage());
        log.error("stack trace: " + ExceptionUtils.getFullStackTrace(ex));
        return null;
    }

    // It will load the driver String from properties
    String drivers = props.getProperty("jdbc.drivers");
    String url = props.getProperty("jdbc.url");
    String username = props.getProperty("jdbc.username");
    String password = props.getProperty("jdbc.password");

    ComboPooledDataSource cpds = new ComboPooledDataSource();
    try {
        cpds.setDriverClass(drivers);
    } catch (PropertyVetoException ex) {
        log.error("message: {}", ex.getMessage());
        log.error("stack trace: " + ExceptionUtils.getFullStackTrace(ex));
        return null;
    }

    cpds.setJdbcUrl(url);
    cpds.setUser(username);
    cpds.setPassword(password);
    cpds.setMaxStatements(180);

    return cpds;
}
4

2 に答える 2

6

c3p0.propertiesクラスパスのルートにある必要があるファイルを作成します。

# c3p0.properties
c3p0.testConnectionOnCheckout=true

詳細なドキュメントについては、これを参照してください。

この投稿も役立つかもしれません。

于 2010-08-18T11:28:36.030 に答える
2

プロパティ autoreconnect は C3p0 オブジェクトの一部ではありません C3P0 プールを使用するには、他のオプション ( testConnectionOnCheckoutなど) を構成し、ファクトリを使用することをお勧めします。

C3p0 に関するすべての情報とサンプルは、http: //www.mchange.com/projects/c3p0/index.html にあります。

外部プロパティ ファイルを使用するか、コードで追加することができます。たとえば、データソースを使用してカスタム オプションを追加してカスタム プール データソースを作成する方法 (C3p0 ドキュメント URL のその他のサンプル)。

// Your datasource fetched from the properties file
DataSource ds_unpooled = DataSources.unpooledDataSource("url", "user", "password");


// Custom properties to add to the Source
// See http://www.mchange.com/projects/c3p0/index.html#configuration_properties                           

Map overrides = new HashMap();
overrides.put("maxStatements", "200");         //Stringified property values work
overrides.put("maxPoolSize", new Integer(50)); //"boxed primitives" also work

// Your pooled datasource with all new properties
ds_pooled = DataSources.pooledDataSource( ds_unpooled, overrides ); 
于 2010-08-18T11:33:11.127 に答える