Hi Armin,
In fact, my problem is that I did not exhaust my pool (max-Active=100,
max-Idle=100).
After only 8 instanciations of a PersistenceBroker, I have the SocketClosed
exception.
(in my test, I intentionally comment the "p.close()" instruction to exhaut
my pool)
Logically an exception would occur after 101 instanciations of a
PersistenceBroker not after 8 (and this exception not expected to be a
SocketClosed Exception)
----- Original Message -----
From: "Armin Waibel" <[EMAIL PROTECTED]>
To: "OJB Users List" <[EMAIL PROTECTED]>
Sent: Wednesday, October 15, 2003 3:40 PM
Subject: Re: Multiple PersistenceBroker instances - Socket Close
> Hi,
>
> On Wed, 15 Oct 2003 15:29:39 +0200, Vincent ARBONA
> <[EMAIL PROTECTED]> wrote:
>
> > 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();
>
> if do not close the broker instance the associated connection
> (assosiated on getCollectionByQuery) wasn't closed too --> then
> your connection pool can exhaust. If you
> don't want to close the PB instance (for your special test case), then
> use PB-tx demarcation around the query. On PB.commitTransaction()
> the associated connection will be closed.
>
> regards,
> Armin
>
>
> > }
> > }
> > 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(Unknow
n
> > 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(Unknow
n
> > 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>
>
>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
>
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]