[wildfly-dev] private packaging Javassist jar in Hibernate ORM, so applications can have their own Javassist jar...

Scott Marlow smarlow at redhat.com
Thu Feb 11 11:03:39 EST 2016


As previously discussed, Hibernate applications need access to the 
Javassist runtime classes (see example [1] enhanced application entity 
if you didn't know this :).  A proposal was discussed on the 
hibernate-dev mailing list that I think is the best short term solution. 
  I wanted to raise this issue here also, as I would like to later 
create a pull request to bring in a new Hibernate ORM that includes this 
change.  So, getting early feedback before we create JIRAs for the work, 
is important.

The proposal is to private package (or shade), the Javassist classes, so 
that Hibernate ORM has its own copy of the Javassist classes.  On 
WildFly, we still would include Javassist for the other components that 
use it and for Hibernate applications that have "build-time enhanced 
entity classes" by an earlier Hibernate release.

One downside of this change is that Hibernate applications cannot easily 
switch to a different version of the Javassist classes.

Another downside is that applications that depend on an older Hibernate 
ORM version that includes "build-time enhanced entity classes", will 
need to be cracked open, to add dependencies on the Javassist module 
(since we will stop automatically adding Javassist to JPA application 
deployments).

The advantage of this change, is that Hibernate applications can include 
their own version of Javassist.

This will also have an impact on Hibernate build-time enhancing of 
entity classes (e.g. enhanced bytecode will no longer depend on the 
public Javassist classes).

Scott

[1] https://gist.github.com/scottmarlow/dc7ebfea654984f84e2e


More information about the wildfly-dev mailing list