Details
-
Bug
-
Status: Closed
-
Major
-
Resolution: Fixed
-
4.7.0
-
None
-
None
Description
Currently, EjbJarBuilder.build() is both "building" and "deploying". I think these two steps need to be separated. Otherwise, we're deploying prior to the following operations occurring: jaccPermissions, transactionAttributes, and applicationExceptions.
I have one specific instance where the current ordering (deploy prior to transactionAttributes) is causing a problem during MDB deployment. Specifically:
CoreDeploymentInfo.getTransactionAttribute(Method) line: 352
EndpointFactory.isDeliveryTransacted(Method) line: 63
MyResourceAdapter.endpointActivation(MessageEndpointFactory, ActivationSpec) line: 82
MdbContainer.deploy(DeploymentInfo) line: 119
EjbJarBuilder.build(EjbJarInfo, Map<String,Map<String,EntityManagerFactory>>) line: 63
Assembler.createApplication(AppInfo, ClassLoader) line: 410
...
Currently, the getTransactionAttribute() call will occur before transaction attributes are set by Assembler.createApplication().
Seems like a reasonable fix for this problem is to remove the Container.deploy() out of EjbJarBuilder.build() and into Assembler.createApplication(). I'm testing this option...