You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@ibatis.apache.org by "Nicola Amoruso (JIRA)" <ib...@incubator.apache.org> on 2007/06/14 17:50:26 UTC

[jira] Created: (IBATIS-438) SqlMapClient don't release connection in a clustered ejb based application

SqlMapClient don't release connection in a clustered ejb based application
--------------------------------------------------------------------------

                 Key: IBATIS-438
                 URL: https://issues.apache.org/jira/browse/IBATIS-438
             Project: iBatis for Java
          Issue Type: Bug
    Affects Versions: 2.3.0
         Environment: BEA Weblogic Server 9.2.1 Clustered, Oracle 9i, EJB 2.1, the trasaction manager type is JDBC with a JNDI Datasource type.
            Reporter: Nicola Amoruso


I'm using JDBC transaction manager with very basic configuration. I do many
database transactions as  update and  insert
In every business method i call startTransaction() on SqlMapClient defined as private as instance variable into my ejb.
At the end of my method i call commitTransaction()  if the transaction end right and i call always endTransaction() in a finally block as specified in IBATIS tutorial.

This architecture work fine in and environment without clustering, but in this last model i have a abnormal consuming of connections of weblogic connection pool with the following exception:

 com.ibatis.common.jdbc.exception.NestedSQLException:   
--- The error occurred in file: query.xml.  
--- The error occurred while executing mapped statement.  
--- Check the query.update.  
--- Check the statement or the result map.  
--- Cause: weblogic.rmi.extensions.RemoteRuntimeException: Unexpected Exception
 at com.ibatis.sqlmap.engine.mapping.statement.GeneralStatement.executeUpdate(GeneralStatement.java:94)
 at com.ibatis.sqlmap.engine.impl.SqlMapExecutorDelegate.update(SqlMapExecutorDelegate.java:505)
 at com.ibatis.sqlmap.engine.impl.SqlMapSessionImpl.update(SqlMapSessionImpl.java:90)
 at com.ibatis.sqlmap.engine.impl.SqlMapClientImpl.update(SqlMapClientImpl.java:67)
 at it.mypkg.ejb.Business.unlockListaPersone(CqscPFBusiness.java:279)
 at it.mypkg.ejb.Business_17zvgu_EOImpl.businessMethod(Business_17zvgu_EOImpl.java:208)
 at it.mypkg.ejb.Business_17zvgu_EOImpl_WLSkel.invoke(Unknown Source)
 at weblogic.rmi.internal.BasicServerRef.invoke(BasicServerRef.java:518)
 at weblogic.rmi.cluster.ClusterableServerRef.invoke(ClusterableServerRef.java:224)
 at weblogic.rmi.internal.BasicServerRef$1.run(BasicServerRef.java:408)
 at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:363)
 at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:147)
 at weblogic.rmi.internal.BasicServerRef.handleRequest(BasicServerRef.java:404)
 at weblogic.rmi.internal.BasicServerRef.access$300(BasicServerRef.java:57)
 at weblogic.rmi.internal.BasicServerRef$BasicExecuteRequest.run(BasicServerRef.java:935)
 at weblogic.work.ExecuteThread.execute(ExecuteThread.java:209)
 at weblogic.work.ExecuteThread.run(ExecuteThread.java:181)
Caused by: weblogic.rmi.extensions.RemoteRuntimeException: Unexpected Exception
 at weblogic.jdbc.common.internal.RmiDataSource_920_WLStub.getConnection(Unknown Source)
 at com.ibatis.sqlmap.engine.transaction.jdbc.JdbcTransaction.init(JdbcTransaction.java:48)
 at com.ibatis.sqlmap.engine.transaction.jdbc.JdbcTransaction.getConnection(JdbcTransaction.java:89)
 at com.ibatis.sqlmap.engine.mapping.statement.GeneralStatement.executeUpdate(GeneralStatement.java:78)
 ... 16 more
Caused by: java.rmi.UnmarshalException: cannot unmarshaling return; nested exception is: 
 java.io.NotSerializableException: weblogic.jdbc.common.internal.ConnectionEnv
 at weblogic.rmi.internal.ServerRequest.unmarshalReturn(ServerRequest.java:105)
 at weblogic.rmi.cluster.ClusterableRemoteRef.invoke(ClusterableRemoteRef.java:338)
 at weblogic.rmi.cluster.ClusterableRemoteRef.invoke(ClusterableRemoteRef.java:252)
 ... 20 more
Caused by: java.io.NotSerializableException: weblogic.jdbc.common.internal.ConnectionEnv
 at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1075)
 at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1369)
 at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1341)
 at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1284)
 at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1073)
 at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:291)
 at weblogic.rmi.extensions.server.CBVOutputStream.writeObject(CBVOutputStream.java:84)
 at weblogic.rmi.internal.ServerRequest.unmarshalReturn(ServerRequest.java:97)
 ... 22 more

I fix the problem adding the following code after every endTransaction() :
 sqlMapClient.getDatasource().getConnection().close().

Thanks in advance.

Nicola


-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Closed: (IBATIS-438) SqlMapClient don't release connection in a clustered ejb based application

Posted by "Clinton Begin (JIRA)" <ib...@incubator.apache.org>.
     [ https://issues.apache.org/jira/browse/IBATIS-438?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Clinton Begin closed IBATIS-438.
--------------------------------

    Resolution: Won't Fix

> SqlMapClient don't release connection in a clustered ejb based application
> --------------------------------------------------------------------------
>
>                 Key: IBATIS-438
>                 URL: https://issues.apache.org/jira/browse/IBATIS-438
>             Project: iBatis for Java
>          Issue Type: Bug
>    Affects Versions: 2.3.0
>         Environment: BEA Weblogic Server 9.2.1 Clustered, Oracle 9i, EJB 2.1, the trasaction manager type is JDBC with a JNDI Datasource type.
>            Reporter: Nicola Amoruso
>
> I'm using JDBC transaction manager with very basic configuration. I do many
> database transactions as  update and  insert
> In every business method i call startTransaction() on SqlMapClient defined as private as instance variable into my ejb.
> At the end of my method i call commitTransaction()  if the transaction end right and i call always endTransaction() in a finally block as specified in IBATIS tutorial.
> This architecture work fine in and environment without clustering, but in this last model i have a abnormal consuming of connections of weblogic connection pool with the following exception:
>  com.ibatis.common.jdbc.exception.NestedSQLException:   
> --- The error occurred in file: query.xml.  
> --- The error occurred while executing mapped statement.  
> --- Check the query.update.  
> --- Check the statement or the result map.  
> --- Cause: weblogic.rmi.extensions.RemoteRuntimeException: Unexpected Exception
>  at com.ibatis.sqlmap.engine.mapping.statement.GeneralStatement.executeUpdate(GeneralStatement.java:94)
>  at com.ibatis.sqlmap.engine.impl.SqlMapExecutorDelegate.update(SqlMapExecutorDelegate.java:505)
>  at com.ibatis.sqlmap.engine.impl.SqlMapSessionImpl.update(SqlMapSessionImpl.java:90)
>  at com.ibatis.sqlmap.engine.impl.SqlMapClientImpl.update(SqlMapClientImpl.java:67)
>  at it.mypkg.ejb.Business.unlockListaPersone(CqscPFBusiness.java:279)
>  at it.mypkg.ejb.Business_17zvgu_EOImpl.businessMethod(Business_17zvgu_EOImpl.java:208)
>  at it.mypkg.ejb.Business_17zvgu_EOImpl_WLSkel.invoke(Unknown Source)
>  at weblogic.rmi.internal.BasicServerRef.invoke(BasicServerRef.java:518)
>  at weblogic.rmi.cluster.ClusterableServerRef.invoke(ClusterableServerRef.java:224)
>  at weblogic.rmi.internal.BasicServerRef$1.run(BasicServerRef.java:408)
>  at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:363)
>  at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:147)
>  at weblogic.rmi.internal.BasicServerRef.handleRequest(BasicServerRef.java:404)
>  at weblogic.rmi.internal.BasicServerRef.access$300(BasicServerRef.java:57)
>  at weblogic.rmi.internal.BasicServerRef$BasicExecuteRequest.run(BasicServerRef.java:935)
>  at weblogic.work.ExecuteThread.execute(ExecuteThread.java:209)
>  at weblogic.work.ExecuteThread.run(ExecuteThread.java:181)
> Caused by: weblogic.rmi.extensions.RemoteRuntimeException: Unexpected Exception
>  at weblogic.jdbc.common.internal.RmiDataSource_920_WLStub.getConnection(Unknown Source)
>  at com.ibatis.sqlmap.engine.transaction.jdbc.JdbcTransaction.init(JdbcTransaction.java:48)
>  at com.ibatis.sqlmap.engine.transaction.jdbc.JdbcTransaction.getConnection(JdbcTransaction.java:89)
>  at com.ibatis.sqlmap.engine.mapping.statement.GeneralStatement.executeUpdate(GeneralStatement.java:78)
>  ... 16 more
> Caused by: java.rmi.UnmarshalException: cannot unmarshaling return; nested exception is: 
>  java.io.NotSerializableException: weblogic.jdbc.common.internal.ConnectionEnv
>  at weblogic.rmi.internal.ServerRequest.unmarshalReturn(ServerRequest.java:105)
>  at weblogic.rmi.cluster.ClusterableRemoteRef.invoke(ClusterableRemoteRef.java:338)
>  at weblogic.rmi.cluster.ClusterableRemoteRef.invoke(ClusterableRemoteRef.java:252)
>  ... 20 more
> Caused by: java.io.NotSerializableException: weblogic.jdbc.common.internal.ConnectionEnv
>  at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1075)
>  at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1369)
>  at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1341)
>  at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1284)
>  at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1073)
>  at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:291)
>  at weblogic.rmi.extensions.server.CBVOutputStream.writeObject(CBVOutputStream.java:84)
>  at weblogic.rmi.internal.ServerRequest.unmarshalReturn(ServerRequest.java:97)
>  ... 22 more
> I fix the problem adding the following code after every endTransaction() :
>  sqlMapClient.getDatasource().getConnection().close().
> Thanks in advance.
> Nicola

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@ibatis.apache.org
For additional commands, e-mail: dev-help@ibatis.apache.org


[jira] Commented: (IBATIS-438) SqlMapClient don't release connection in a clustered ejb based application

Posted by "Jeff Butler (JIRA)" <ib...@incubator.apache.org>.
    [ https://issues.apache.org/jira/browse/IBATIS-438?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_12504790 ] 

Jeff Butler commented on IBATIS-438:
------------------------------------

Please use the mailing lists for support questions!

I think the NotSerializableException is a clue to the problem - if you ask on the lists, we can discuss it further.

> SqlMapClient don't release connection in a clustered ejb based application
> --------------------------------------------------------------------------
>
>                 Key: IBATIS-438
>                 URL: https://issues.apache.org/jira/browse/IBATIS-438
>             Project: iBatis for Java
>          Issue Type: Bug
>    Affects Versions: 2.3.0
>         Environment: BEA Weblogic Server 9.2.1 Clustered, Oracle 9i, EJB 2.1, the trasaction manager type is JDBC with a JNDI Datasource type.
>            Reporter: Nicola Amoruso
>
> I'm using JDBC transaction manager with very basic configuration. I do many
> database transactions as  update and  insert
> In every business method i call startTransaction() on SqlMapClient defined as private as instance variable into my ejb.
> At the end of my method i call commitTransaction()  if the transaction end right and i call always endTransaction() in a finally block as specified in IBATIS tutorial.
> This architecture work fine in and environment without clustering, but in this last model i have a abnormal consuming of connections of weblogic connection pool with the following exception:
>  com.ibatis.common.jdbc.exception.NestedSQLException:   
> --- The error occurred in file: query.xml.  
> --- The error occurred while executing mapped statement.  
> --- Check the query.update.  
> --- Check the statement or the result map.  
> --- Cause: weblogic.rmi.extensions.RemoteRuntimeException: Unexpected Exception
>  at com.ibatis.sqlmap.engine.mapping.statement.GeneralStatement.executeUpdate(GeneralStatement.java:94)
>  at com.ibatis.sqlmap.engine.impl.SqlMapExecutorDelegate.update(SqlMapExecutorDelegate.java:505)
>  at com.ibatis.sqlmap.engine.impl.SqlMapSessionImpl.update(SqlMapSessionImpl.java:90)
>  at com.ibatis.sqlmap.engine.impl.SqlMapClientImpl.update(SqlMapClientImpl.java:67)
>  at it.mypkg.ejb.Business.unlockListaPersone(CqscPFBusiness.java:279)
>  at it.mypkg.ejb.Business_17zvgu_EOImpl.businessMethod(Business_17zvgu_EOImpl.java:208)
>  at it.mypkg.ejb.Business_17zvgu_EOImpl_WLSkel.invoke(Unknown Source)
>  at weblogic.rmi.internal.BasicServerRef.invoke(BasicServerRef.java:518)
>  at weblogic.rmi.cluster.ClusterableServerRef.invoke(ClusterableServerRef.java:224)
>  at weblogic.rmi.internal.BasicServerRef$1.run(BasicServerRef.java:408)
>  at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:363)
>  at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:147)
>  at weblogic.rmi.internal.BasicServerRef.handleRequest(BasicServerRef.java:404)
>  at weblogic.rmi.internal.BasicServerRef.access$300(BasicServerRef.java:57)
>  at weblogic.rmi.internal.BasicServerRef$BasicExecuteRequest.run(BasicServerRef.java:935)
>  at weblogic.work.ExecuteThread.execute(ExecuteThread.java:209)
>  at weblogic.work.ExecuteThread.run(ExecuteThread.java:181)
> Caused by: weblogic.rmi.extensions.RemoteRuntimeException: Unexpected Exception
>  at weblogic.jdbc.common.internal.RmiDataSource_920_WLStub.getConnection(Unknown Source)
>  at com.ibatis.sqlmap.engine.transaction.jdbc.JdbcTransaction.init(JdbcTransaction.java:48)
>  at com.ibatis.sqlmap.engine.transaction.jdbc.JdbcTransaction.getConnection(JdbcTransaction.java:89)
>  at com.ibatis.sqlmap.engine.mapping.statement.GeneralStatement.executeUpdate(GeneralStatement.java:78)
>  ... 16 more
> Caused by: java.rmi.UnmarshalException: cannot unmarshaling return; nested exception is: 
>  java.io.NotSerializableException: weblogic.jdbc.common.internal.ConnectionEnv
>  at weblogic.rmi.internal.ServerRequest.unmarshalReturn(ServerRequest.java:105)
>  at weblogic.rmi.cluster.ClusterableRemoteRef.invoke(ClusterableRemoteRef.java:338)
>  at weblogic.rmi.cluster.ClusterableRemoteRef.invoke(ClusterableRemoteRef.java:252)
>  ... 20 more
> Caused by: java.io.NotSerializableException: weblogic.jdbc.common.internal.ConnectionEnv
>  at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1075)
>  at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1369)
>  at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1341)
>  at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1284)
>  at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1073)
>  at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:291)
>  at weblogic.rmi.extensions.server.CBVOutputStream.writeObject(CBVOutputStream.java:84)
>  at weblogic.rmi.internal.ServerRequest.unmarshalReturn(ServerRequest.java:97)
>  ... 22 more
> I fix the problem adding the following code after every endTransaction() :
>  sqlMapClient.getDatasource().getConnection().close().
> Thanks in advance.
> Nicola

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.