You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user-java@ibatis.apache.org by Michael Schall <mi...@gmail.com> on 2008/08/25 22:16:07 UTC

Default transactionManager for WebSphere application not using EJBs

We are using iBATIS in a large application that does not use EJBs and it
works great.  We are seeing some issues where we are using more connections
than we think we should be.  We are wondering if we have some issues with
connections/transactions not closing as fast as we would like them to.  Our
current transactionManager looks like the following:

    <transactionManager type="JDBC" commitRequired="true">
        <dataSource type="JNDI">
            <property name="DataSource" value="java:comp/env/jdbc/..."/>
        </dataSource>
    </transactionManager>

A link (
http://opensource.atlassian.com/confluence/oss/display/IBATIS/Environment+Specific+Information)
in a recent post pointed me to a different config:

    <transactionManager type="JTA" commitRequired="true">
        <property name="UserTransaction"
value="java:comp/env/UserTransaction"/>
        <dataSource type="JNDI">
            <property name="DataSource" value="java:comp/env/..."/>
        </dataSource>
    </transactionManager>

>From what I have read, JTA is needed if you require 2 phase commits, which
we don't.  Is JTA a better choice anyway?  What is the UserTransaction
property doing here?

Thanks for your time.

Mike

Re: Default transactionManager for WebSphere application not using EJBs

Posted by Michael Schall <mi...@gmail.com>.
Sorry Jeff, I took your response as you used a different web container and
this was just a possible way to configure it to work.  Now that I know it
works in the "real world" will have some of my users test it for me and then
move to production.  Like you said if it's not broke...  I would say it is
kind of broken right now.  Works great for a couple hundred users, but once
we passed a thousand things started to slow down and connection count went
up.  Hopefully going directly to JTA will remove some of the overhead.

Thanks so much for your response.

Mike

On Wed, Aug 27, 2008 at 2:14 PM, Jeff Butler <je...@gmail.com> wrote:

> Hi Mike,
>
> I wrote the section of the WIKI article you referenced and the
> settings shown there are exact copies of what I use on many WebSphere
> projects (only the name of the JNDI datasource needs to be changed).  Is
> something not working with what's in the WIKI?
>
> Jeff Butler
>
>
>
> On Wed, Aug 27, 2008 at 2:07 PM, Michael Schall <mi...@gmail.com>wrote:
>
>> Is there anyone out there using iBATIS with JNDI within WebSphere without
>> EJBs that is willing to share their settings?
>>
>> Thanks
>>
>> Mike
>>
>>
>> On Mon, Aug 25, 2008 at 5:17 PM, Jeff Butler <je...@gmail.com>wrote:
>>
>>>  UserTransaction is a configuration setting required for JTA.  See here:
>>>
>>>
>>> http://publib.boulder.ibm.com/infocenter/wasinfo/v6r1/index.jsp?topic=/com.ibm.websphere.base.doc/info/aes/ae/cjta_glotran.html
>>>
>>> You are correct that JTA is only *needed* if there are two or more
>>> resources.  However, even with one resource I believe that WebSphere
>>> is creating a JTA compatible transaction.  So it will always work to use
>>> JTA.
>>>
>>> I believe that the jdbc connection.close() method in effect transfers
>>> through to the underlying JTA transation.  So maybe JTA is a more direct
>>> route to the actual transaction - but this is heavy WebSphere internals and
>>> I don't know the answer for sure.
>>>
>>> As to whether one is better than the other in your specific case, I can't
>>> say.  If it's not broke, don't fix it.  If it is broke, give JTA a try to
>>> see if it makes a difference.  Then you'll know.
>>>
>>> Jeff Butler
>>>
>>>   On Mon, Aug 25, 2008 at 3:16 PM, Michael Schall <mike.schall@gmail.com
>>> > wrote:
>>>
>>>> We are using iBATIS in a large application that does not use EJBs and it
>>>> works great.  We are seeing some issues where we are using more connections
>>>> than we think we should be.  We are wondering if we have some issues with
>>>> connections/transactions not closing as fast as we would like them to.  Our
>>>> current transactionManager looks like the following:
>>>>
>>>>     <transactionManager type="JDBC" commitRequired="true">
>>>>         <dataSource type="JNDI">
>>>>             <property name="DataSource" value="java:comp/env/jdbc/..."/>
>>>>         </dataSource>
>>>>     </transactionManager>
>>>>
>>>> A link (
>>>> http://opensource.atlassian.com/confluence/oss/display/IBATIS/Environment+Specific+Information)
>>>> in a recent post pointed me to a different config:
>>>>
>>>>     <transactionManager type="JTA" commitRequired="true">
>>>>         <property name="UserTransaction"
>>>> value="java:comp/env/UserTransaction"/>
>>>>         <dataSource type="JNDI">
>>>>             <property name="DataSource" value="java:comp/env/..."/>
>>>>         </dataSource>
>>>>     </transactionManager>
>>>>
>>>> From what I have read, JTA is needed if you require 2 phase commits,
>>>> which we don't.  Is JTA a better choice anyway?  What is the UserTransaction
>>>> property doing here?
>>>>
>>>> Thanks for your time.
>>>>
>>>> Mike
>>>>
>>>
>>>
>>
>

Re: Default transactionManager for WebSphere application not using EJBs

Posted by Jeff Butler <je...@gmail.com>.
Hi Mike,

I wrote the section of the WIKI article you referenced and the
settings shown there are exact copies of what I use on many WebSphere
projects (only the name of the JNDI datasource needs to be changed).  Is
something not working with what's in the WIKI?

Jeff Butler



On Wed, Aug 27, 2008 at 2:07 PM, Michael Schall <mi...@gmail.com>wrote:

> Is there anyone out there using iBATIS with JNDI within WebSphere without
> EJBs that is willing to share their settings?
>
> Thanks
>
> Mike
>
>
> On Mon, Aug 25, 2008 at 5:17 PM, Jeff Butler <je...@gmail.com>wrote:
>
>>  UserTransaction is a configuration setting required for JTA.  See here:
>>
>>
>> http://publib.boulder.ibm.com/infocenter/wasinfo/v6r1/index.jsp?topic=/com.ibm.websphere.base.doc/info/aes/ae/cjta_glotran.html
>>
>> You are correct that JTA is only *needed* if there are two or more
>> resources.  However, even with one resource I believe that WebSphere
>> is creating a JTA compatible transaction.  So it will always work to use
>> JTA.
>>
>> I believe that the jdbc connection.close() method in effect transfers
>> through to the underlying JTA transation.  So maybe JTA is a more direct
>> route to the actual transaction - but this is heavy WebSphere internals and
>> I don't know the answer for sure.
>>
>> As to whether one is better than the other in your specific case, I can't
>> say.  If it's not broke, don't fix it.  If it is broke, give JTA a try to
>> see if it makes a difference.  Then you'll know.
>>
>> Jeff Butler
>>
>>   On Mon, Aug 25, 2008 at 3:16 PM, Michael Schall <mi...@gmail.com>wrote:
>>
>>> We are using iBATIS in a large application that does not use EJBs and it
>>> works great.  We are seeing some issues where we are using more connections
>>> than we think we should be.  We are wondering if we have some issues with
>>> connections/transactions not closing as fast as we would like them to.  Our
>>> current transactionManager looks like the following:
>>>
>>>     <transactionManager type="JDBC" commitRequired="true">
>>>         <dataSource type="JNDI">
>>>             <property name="DataSource" value="java:comp/env/jdbc/..."/>
>>>         </dataSource>
>>>     </transactionManager>
>>>
>>> A link (
>>> http://opensource.atlassian.com/confluence/oss/display/IBATIS/Environment+Specific+Information)
>>> in a recent post pointed me to a different config:
>>>
>>>     <transactionManager type="JTA" commitRequired="true">
>>>         <property name="UserTransaction"
>>> value="java:comp/env/UserTransaction"/>
>>>         <dataSource type="JNDI">
>>>             <property name="DataSource" value="java:comp/env/..."/>
>>>         </dataSource>
>>>     </transactionManager>
>>>
>>> From what I have read, JTA is needed if you require 2 phase commits,
>>> which we don't.  Is JTA a better choice anyway?  What is the UserTransaction
>>> property doing here?
>>>
>>> Thanks for your time.
>>>
>>> Mike
>>>
>>
>>
>

Re: Default transactionManager for WebSphere application not using EJBs

Posted by Michael Schall <mi...@gmail.com>.
Is there anyone out there using iBATIS with JNDI within WebSphere without
EJBs that is willing to share their settings?

Thanks

Mike

On Mon, Aug 25, 2008 at 5:17 PM, Jeff Butler <je...@gmail.com> wrote:

> UserTransaction is a configuration setting required for JTA.  See here:
>
>
> http://publib.boulder.ibm.com/infocenter/wasinfo/v6r1/index.jsp?topic=/com.ibm.websphere.base.doc/info/aes/ae/cjta_glotran.html
>
> You are correct that JTA is only *needed* if there are two or more
> resources.  However, even with one resource I believe that WebSphere
> is creating a JTA compatible transaction.  So it will always work to use
> JTA.
>
> I believe that the jdbc connection.close() method in effect transfers
> through to the underlying JTA transation.  So maybe JTA is a more direct
> route to the actual transaction - but this is heavy WebSphere internals and
> I don't know the answer for sure.
>
> As to whether one is better than the other in your specific case, I can't
> say.  If it's not broke, don't fix it.  If it is broke, give JTA a try to
> see if it makes a difference.  Then you'll know.
>
> Jeff Butler
>
> On Mon, Aug 25, 2008 at 3:16 PM, Michael Schall <mi...@gmail.com>wrote:
>
>> We are using iBATIS in a large application that does not use EJBs and it
>> works great.  We are seeing some issues where we are using more connections
>> than we think we should be.  We are wondering if we have some issues with
>> connections/transactions not closing as fast as we would like them to.  Our
>> current transactionManager looks like the following:
>>
>>     <transactionManager type="JDBC" commitRequired="true">
>>         <dataSource type="JNDI">
>>             <property name="DataSource" value="java:comp/env/jdbc/..."/>
>>         </dataSource>
>>     </transactionManager>
>>
>> A link (
>> http://opensource.atlassian.com/confluence/oss/display/IBATIS/Environment+Specific+Information)
>> in a recent post pointed me to a different config:
>>
>>     <transactionManager type="JTA" commitRequired="true">
>>         <property name="UserTransaction"
>> value="java:comp/env/UserTransaction"/>
>>         <dataSource type="JNDI">
>>             <property name="DataSource" value="java:comp/env/..."/>
>>         </dataSource>
>>     </transactionManager>
>>
>> From what I have read, JTA is needed if you require 2 phase commits, which
>> we don't.  Is JTA a better choice anyway?  What is the UserTransaction
>> property doing here?
>>
>> Thanks for your time.
>>
>> Mike
>>
>
>

Re: Default transactionManager for WebSphere application not using EJBs

Posted by Jeff Butler <je...@gmail.com>.
UserTransaction is a configuration setting required for JTA.  See here:

http://publib.boulder.ibm.com/infocenter/wasinfo/v6r1/index.jsp?topic=/com.ibm.websphere.base.doc/info/aes/ae/cjta_glotran.html

You are correct that JTA is only *needed* if there are two or more
resources.  However, even with one resource I believe that WebSphere
is creating a JTA compatible transaction.  So it will always work to use
JTA.

I believe that the jdbc connection.close() method in effect transfers
through to the underlying JTA transation.  So maybe JTA is a more direct
route to the actual transaction - but this is heavy WebSphere internals and
I don't know the answer for sure.

As to whether one is better than the other in your specific case, I can't
say.  If it's not broke, don't fix it.  If it is broke, give JTA a try to
see if it makes a difference.  Then you'll know.

Jeff Butler

On Mon, Aug 25, 2008 at 3:16 PM, Michael Schall <mi...@gmail.com>wrote:

> We are using iBATIS in a large application that does not use EJBs and it
> works great.  We are seeing some issues where we are using more connections
> than we think we should be.  We are wondering if we have some issues with
> connections/transactions not closing as fast as we would like them to.  Our
> current transactionManager looks like the following:
>
>     <transactionManager type="JDBC" commitRequired="true">
>         <dataSource type="JNDI">
>             <property name="DataSource" value="java:comp/env/jdbc/..."/>
>         </dataSource>
>     </transactionManager>
>
> A link (
> http://opensource.atlassian.com/confluence/oss/display/IBATIS/Environment+Specific+Information)
> in a recent post pointed me to a different config:
>
>     <transactionManager type="JTA" commitRequired="true">
>         <property name="UserTransaction"
> value="java:comp/env/UserTransaction"/>
>         <dataSource type="JNDI">
>             <property name="DataSource" value="java:comp/env/..."/>
>         </dataSource>
>     </transactionManager>
>
> From what I have read, JTA is needed if you require 2 phase commits, which
> we don't.  Is JTA a better choice anyway?  What is the UserTransaction
> property doing here?
>
> Thanks for your time.
>
> Mike
>