Hi,
I have the following problem :
I execute this code to test "connection pool max-active" parameter :
public void testMultipleBroker() {
int nbBroker = 200;
PersistenceBroker b = null;
PBKey key = new PBKey("varbona"); //varbona is my jdc-alias
try {
for (int i = 0; i < nbBroker; i++) {
System.out.println("cnx n�" + i);
b = PersistenceBrokerFactory.createPersistenceBroker(key)
QueryByCriteria q = new
QueryByCriteria(org.udb.candisup.back.dto.domain.CiviliteDTO.class);
Collection c = b.getCollectionByQuery(q);
// I do not close the persistence broker !!
//b.close();
}
}
catch (SystemException ex) {
System.out.println(ex.getMessage());
}
}
After eight instanciation of PersistanceBroker (nbBroker=7), I always have this error :
java.sql.SQLException: Exception d'E/S: Socket closed
at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:134)
at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:179)
at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:333)
at oracle.jdbc.driver.OracleConnection.rollback(OracleConnection.java:1380)
at org.apache.ojb.broker.accesslayer.ConnectionManagerImpl.localRollback(Unknown
Source)
at org.apache.ojb.broker.core.PersistenceBrokerImpl.abortTransaction(Unknown Source)
[org.apache.ojb.broker.accesslayer.ConnectionManagerImpl] ERROR: Rollback on the
underlying connection failed
Exception d'E/S: Socket closed
at org.apache.ojb.broker.core.PersistenceBrokerImpl.close(Unknown Source)
at org.apache.ojb.broker.core.PersistenceBrokerImpl.finalize(Unknown Source)
at java.lang.ref.Finalizer.invokeFinalizeMethod(Native Method)
at java.lang.ref.Finalizer.runFinalizer(Finalizer.java:83)
at java.lang.ref.Finalizer.access$100(Finalizer.java:14)
at java.lang.ref.Finalizer$FinalizerThread.run(Finalizer.java:160)
java.sql.SQLException: Exception d'E/S: Socket closed
at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:134)
at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:179)
at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:333)
at oracle.jdbc.driver.OracleConnection.rollback(OracleConnection.java:1380)
at org.apache.ojb.broker.accesslayer.ConnectionManagerImpl.localRollback(Unknown
Source)
at org.apache.ojb.broker.core.PersistenceBrokerImpl.abortTransaction(Unknown Source)
at org.apache.ojb.broker.core.PersistenceBrokerImpl.close(Unknown Source)
at org.apache.ojb.broker.core.PersistenceBrokerImpl.finalize(Unknown Source)
at java.lang.ref.Finalizer.invokeFinalizeMethod(Native Method)
at java.lang.ref.Finalizer.runFinalizer(Finalizer.java:83)
at java.lang.ref.Finalizer.access$100(Finalizer.java:14)
at java.lang.ref.Finalizer$FinalizerThread.run(Finalizer.java:160)
[org.apache.ojb.broker.accesslayer.ConnectionManagerImpl] ERROR: Rollback on the
underlying connection failed
Exception d'E/S: Socket closed
Here is my connection descriptor
<jdbc-connection-descriptor
jcd-alias="varbona"
default-connection="false"
platform="Oracle9i"
jdbc-level="2.0"
driver="oracle.jdbc.driver.OracleDriver"
protocol="jdbc"
subprotocol="oracle"
dbalias="thin:@192.168.1.202:1525:TEST"
username="varbona"
password="opiweb"
eager-release="false"
batch-mode="false"
useAutoCommit="2"
ignoreAutoCommitExceptions="true"
>
<connection-pool
maxActive="100"
maxIdle="50"
whenExhaustedAction="2"
validationQuery="" />
<sequence-manager
className="org.apache.ojb.broker.util.sequence.SequenceManagerHighLowImpl">
<attribute attribute-name="grabSize" attribute-value="20"/>
<attribute attribute-name="autoNaming" attribute-value="true"/>
<attribute attribute-name="globalSequenceId" attribute-value="false"/>
<attribute attribute-name="globalSequenceStart" attribute-value="10000"/>
</sequence-manager>
</jdbc-connection-descriptor>