[hibernate-dev] Breaking JBossStandAloneJtaPlatform backwards compatibility
Steve Ebersole
steve at hibernate.org
Tue May 29 10:05:56 EDT 2018
On Tue, May 29, 2018 at 8:38 AM Scott Marlow <smarlow at redhat.com> wrote:
>
> On 05/29/2018 08:48 AM, Steve Ebersole wrote:
> > By "non-jpa container managed deployments" you mean injecting Hibernate
> > Sessions? Otherwise, I am not sure what this is supposed to mean. Nor
> > why it is a differentiator in how we use JtaPlatform
> / JtaPlatformInitiator.
>
> Applications that deploy on WF, will use the WildFly
> JtaPlatformInitiator, unless they add a persistence unit hint
> "wildfly.jpa.jtaplatform" set to "false", in which case the WildFly
> JtaPlatformInitiator will not be added for the deployment. We added
> this for allowing applications to have more control over which
> JtaPlatform is used (e.g. they can use an app configured JtaPlatform or
> the determined correct ORM JtaPlatform).
>
Well that may be how your jipijapa works. That's not how mine works. I
really wish we would keep this code in sync, or if you could use
hibernate-jipijapa. Maybe you mean against 5.1?
Anyway, in hibernate-jipijapa I simply extend the normal
`JtaPlatformInitiator` and override `#getFallbackProvider`. The way that
should work is that it will prefer any value explicitly set by the user;
but, if they do not specify anything explicitly, I use the "fallback". At
least that is how it should work - if it does not, I would consider that a
bug and we should fix it.
Or if you mean against 5.1 or an earlier version... the only difference is
the inclusion of the explicit `#getFallbackProvider` hook - you can still
effect the same change simply by fully implementing
`JtaPlatformInitiator#initiateService`
I do see that Hibernate ORM will always succeed to use the
> JBossAppServerJtaPlatform on WF, since we will only try using the
> JBossStandalone if the JNDI lookup of the WF TM fails.
>
Sure, because you are not telling it to do anything different with an
initiator.
What happens if the deployment, is configured to use
> JBossStandAloneJtaPlatform directly on WF? I assume they will need to
> switch to use our new WildFlyStandAloneJtaPlatform class on ORM 5.3.2,
> so that the app sees correct JTA TX status?
>
Nope, on 5.3 hibernate-jipijapa simply works. You have problems because
you are not following that paradigm.
> There is also now the problem that in 5.3.1, JBossStandAloneJtaPlatform
> referred to the WildFly Transaction Client but is now reverted in 5.3.2,
> to only refer to the Arjuna classes. Perhaps instead in 5.3.2, we
> should delete WildFlyStandAloneJtaPlatform and merge the logic into the
> existing JBossStandAloneJtaPlatform (so that we first check for WildFly
> Transaction Client classes, failing that, we then try the Arjuna classes.)
>
I agree that this is a problem and should not have been changed. At least
without looking. IMO JBossStandAloneJtaPlatform ought to look for any of
the classes it can use.
More information about the hibernate-dev
mailing list