ibatis-user-java mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Chema <demablo...@gmail.com>
Subject Re: java.sql.SQLException: You cannot commit during a managed transaction
Date Fri, 03 Oct 2008 19:05:15 GMT
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