ibatis-user-java mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Jeff Butler" <jeffgbut...@gmail.com>
Subject Re: java.sql.SQLException: You cannot commit during a managed transaction
Date Fri, 03 Oct 2008 19:14:05 GMT
I think you should use EXTERNAL transaction manager - this is EXACTLY
why it exists.  JBOSS, not iBATIS, is your transaction manager in this
case.

Jeff Butler

On Fri, Oct 3, 2008 at 2:05 PM, Chema <demablogia@gmail.com> wrote:
> I don't want to keep the secret :-D
>
>
> <settings
>    cacheModelsEnabled="true"
>    enhancementEnabled="true"
>    maxSessions="128"
>    maxTransactions="64"
>    maxRequests="512"/>
>
>  <transactionManager type="JDBC">
>    <dataSource type="JNDI">
>      <property name="DataSource" value="java:/datasource"/>
>    </dataSource>
>  </transactionManager>
>
>
> No more.
> And like you said, I don't use an EXTERNAL tx manager, but JDBC type
>
> I think that the only solution is perform "delete" sentences by JDBC
> API , so don't commit current transaction (managed by application
> server).
> What do you think ?
>
>
>
>
> 2008/10/3 Jeff Butler <jeffgbutler@gmail.com>:
>> iBATIS will not call commit() if you have
>>
>> <transactionManager type="EXTERNAL">
>>   ...
>> </transactionManager>
>>
>> I'm guessing this is NOT what you have configured - but it would be
>> nice to see your configuration.
>>
>> Jeff Butler
>>
>> On Fri, Oct 3, 2008 at 1:44 PM, Chema <demablogia@gmail.com> wrote:
>>> I can't upgrade because my application runs over JVM 1.4 and iBatis
>>> 2.3.0 is the last release compatible with JVM 1.4
>>>
>>> About your question, from documentation:
>>>
>>> "The <transactionManager> element also allows an optional attribute
>>> commitRequired that can be true or
>>> false. Normally iBATIS will not commit transactions unless an insert,
>>> update, or delete operation has been performed
>>> [...]
>>> The startTransaction(), commitTransaction() and endTransaction()
>>> methods, they will all be called
>>> automatically for you whenever you execute a statement outside of a
>>> transactional block as demonstrated in
>>> the above."
>>>
>>> I think it's not by cause of my configuration
>>>
>>> Thanks !
>>>
>>> Regards
>>>
>>>
>>>
>>>
>>> 2008/10/3 Kai Grabfelder <nospam@kinokai.de>:
>>>> sqlMap.delete() performs a commit? That should not be the case if the tx
manager is configured correctly.
>>>> Whats your configuration? Could you please also try updating ibatis to 2.3.4,
2.3.0 is really old...
>>>>
>>>> Regards
>>>>
>>>> Kai
>>>>
>>>> --- Original Nachricht ---
>>>> Absender: Chema
>>>> Datum: 03.10.2008 15:01
>>>>> That doesn't work because sqlMap.delete() performs commit automatically.
>>>>> I'm using the transaction manager of JBoss , with JNDI/JDBC.
>>>>> Can I disabled this ? By code is not possible because Jboss TX manager
>>>>> throws a SQLExeception.
>>>>> Another w/a ?
>>>>>
>>>>> Thanls !
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>> 2008/10/3 Kai Grabfelder <nospam@kinokai.de>:
>>>>>> if you are using CTM (container managed transactions), like in your
case, you can't start, commit or end
>>>>>> transactions manually. The container is doing this for you.
>>>>>>
>>>>>> The following should work
>>>>>>> sqlMap.delete("deleteRecords", param);
>>>>>>
>>>>>> If it does not I think your sqlmap configuration is not correct.
Could you post it here?
>>>>>>
>>>>>> Regards
>>>>>>
>>>>>> Kai
>>>>>>
>>>>>> --- Original Nachricht ---
>>>>>> Absender: Chema
>>>>>> Datum: 03.10.2008 12:53
>>>>>>> Hello:
>>>>>>>
>>>>>>> I'm using JBoss 3.2 and EJB 2.0 with iBatis 2.3.0
>>>>>>> I've got configured a external transaction manager in SQLMap
>>>>>>> configuration file.
>>>>>>>
>>>>>>> When an EJB component ( session bean ) tries to delete record
using by
>>>>>>> iBatis sqlMap client, JBoss retrieve this
>>>>>>> error:
>>>>>>>
>>>>>>> 11:02:09,406 ERROR [Connection] Error calling Connection.commit:
>>>>>>> java.sql.SQLException: You cannot commit during a managed transaction!
>>>>>>>         at org.jboss.resource.adapter.jdbc.BaseWrapperManagedConnection.jdbcCommit(BaseWrapperManagedConnection.java:525)
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> This error happens when I perform this
>>>>>>>
>>>>>>> sqlMap.startTransaction();
>>>>>>> sqlMap.delete("deleteRecords", param);
>>>>>>> sqlMap.commitTransaction();
>>>>>>> sqlMap.endTransaction();
>>>>>>>
>>>>>>>
>>>>>>> And with a single call (automatic transaction):
>>>>>>>
>>>>>>> sqlMap.delete("deleteRecords", param);
>>>>>>>
>>>>>>>
>>>>>>> I would like to delegate all transaction issues to external
>>>>>>> transaction manager ( in this case, JBoss)
>>>>>>> How I can solved this ? Any w/a ?
>>>>>>>
>>>>>>>
>>>>>>> Thanks !!
>>>>>>>
>>>>>>
>>>>>>
>>>>>
>>>>
>>>>
>>>
>>
>

Mime
View raw message