0

私のWebアプリケーション(Java jsf icefaces -jboss)は、hibernateを使用してOracleに接続されています。正常に動作しますが、ユーザーが非アクティブな期間(数時間)がある場合、ユーザーがクエリを実行しようとすると、次のエラーが発生します:java.sql.SQLException:Io例外:ピアによる接続のリセット:ソケット書き込みエラー

このアプリケーションは3/4ユーザーによって使用されているため、開いている接続の数はごくわずかです。jbossサーバーの再起動の問題を解決できます。

以下に、アプリケーションで使用されるhibernate.cfg.xmlを示します。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC
        "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
        "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration> 
    <session-factory> 
        <!-- <property name="connection.datasource">portaleClientiOracleDS</property> -->       
        <property name="transaction.factory_class">org.hibernate.transaction.JDBCTransactionFactory</property>   
        <property name="current_session_context_class">thread</property>   
        <property name="hibernate.connection.driver_class">oracle.jdbc.driver.OracleDriver</property>
        <property name="hibernate.connection.password">Alfre$cost12</property>
        <property name="hibernate.connection.url">jdbc:oracle:thin:@172.16.216.109:1521:ALFHIST</property>
        <property name="hibernate.connection.username">ALFRESCOST</property>
        <!-- <property name="hibernate.default_catalog">ALFRESCOST</property>-->
        <!-- <property name="hibernate.default_schema">ALFRESCOST</property>-->
        <property name="hibernate.dialect">org.hibernate.dialect.Oracle10gDialect</property>
        <property name="show_sql">false</property> 
        <property name="use_outer_join">true</property>   
        <property name="cache.provider_class">org.hibernate.cache.HashtableCacheProvider</property>  

       <property name="c3p0.acquire_increment">1</property>
        <property name="c3p0.idle_test_period">100</property> <!-- seconds -->
        <property name="c3p0.max_size">100</property>
        <property name="c3p0.max_statements">0</property>
        <property name="c3p0.min_size">10</property>
        <property name="c3p0.timeout">100</property> 
        <property name="c3p0.preferredTestQuery">SELECT 1 FROM DUAL</property>
        <property name="c3p0.testConnectionOnCheckout">true</property>

        <mapping resource="it/pillar/accenture/portaleclienti/businesslayer/clienti/dao/hibernate/mappings/StoricoPillar.hbm.xml"/>    

    </session-factory>    
</hibernate-configuration>

c3p0の値を増やしようとしましたが、問題はそのままです。任意の提案をいただければ幸いです

ありがとう

4

1 に答える 1

1

おそらくc3p0を使用していません。ドキュメントには次のように記載されています。

hibernate.c3p0.* プロパティを設定すると、Hibernate は接続プールに org.hibernate.connection.C3P0ConnectionProvider を使用します。Proxool を使用する場合は、パッケージ化された hibernate.properties および Hibernate Web サイトで詳細を参照してください。

以下は、c3p0 の hibernate.properties ファイルの例です。

hibernate.connection.driver_class = org.postgresql.Driver
hibernate.connection.url = jdbc:postgresql://localhost/mydatabase
hibernate.connection.username = myuser
hibernate.connection.password = secret
hibernate.c3p0.min_size=5
hibernate.c3p0.max_size=20
hibernate.c3p0.timeout=1800
hibernate.c3p0.max_statements=50
hibernate.dialect = org.hibernate.dialect.PostgreSQLDialect

したがって、プロパティは ではなく である必要がhibernate.c3p0.xxxありc3p0.xxxます。

于 2012-06-21T10:09:51.393 に答える