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 21:37:31 GMT
I'll try one more time - it IS possible if you use the EXTERNAL
transaction manager.  Give it a try - surely it wouldn't take more
than 5 minutes of your time to try it???

Jeff Butler

On Fri, Oct 3, 2008 at 4:03 PM, Chema <demablogia@gmail.com> wrote:
> 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