ibatis-user-java mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Kai Grabfelder <nos...@kinokai.de>
Subject Re: java.sql.SQLException: You cannot commit during a managed transaction
Date Fri, 03 Oct 2008 19:31:07 GMT
Jeff is totaly right, with this configuration iBATIS will never take part in the container
managed transactions...


--- Original Nachricht ---
Absender: Jeff Butler
Datum: 03.10.2008 21:14
> 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