Details
-
Bug
-
Resolution: Won't Do
-
Major
-
None
-
9.0.2.Final
-
None
Description
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:
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
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.
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
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?