]
Stuart Douglas resolved AS7-946.
--------------------------------
Assignee: Stuart Douglas (was: jaikiran pai)
Fix Version/s: 7.0.0.CR1
(was: 7.1.0.Alpha1)
Resolution: Done
I changed the processor to only throw a deployment exception if the PU is actually used as
an EE interceptor or component.
Persistence annotation processing is overly restrictive
---------------------------------------------------------
Key: AS7-946
URL:
https://issues.jboss.org/browse/AS7-946
Project: Application Server 7
Issue Type: Bug
Components: JPA / Hibernate
Affects Versions: 7.0.0.Beta3
Reporter: Marius Bogoevici
Assignee: Stuart Douglas
Fix For: 7.0.0.CR1
If a deployment contains classes bearing the @PersistenceContext annotation, the
annotation processor will fail the deployment if a persistence unit is not found. While
this is correct for classes which are a target for container-driven injection, the
application may contain annotated classes that are not injection targets according to the
Java EE specification. This is not illegal according to the specification.
To wit, a Spring application may use @PersistenceContext for performing Spring-driven
injection of Spring-managed entity manager factories.
In the past, such applications could have used the 'metadata-complete' attribute
in web.xml, but this does not seem to work anymore.
Regardless, of that, the server could adopt a more lenient approach, by failing the
injection only when a managed bean is actually injected with a non-existent PU/PC
reference.
The other variant would be to restrict validation to classes which are actual injection
targets according to the Java EE specification.
--
This message is automatically generated by JIRA.
For more information on JIRA, see: