]
Arcadiy Ivanov commented on WFLY-6300:
--------------------------------------
Thanks for the link to DUP. What would be a programmatic way of implementing module
exclusion equivalent of jboss-deployment-structure.xml?
Also
[
deployment resource processor] there is a check whether DU is a Module and is not an EAR
and has a deployment root, in which case JobOperatorService is not added to the DU, which
in turn would not lead to failure.
IMO, WFLY is not just an JEE container, it's also an MSC container and whether JEE
components run in it should not have an effect on MSC modules indicate their interest in
other services. But thats a rhetorical statement. :)
Batch extension fails module deployment if JobOperator provider not
found
-------------------------------------------------------------------------
Key: WFLY-6300
URL:
https://issues.jboss.org/browse/WFLY-6300
Project: WildFly
Issue Type: Bug
Components: Class Loading
Affects Versions: 9.0.2.Final
Reporter: Arcadiy Ivanov
Assignee: James Perkins
I'm a maintainer for JBOSGI, trying to bring the plugin up to 9.x and 10.x.
Unfortunately, WildFly batch extension assumes that ANY module being inspected will have
a classloader capable of finding a JobOperator provider, and if it doesn't the module
will not be deployed.
This assumption is, obviously, wrong.
Generally the error looks like this:
{noformat}
15:55:56,679 INFO [org.jboss.as.server] (management-handler-thread - 3) WFLYSRV0010:
Deployed "arquillian-service" (runtime-name : "arquillian-service")
15:55:57,049 INFO [org.jboss.as.repository] (management-handler-thread - 4) WFLYDR0001:
Content added at location
/Users/arcivanov/Documents/src/jbosgi/jbosgi/wildfly/build/target/wildfly-9.0.2.Final/standalone/data/content/13/040c763e3f044cd7bbf3475a137bb620158bc1/content
15:55:57,055 INFO [org.jboss.as.server.deployment] (MSC service thread 1-7) WFLYSRV0027:
Starting deployment of "simple-bundle" (runtime-name:
"simple-bundle")
15:55:57,070 INFO [org.jboss.osgi.framework] (MSC service thread 1-7) JBOSGI011001:
Bundle installed: simple-bundle:0.0.0
15:55:57,112 ERROR [org.jboss.msc.service.fail] (MSC service thread 1-6) MSC000001:
Failed to start service jboss.deployment.unit.simple-bundle.batch.job-operator:
org.jboss.msc.service.StartException in service
jboss.deployment.unit.simple-bundle.batch.job-operator: Failed to start service
at
org.jboss.msc.service.ServiceControllerImpl$StartTask.run(ServiceControllerImpl.java:1904)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:745)
Caused by: javax.batch.operations.BatchRuntimeException: The ServiceLoader was unable to
find an implemenation for JobOperator. Check classpath for
META-INF/services/javax.batch.operations.JobOperator file.
at javax.batch.runtime.BatchRuntime.getJobOperator(BatchRuntime.java:73)
at
org.wildfly.extension.batch.deployment.JobOperatorService.start(JobOperatorService.java:90)
at
org.jboss.msc.service.ServiceControllerImpl$StartTask.startService(ServiceControllerImpl.java:1948)
at
org.jboss.msc.service.ServiceControllerImpl$StartTask.run(ServiceControllerImpl.java:1881)
... 3 more
15:55:57,112 INFO [org.jboss.as.arquillian] (MSC service thread 1-8) Arquillian
deployment detected:
ArquillianConfig[service=jboss.arquillian.config.simple-bundle,unit=simple-bundle,tests=[org.jboss.test.osgi.build.SimpleBundleLifecycleTestCase]]
15:55:57,118 INFO [org.jboss.osgi.framework] (MSC service thread 1-4) JBOSGI011002:
Bundle started: simple-bundle:0.0.0
15:55:57,120 ERROR [org.jboss.as.controller.management-operation]
(management-handler-thread - 4) WFLYCTL0013: Operation ("deploy") failed -
address: ([("deployment" => "simple-bundle")]) - failure
description: {"WFLYCTL0080: Failed services" =>
{"jboss.deployment.unit.simple-bundle.batch.job-operator" =>
"org.jboss.msc.service.StartException in service
jboss.deployment.unit.simple-bundle.batch.job-operator: Failed to start service
{noformat}
In more detail, the error looks like this:
The HostBundleClassLoader is asked by BatchRuntime to enumerate JobOperator services via
ServiceLoader.load, returning no providers which triggers an exception.
{noformat}
2016-02-29 15:55:57,110 TRACE [org.wildfly.extension.batch] (MSC service thread 1-1)
Processing deployment 'simple-bundle' for the batch deployment resources.
2016-02-29 15:55:57,111 TRACE [org.jboss.modules] (MSC service thread 1-8) Finding class
org.jboss.as.arquillian.service.ArquillianConfig from Module
"deployment.arquillian-service:main" from Service Module Loader
2016-02-29 15:55:57,111 TRACE [org.jboss.modules] (MSC service thread 1-8) Finding local
class org.jboss.as.arquillian.service.ArquillianConfig from Module
"deployment.arquillian-service:main" from Service Module Loader
2016-02-29 15:55:57,111 TRACE [org.jboss.security] (MSC service thread 1-2) PBOX00337:
nextState for action getPolicyConfiguration: open
2016-02-29 15:55:57,111 TRACE [org.jboss.modules] (MSC service thread 1-8) Loading class
org.jboss.as.arquillian.service.ArquillianConfig locally from Module
"deployment.arquillian-service:main" from Service Module Loader
2016-02-29 15:55:57,111 DEBUG [org.jboss.security] (MSC service thread 1-2) PBOX00307:
Constructing JBossPolicyConfiguration with contextID simple-bundle
2016-02-29 15:55:57,111 TRACE [org.jboss.as.naming] (MSC service thread 1-5) Bound
resource env into naming store org.jboss.as.naming.ServiceBasedNamingStore@63739568
(service name service jboss.naming.context.java.app.simple-bundle.env)
2016-02-29 15:55:57,111 TRACE [org.jboss.as.naming] (MSC service thread 1-7) Bound
resource env into naming store org.jboss.as.naming.ServiceBasedNamingStore@63739568
(service name service jboss.naming.context.java.module.simple-bundle.simple-bundle.env)
2016-02-29 15:55:57,111 TRACE [org.jboss.security] (MSC service thread 1-2) PBOX00337:
nextState for action getPolicyConfiguration: open
2016-02-29 15:55:57,111 DEBUG [org.jboss.as.security] (MSC service thread 1-2) Cannot
create permissions with 'null' metaData for id=simple-bundle
2016-02-29 15:55:57,111 TRACE [org.jboss.modules] (MSC service thread 1-8) Attempting to
define class org.jboss.as.arquillian.service.ArquillianConfig in Module
"deployment.arquillian-service:main" from Service Module Loader
2016-02-29 15:55:57,111 TRACE [org.jboss.osgi.framework] (MSC service thread 1-4)
LockManager locked: (START) [simple-bundle:0.0.0, simple-bundle:0.0.0]
2016-02-29 15:55:57,111 TRACE [org.jboss.modules] (MSC service thread 1-6) Attempting to
find all resources META-INF/services/javax.batch.operations.JobOperator in Module
"deployment.simple-bundle:main" from Service Module Loader
2016-02-29 15:55:57,111 DEBUG [org.jboss.osgi.framework] (MSC service thread 1-4)
Starting bundle: simple-bundle:0.0.0
2016-02-29 15:55:57,111 TRACE [org.jboss.security] (MSC service thread 1-2) PBOX00314:
commit, contextID: simple-bundle
2016-02-29 15:55:57,111 TRACE [org.jboss.osgi.framework] (MSC service thread 1-6) Class
[META-INF/services/javax.batch.operations.JobOperator] does not match
Dynamic-ImportPackage patterns
2016-02-29 15:55:57,112 TRACE [org.jboss.modules] (MSC service thread 1-8) Defined class
org.jboss.as.arquillian.service.ArquillianConfig in Module
"deployment.arquillian-service:main" from Service Module Loader
2016-02-29 15:55:57,111 TRACE [org.jboss.security] (MSC service thread 1-2) PBOX00337:
nextState for action commit: inService
2016-02-29 15:55:57,112 TRACE [org.jboss.osgi.framework] (MSC service thread 1-4)
changeState: simple-bundle:0.0.0 -> STARTING
2016-02-29 15:55:57,113 TRACE [org.jboss.osgi.deployment] (MSC service thread 1-4)
Invoke: [org.jboss.as.osgi.web.WebContextLifecycleInterceptor,order=1000] with state
STARTING on simple-bundle
2016-02-29 15:55:57,112 INFO [org.jboss.as.arquillian] (MSC service thread 1-8)
Arquillian deployment detected:
ArquillianConfig[service=jboss.arquillian.config.simple-bundle,unit=simple-bundle,tests=[org.jboss.test.osgi.build.SimpleBundleLifecycleTestCase]]
2016-02-29 15:55:57,112 ERROR [org.jboss.msc.service.fail] (MSC service thread 1-6)
MSC000001: Failed to start service jboss.deployment.unit.simple-bundle.batch.job-operator:
org.jboss.msc.service.StartException in service
jboss.deployment.unit.simple-bundle.batch.job-operator: Failed to start service
at
org.jboss.msc.service.ServiceControllerImpl$StartTask.run(ServiceControllerImpl.java:1904)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:745)
Caused by: javax.batch.operations.BatchRuntimeException: The ServiceLoader was unable to
find an implemenation for JobOperator. Check classpath for
META-INF/services/javax.batch.operations.JobOperator file.
at javax.batch.runtime.BatchRuntime.getJobOperator(BatchRuntime.java:73)
at
org.wildfly.extension.batch.deployment.JobOperatorService.start(JobOperatorService.java:90)
at
org.jboss.msc.service.ServiceControllerImpl$StartTask.startService(ServiceControllerImpl.java:1948)
at
org.jboss.msc.service.ServiceControllerImpl$StartTask.run(ServiceControllerImpl.java:1881)
... 3 more
{noformat}
The questions, therefore, are:
# Any way for module to indicate it doesn't want to be inspected by WildFly Batch
Extension?
# Should this behavior be fixed in principle?