Ok, thanks so much for the suggestions.

It is interesting to me that this isn't something someone else has seen
since I feel like I am using the pax-jdbc and aries bundles in a
straightforward way.

Do you have a recommendation of using the aries pool bundle vs. the dbcp2
one? I'm not set on either one, I just need it to work, have some
tweakability and perform well enough. I had been leaning towards dbcp2 since
it seems like a reasonable, actively developed pool implementation that I
have used elsewhere, but since it doesn't currently work for me I'm fine
using aries if it works and performs.

It seems to me that the aries pooling basically delegates back to the
Geronimo classes, which I would suspect are a decent pool implementation
themselves having originated as part of that project. But I have no
experience with them, so my confidence is low.

Obviously, I'll do some performance tests when all this comes together more,
but recommended best practices or known working bundle combinations are
always a good starting point. I'm still looking through your earlier
references and all the itest stuff to try to piece together a logical bundle
set, but it's slow for me as I am not very familiar with PaxExam.

Thanks,
-matt

-----Original Message-----
From: Christian Schneider [mailto:[email protected]] On Behalf Of
Christian Schneider
Sent: Tuesday, September 22, 2015 4:04 PM
To: [email protected]
Subject: Re: Bundle set recommendations for JPA+JTA+Eclipselink
Partitioning?

Honestly I have no idea why tranql sets the autocommit. I would not 
expect that it needs to be tweaked.

I can imagine that dbcp2 does not allow to change autocommit for XA 
transactions as the commit should
only be done when the XA transaction commits. Not sure about this either 
though.

I propose you ask this on the apache commons list or open an issue for 
dbcp2. It definitely seems to be an issue that
can also happen when just configuring dbcp2 manually and then use tranql 
on it.

Christian

Am 22.09.2015 um 20:19 schrieb [email protected]:
> [1] is a snippet from the stacktrace I get when using pax-jdbc-pool-dbcp2
> instead of -aries. As you can see,
> ManagedJDBCConnection#localTransactionStart appears to call setAutoCommit
on
> the connection class, which the DBCP2 impl short circuits at [2].
>
> This same exact environment seems to run fine with the -aries pool bundle.
I
> am running this with a customized transactions-jdbc bundle checked-out
from
> SVN. But, the only change I made was the pull in all the tranql source to
> fix issues with the two-arg form of getConnection in some of those
classes.
> Aside from that it's unchanged and works fine with the -aries pooling
> bundle.
>
> Any suggestions are greatly appreciated.
>
> [1]
> Caused by: javax.resource.spi.LocalTransactionException: Unable to disable
> autoCommit
>       at
>
org.tranql.connector.jdbc.ManagedJDBCConnection.localTransactionStart(Manage
> dJDBCConnection.java:83)
> ~[org.apache.aries.transaction.jdbc-2.1.2-SNAPSHOT.jar:2.1.2-SNAPSHOT]
>       at
>
org.tranql.connector.AbstractManagedConnection$LocalTransactionImpl.begin(Ab
> stractManagedConnection.java:195)
> ~[org.apache.aries.transaction.jdbc-2.1.2-SNAPSHOT.jar:2.1.2-SNAPSHOT]
>       at
>
org.apache.geronimo.connector.outbound.LocalXAResource.start(LocalXAResource
> .java:107) ~[geronimo-connector-3.1.3.jar:3.1.3]
>       ... 76 common frames omitted
> Caused by: java.sql.SQLException: Auto-commit can not be set while
enrolled
> in a transaction
>       at
>
org.apache.commons.dbcp2.managed.ManagedConnection.setAutoCommit(ManagedConn
> ection.java:223) ~[na:na]
>       at
>
org.tranql.connector.jdbc.ManagedJDBCConnection.localTransactionStart(Manage
> dJDBCConnection.java:81)
> ~[org.apache.aries.transaction.jdbc-2.1.2-SNAPSHOT.jar:2.1.2-SNAPSHOT]
>       ... 78 common frames omitted
>
> [2]
> public void setAutoCommit(boolean autoCommit) throws SQLException {
>      if (transactionContext != null) {
>   
> throw new SQLException("Auto-commit can not be set while enrolled in a
trans
> action");
>      }
>      super.setAutoCommit(autoCommit);
> }
>
>
> -----Original Message-----
> From: [email protected]
[mailto:[email protected]]
>
> Sent: Tuesday, September 22, 2015 11:14 AM
> To: [email protected]
> Subject: RE: Bundle set recommendations for JPA+JTA+Eclipselink
> Partitioning?
>
> Thanks very much for the references, I will definitely be looking over
them.
>
> I was hoping the dbcp2 bundle would allow for the same XA capability, as I
> would prefer dbcp2 pooling since it seems fairly analogous to my current
> pooling - bonecp. However, I did some testing with dbcp2 and got
exceptions
> during runtime when code from base datasource wrappers (from tranql maybe)
> was attempting to set the auto-commit flag and the DBCP datasource wrapper
> class was throwing an exception about setting auto-commit. I can't
remember
> exactly the code flow but I'll try to test this again and see about
getting
> a stacktrace. Does any of this sound familiar? Should I be able to simply
> replace pax-jdbc-pool-aries with pax-jdbc-pool-dbcp2 in my runtime? Maybe
it
> was something in my jndi references not getting the aries-managed
datasource
> services.
>
> As for the blueprint/DS question, I will be largely using DS to inject
> app-specific API that gives my code access to the
JpaTemplate/EntityManager
> classes. I hope to move toward blueprint, but that will be another effort.
>
> Thanks again,
> -matt
>
> -----Original Message-----
> From: Christian Schneider [mailto:[email protected]] On Behalf Of
> Christian Schneider
> Sent: Tuesday, September 22, 2015 10:24 AM
> To: [email protected]
> Subject: Re: Bundle set recommendations for JPA+JTA+Eclipselink
> Partitioning?
>
> Hi Matthew,
>
> pax-jdbc-pool-dbcp2 as well as pax-jdbc-pool-aries should both be able
> to provide XA enlisting poolable DataSources.
> Aries JPA and Transaction actually use the above in their integration
> tests. So they should work together nicely.
>
> I got two tutorials that both use XA transactions with Aries:
>
http://liquid-reality.de/display/liquid/2015/06/30/Apache+Karaf+Tutorial+par
> t+10+-+Declarative+services
>
http://liquid-reality.de/display/liquid/2015/03/05/Apache+Karaf+Tutorial+Par
> t+9+-+Annotation+based+blueprint+and+JPA
>
> Btw. Do you plan to use blueprint or DS?
>
> Christian
>
> On 03.09.2015 22:51, [email protected] wrote:
>> Ok, maybe I can answer my own questions here, but if I could get some
>> confirmation that would be great. I seem to have a working system running
>> with ops4j-pax-jdbc-pool-aries rather than dbcp2.
>>
>> Digging into the code in org.apache.aries.transaction.jdbc it looks like
>> RecoverableDataSource is the wrapper for my XADataSources and it does
> indeed
>> appear to support passing of pooling options onto
ConnectionManagerFactory
>> which itself appears to use the pooling capabilities that come from the
>> Geronimo bundles. Does all this sound correct so far?
>>
>> So, it's not dbcp2, but it's pooling nonetheless and I can adjust
>> preferences by passing the appropriate bean options to my pax-jdbc
service
>> with the 'pool.' prefix which will in-turn send those on to the
>> RecoverableDataSource instance. Sound ok still?
>>
>> And finally, my eclipselink JTA datasource JNDI lookups are formatted
with
>> filters for the 'aries.managed' property [1] to ensure that I get the
> aries
>> auto-enlisting DataSources.
>>
>> So far, this is running my existing code ok with only two changes I had
to
>> make:
>>
>> 1. Fixed ARIES-1171, but actually in the Tranql code as I was getting
>> connection errors and didn't see a logical place to fix it from an aries
>> class (using latest aries-transaction-jdbc from SVN). This required
> bringing
>> all the tranql source into my aries bundle and just removing the external
>> dependency. I didn't like doing that, but since that code hasn't changed
> in
>> a while and I'm still prototyping all this it was the path of least
>> resistance.
>>
>> 2. Changed RecoverableDataSource to not use empty strings by default for
>> username and password. Which seemed to be similar/related to the above
and
> I
>> posted as ARIES-1376.
>>
>> Thoughts and criticisms welcome. Thanks!
>>
>> [1]
>>
>
osgi:service/javax.sql.DataSource/(&(osgi.jndi.service.name=my-app-node1)(ar
>> ies.managed=true))
>>
>> -----Original Message-----
>> From: [email protected]
> [mailto:[email protected]]
>> Sent: Thursday, September 03, 2015 10:58 AM
>> To: [email protected]
>> Subject: Bundle set recommendations for JPA+JTA+Eclipselink Partitioning?
>>
>> I am in the process of refactoring an existing JPA/Eclipselink-based
>> application to introduce Eclipselink's partitioning support for database
>> sharding. My current application runs quite well with pooled jdbc
>> connections via boncep.
>>
>> However, with the sharded model there will be a number of entity types
> that
>> are Replicated to all shards and, as such, eclipselink will be doing
> writes
>> that span multiple jdbc connections. Per the eclipselink recommendations
> for
>> paritioning I would like to introduce JTA in order to enforce integrity
>> across commits that hit multiple partitions.
>>
>> It seems like the ops4j-pax-jdbc bundles are designed to support XA/JTA
> and
>> it seems like there is a lot of XA support in the various aries bundles
>> (aries.transaction. and aries.jpa.). However, I'm not sure of what
>> combination of these bundles+configuration will provide what I am after.
>> Since many of these bundles seem to be designed/documented around general
>> JTA usage - like performing a transaction that spans JMS and JDBC - I'm
> not
>> confident if that model works with my particular use case.
>>
>> To further add to this, I would like for my JDBC connections to be pooled
>> for performance. ops4j-pax-jdbc-pool-dbcp2 seems like a logical choice,
> but
>> again I'm not sure if it will play nicely with the transaction management
>> features from aries.
>>
>> I think I have a working model of this, but I'm rather new to XA/JTA
>> especially from OSGi so I want to make sure I'm getting this correct. So,
> I
>> guess my questions are:
>>
>> 1. Can ops4j-pax-jdbc-pool and it's dbcp2 sibling work with
>> aries-jpa/transaction to pool and auto-enlist XADataSources?
>>
>> 2. If not, will ops4j-pax-jdbc-pool-aries work? And if so, can its
pooling
>> semantics be configured? E.g. minIdle, maxIdle, etc.
>>
>> 3. If neither of the above works, is there a recommended set of bundles
to
>> accomplish pooled XADataSources with eclipselink+JTA?
>>
>>
>> Thanks,
>>
>>
>> Matthew Pitts
>>    
>> Developer
>> Security Solutions Design & Automation
>>    
>> Wells Fargo Bank | Tel 336.608.3332 | Cell 336.202.3913 | Kernersville,
NC
> |
>> MAC D9693-010
>> [email protected]
>>    
>>
>

Attachment: smime.p7s
Description: S/MIME cryptographic signature

Reply via email to