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 21:03:49 GMT
I guess it's not possible.
I 'm going to use JDBC API, I guess

Thank you very much !!


2008/10/3 Kai Grabfelder <nospam@kinokai.de>:
> 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