]
Jesper Pedersen updated WFLY-877:
---------------------------------
Fix Version/s: (was: 9.0.0.Beta1)
too many classes on classpath break RAR deployments without
deployment descriptor
---------------------------------------------------------------------------------
Key: WFLY-877
URL:
https://issues.jboss.org/browse/WFLY-877
Project: WildFly
Issue Type: Bug
Components: JCA
Reporter: Marcel Ĺ ebek
Assignee: Stefano Maestri
Attachments: test-ra.zip
An EAR containing a RAR and a large number of classes cannot be deployed, the exception
depends on jboss version. For example, the latest 7.1 snapshot produces the following:
14:37:57,354 INFO [org.jboss.as.server.deployment] (MSC service thread 1-1) JBAS015876:
Starting deployment of "test-ear.ear"
14:37:57,499 INFO [org.jboss.as.server.deployment] (MSC service thread 1-4) JBAS015876:
Starting deployment of "test-rar-2.0.0-SNAPSHOT.rar"
14:37:57,499 INFO [org.jboss.as.server.deployment] (MSC service thread 1-2) JBAS015876:
Starting deployment of "test-ejb-2.0.0-SNAPSHOT.jar"
14:37:57,807 ERROR [org.jboss.msc.service.fail] (MSC service thread 1-2) MSC00001: Failed
to start service
jboss.deployment.subunit."test-ear.ear"."test-rar-2.0.0-SNAPSHOT.rar".INSTALL:
org.jboss.msc.service.StartException in service
jboss.deployment.subunit."test-ear.ear"."test-rar-2.0.0-SNAPSHOT.rar".INSTALL:
JBAS018733: Failed to process phase INSTALL of subdeployment
"test-rar-2.0.0-SNAPSHOT.rar" of deployment "test-ear.ear"
at
org.jboss.as.server.deployment.DeploymentUnitPhaseService.start(DeploymentUnitPhaseService.java:123)
[jboss-as-server-7.1.4.Final-SNAPSHOT.jar:7.1.4.Final-SNAPSHOT]
at
org.jboss.msc.service.ServiceControllerImpl$StartTask.startService(ServiceControllerImpl.java:1811)
[jboss-msc-1.0.2.GA.jar:1.0.2.GA]
at
org.jboss.msc.service.ServiceControllerImpl$StartTask.run(ServiceControllerImpl.java:1746)
[jboss-msc-1.0.2.GA.jar:1.0.2.GA]
at
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
[rt.jar:1.7.0_13]
at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
[rt.jar:1.7.0_13]
at java.lang.Thread.run(Thread.java:722) [rt.jar:1.7.0_13]
Caused by: org.jboss.as.server.deployment.DeploymentUnitProcessingException:
java.lang.NullPointerException
at
org.jboss.as.connector.deployers.ra.processors.ParsedRaDeploymentProcessor.deploy(ParsedRaDeploymentProcessor.java:185)
at
org.jboss.as.server.deployment.DeploymentUnitPhaseService.start(DeploymentUnitPhaseService.java:116)
[jboss-as-server-7.1.4.Final-SNAPSHOT.jar:7.1.4.Final-SNAPSHOT]
... 5 more
Caused by: java.lang.NullPointerException
at
org.jboss.jca.common.metadata.ra.common.ResourceAdapter1516Impl.validate(ResourceAdapter1516Impl.java:351)
at
org.jboss.jca.common.metadata.ra.common.ConnectorAbstractmpl.validate(ConnectorAbstractmpl.java:332)
at
org.jboss.as.connector.deployers.ra.processors.ParsedRaDeploymentProcessor.deploy(ParsedRaDeploymentProcessor.java:142)
... 6 more
14:37:58,104 INFO [org.jboss.as.server] (DeploymentScanner-threads - 2) JBAS015870:
Deploy of deployment "test-ear.ear" was rolled back with failure message
{"JBAS014671: Failed services" =>
{"jboss.deployment.subunit.\"test-ear.ear\".\"test-rar-2.0.0-SNAPSHOT.rar\".INSTALL"
=> "org.jboss.msc.service.StartException in service
jboss.deployment.subunit.\"test-ear.ear\".\"test-rar-2.0.0-SNAPSHOT.rar\".INSTALL:
JBAS018733: Failed to process phase INSTALL of subdeployment
\"test-rar-2.0.0-SNAPSHOT.rar\" of deployment \"test-ear.ear\"
Caused by: org.jboss.as.server.deployment.DeploymentUnitProcessingException:
java.lang.NullPointerException
Caused by: java.lang.NullPointerException"},"JBAS014771: Services with
missing/unavailable dependencies" =>
["jboss.deployment.subunit.\"test-ear.ear\".\"test-ejb-2.0.0-SNAPSHOT.jar\".moduleDeploymentRuntimeInformation
Missing[JBAS014861: <one or more transitive
dependencies>]","jboss.deployment.unit.\"test-ear.ear\".CLEANUP
Missing[JBAS014861: <one or more transitive
dependencies>]","jboss.deployment.subunit.\"test-ear.ear\".\"test-ejb-2.0.0-SNAPSHOT.jar\".component.InboundMDB.CREATE
Missing[jboss.ra.\"test-ear.ear#test-rar-2.0.0-SNAPSHOT\"]","jboss.deployment.subunit.\"test-ear.ear\".\"test-ejb-2.0.0-SNAPSHOT.jar\".CLEANUP
Missing[JBAS014861: <one or more transitive
dependencies>]","jboss.deployment.subunit.\"test-ear.ear\".\"test-ejb-2.0.0-SNAPSHOT.jar\".component.InboundMDB.START
Missing[JBAS014861: <one or more transitive
dependencies>]","jboss.deployment.subunit.\"test-ear.ear\".\"test-ejb-2.0.0-SNAPSHOT.jar\".component.InboundMDB.TimedObjectInvoker
Missing[JBAS014861: <one or more transitive
dependencies>]","jboss.deployment.subunit.\"test-ear.ear\".\"test-ejb-2.0.0-SNAPSHOT.jar\".component.InboundMDB.ejb3.timerService
Missing[JBAS014861: <one or more transitive
dependencies>]","jboss.deployment.subunit.\"test-ear.ear\".\"test-ejb-2.0.0-SNAPSHOT.jar\".component.InboundMDB.VIEW.\"test.TestEventListener\".MESSAGE_ENDPOINT
Missing[JBAS014861: <one or more transitive dependencies>]"]}
14:37:58,141 INFO [org.jboss.as.server.deployment] (MSC service thread 1-2) JBAS015877:
Stopped deployment test-ejb-2.0.0-SNAPSHOT.jar in 38ms
14:37:58,142 INFO [org.jboss.as.server.deployment] (MSC service thread 1-5) JBAS015877:
Stopped deployment test-rar-2.0.0-SNAPSHOT.rar in 39ms
14:37:58,149 INFO [org.jboss.as.server.deployment] (MSC service thread 1-4) JBAS015877:
Stopped deployment test-ear.ear in 46ms
14:37:58,152 ERROR [org.jboss.as.server.deployment.scanner] (DeploymentScanner-threads -
1) {"JBAS014653: Composite operation failed and was rolled back. Steps that
failed:" => {"Operation step-2" => {"JBAS014671: Failed
services" =>
{"jboss.deployment.subunit.\"test-ear.ear\".\"test-rar-2.0.0-SNAPSHOT.rar\".INSTALL"
=> "org.jboss.msc.service.StartException in service
jboss.deployment.subunit.\"test-ear.ear\".\"test-rar-2.0.0-SNAPSHOT.rar\".INSTALL:
JBAS018733: Failed to process phase INSTALL of subdeployment
\"test-rar-2.0.0-SNAPSHOT.rar\" of deployment \"test-ear.ear\"
Caused by: org.jboss.as.server.deployment.DeploymentUnitProcessingException:
java.lang.NullPointerException
Caused by: java.lang.NullPointerException"},"JBAS014771: Services with
missing/unavailable dependencies" =>
["jboss.deployment.subunit.\"test-ear.ear\".\"test-ejb-2.0.0-SNAPSHOT.jar\".moduleDeploymentRuntimeInformation
Missing[JBAS014861: <one or more transitive
dependencies>]","jboss.deployment.unit.\"test-ear.ear\".CLEANUP
Missing[JBAS014861: <one or more transitive
dependencies>]","jboss.deployment.subunit.\"test-ear.ear\".\"test-ejb-2.0.0-SNAPSHOT.jar\".component.InboundMDB.CREATE
Missing[jboss.ra.\"test-ear.ear#test-rar-2.0.0-SNAPSHOT\"]","jboss.deployment.subunit.\"test-ear.ear\".\"test-ejb-2.0.0-SNAPSHOT.jar\".CLEANUP
Missing[JBAS014861: <one or more transitive
dependencies>]","jboss.deployment.subunit.\"test-ear.ear\".\"test-ejb-2.0.0-SNAPSHOT.jar\".component.InboundMDB.START
Missing[JBAS014861: <one or more transitive
dependencies>]","jboss.deployment.subunit.\"test-ear.ear\".\"test-ejb-2.0.0-SNAPSHOT.jar\".component.InboundMDB.TimedObjectInvoker
Missing[JBAS014861: <one or more transitive
dependencies>]","jboss.deployment.subunit.\"test-ear.ear\".\"test-ejb-2.0.0-SNAPSHOT.jar\".component.InboundMDB.ejb3.timerService
Missing[JBAS014861: <one or more transitive
dependencies>]","jboss.deployment.subunit.\"test-ear.ear\".\"test-ejb-2.0.0-SNAPSHOT.jar\".component.InboundMDB.VIEW.\"test.TestEventListener\".MESSAGE_ENDPOINT
Missing[JBAS014861: <one or more transitive dependencies>]"]}}}
However, the same event (with slightly more readable exception) occurs in 7.2 snapshot
too. An EAR that exhibits this is attached. If you comment out maven dependencies, you
will be able to deploy the same EAR. If you put different dependencies, you will get the
same error again. The problem seems to depend only on the classpath size, more classes
causes the problem to occur more likely.
The problem is that when JCA container builds ra.xml from JCA 1.6 annotations, for some
reason the content of <resourceadapter-class> tag is null (the string
"null"). As a workaround for resource adapters with large classpath, one can
supply a deployment descriptor with just <resourceadapter-class> tag containing the
correct value.