[jboss-jira] [JBoss JIRA] (WFLY-1463) PersistenceUnitService depends on not-yet-available BeanManager

Scott Marlow (JIRA) jira-events at lists.jboss.org
Thu Jun 6 13:55:54 EDT 2013


    [ https://issues.jboss.org/browse/WFLY-1463?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12779889#comment-12779889 ] 

Scott Marlow commented on WFLY-1463:
------------------------------------

For application that use Hibernate 4.1.x jars, we need to make a code change to (automatically) detect if the application sets persistence unit property "hibernate.ejb.use_class_enhancer" so we know whether to start the persistence unit before other deployers might read application classes (after that happens, they can't be enhanced/rewritten).

For applications that use Hibernate 4.3.x jars, we already check if the "hibernate.ejb.use_class_enhancer" is set to true and if it is, we start the PersistenceUnitService early during FIRST_MODULE_USE (which means BeanManager will not be accessible and is not supported).  I verified that setting pu property "jboss.as.jpa.classtransformer" to false works around this problem with non-Hibernate persistence providers.

This should documented in the jpa documentation.


                
> PersistenceUnitService depends on not-yet-available BeanManager
> ---------------------------------------------------------------
>
>                 Key: WFLY-1463
>                 URL: https://issues.jboss.org/browse/WFLY-1463
>             Project: WildFly
>          Issue Type: Bug
>          Components: JPA / Hibernate
>    Affects Versions: 8.0.0.Alpha1
>            Reporter: Jozef Hartinger
>            Assignee: Scott Marlow
>             Fix For: 8.0.0.Alpha2
>
>
> I am getting
> {noformat}
> 17:12:25,453 ERROR [org.jboss.as.controller.management-operation] (management-handler-thread - 2) JBAS014613: Operation ("deploy") failed - address: ([("deployment" => "jpa_txTimeoutTestWithMockProvider.ear")]) - failure description: {"JBAS014771: Services with missing/unavailable dependencies" => ["jboss.persistenceunit.\"jpa_txTimeoutTestWithMockProvider.ear/ejbjar.jar#mypc\" is missing [jboss.deployment.subunit.\"jpa_txTimeoutTestWithMockProvider.ear\".\"ejbjar.jar\".beanmanager]"]}
> 17:12:25,459 ERROR [org.jboss.as.server] (management-handler-thread - 2) JBAS015870: Deploy of deployment "jpa_txTimeoutTestWithMockProvider.ear" was rolled back with the following failure message: {"JBAS014771: Services with missing/unavailable dependencies" => ["jboss.persistenceunit.\"jpa_txTimeoutTestWithMockProvider.ear/ejbjar.jar#mypc\" is missing [jboss.deployment.subunit.\"jpa_txTimeoutTestWithMockProvider.ear\".\"ejbjar.jar\".beanmanager]"]}
> {noformat}
> The problem is caused by PersistenceUnitServiceHandler.deployPersistenceUnit() which, if the PU is deployed in a CDI-enabled archive, adds a dependency on the BeanManager service. This happens in PersistenceBeginInstallProcessor which executes in the FIRST_MODULE_USE phase.
> However, the BeanManager service is not installed by the Weld subsystem until the INSTALL phase.
> This can be reproduced easily. Take for example the org.jboss.as.test.integration.jpa.mockprovider.txtimeout.TxTimeoutTestCase and add an empty beans.xml file to the ejb jar (ejbjar.addAsManifestResource(EmptyAsset.INSTANCE, "beans.xml"))
> This issue blocks proper Weld integration (implicit bean archives).

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira


More information about the jboss-jira mailing list