Tomasz Kleszczyński [https://community.jboss.org/people/tkleszczynski] created 
the discussion

"Instantiation of org.drools.concurrent.ExecutorProviderImpl in OSGi"

To view the discussion, visit: https://community.jboss.org/message/758994#758994

--------------------------------------------------------------
Hello everybody,

I've prepared simple process which uses some rules. There is small problem 
during invocation - one of class cannot be loaded correctly. I found the same 
problem in  http://lists.jboss.org/pipermail/rules-users/2012-May/026839.html 
http://lists.jboss.org/pipermail/rules-users/2012-May/026839.html but in that 
thread there was not correct solution

During invocation on OSGi environment I've got following problem:
1. org.drools.concurrent.ExecutorProviderFactory$ExecutorProviderHolder tries 
to obtain instance of class org.drools.concurrent.ExecutorProvider using 
org.drools.util.ServiceRegistryImpl.get method
2. org.drools.util.ServiceRegistryImpl doesn't have any implementation of 
org.drools.concurrent.ExecutorProvider in it's registry
3. org.drools.util.ServiceRegistryImpl tries to instantiate default 
implementation - org.drools.concurrent.ExecutorProviderImpl using 
org.drools.util.ServiceRegistryImpl$ReflectionInstantiator using wrong 
classloader - in my opinion there is problem.
4. Finally java.lang.ClassNotFoundException: 
org.drools.concurrent.ExecutorProviderImpl is thrown because classloader from 
bundle knowledge-api-5.4.0.Final cannot load class 
org.drools.concurrent.ExecutorProviderImpl.

This type of problems in OSGi environment were solved by registering proper 
instances in OSGi service repository. For example for core module in 
org.drools.osgi.core.Activator class. Maybe would be worth to register also 
org.drools.concurrent.ExecutorProviderImpl as OSGi service. I've tried to fix 
this problem this and this way solves this problem.

Stacktrace I've got in this situation.
SEVERE: Unable to start blueprint container for bundle jbpm5-example-client
org.osgi.service.blueprint.container.ComponentDefinitionException: Unable to 
intialize bean sampleProcessClient
    at 
org.apache.aries.blueprint.container.BeanRecipe.runBeanProcInit(BeanRecipe.java:710)
    at 
org.apache.aries.blueprint.container.BeanRecipe.internalCreate2(BeanRecipe.java:820)
    at 
org.apache.aries.blueprint.container.BeanRecipe.internalCreate(BeanRecipe.java:783)
    at 
org.apache.aries.blueprint.di.AbstractRecipe$1.call(AbstractRecipe.java:79)
    at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
    at java.util.concurrent.FutureTask.run(FutureTask.java:138)
    at 
org.apache.aries.blueprint.di.AbstractRecipe.create(AbstractRecipe.java:88)
    at 
org.apache.aries.blueprint.container.BlueprintRepository.createInstances(BlueprintRepository.java:245)
    at 
org.apache.aries.blueprint.container.BlueprintRepository.createAll(BlueprintRepository.java:183)
    at 
org.apache.aries.blueprint.container.BlueprintContainerImpl.instantiateEagerComponents(BlueprintContainerImpl.java:648)
    at 
org.apache.aries.blueprint.container.BlueprintContainerImpl.doRun(BlueprintContainerImpl.java:340)
    at 
org.apache.aries.blueprint.container.BlueprintContainerImpl.run(BlueprintContainerImpl.java:242)
    at 
org.apache.aries.blueprint.utils.threading.impl.DiscardableRunnable.run(DiscardableRunnable.java:48)
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:441)
    at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
    at java.util.concurrent.FutureTask.run(FutureTask.java:138)
    at 
java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(ScheduledThreadPoolExecutor.java:98)
    at 
java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:206)
    at 
java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
    at 
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
    at java.lang.Thread.run(Thread.java:662)
Caused by: java.lang.ExceptionInInitializerError
    at 
org.drools.concurrent.ExecutorProviderFactory.getExecutorProvider(ExecutorProviderFactory.java:12)
    at 
org.drools.rule.constraint.MvelConstraint$ExecutorHolder.<clinit>(MvelConstraint.java:208)
    at 
org.drools.rule.constraint.MvelConstraint.jitEvaluator(MvelConstraint.java:199)
    at 
org.drools.rule.constraint.MvelConstraint.evaluate(MvelConstraint.java:164)
    at 
org.drools.rule.constraint.MvelConstraint.isAllowed(MvelConstraint.java:124)
    at org.drools.reteoo.AlphaNode.modifyObject(AlphaNode.java:154)
    at 
org.drools.reteoo.CompositeObjectSinkAdapter.doPropagateModifyObject(CompositeObjectSinkAdapter.java:507)
    at 
org.drools.reteoo.CompositeObjectSinkAdapter.propagateModifyObject(CompositeObjectSinkAdapter.java:432)
    at org.drools.reteoo.ObjectTypeNode.modifyObject(ObjectTypeNode.java:314)
    at org.drools.reteoo.EntryPointNode.modifyObject(EntryPointNode.java:265)
    at org.drools.common.NamedEntryPoint.update(NamedEntryPoint.java:470)
    at org.drools.common.NamedEntryPoint.update(NamedEntryPoint.java:370)
    at 
org.drools.base.DefaultKnowledgeHelper.update(DefaultKnowledgeHelper.java:317)
    at 
org.drools.base.DefaultKnowledgeHelper.update(DefaultKnowledgeHelper.java:312)
    at 
org.foo.jbpm5.drools.rules.pricing.Rule_Pricing_based_on_demand____Used_AUDI_70__of_the_original_price_77e52c0333d54b068cd3bc5e98c79344.defaultConsequence(Rule_Pricing_based_on_demand____Used_AUDI_70__of_the_original_price_77e52c0333d54b068cd3bc5e98c79344.java:8)
    at 
org.foo.jbpm5.drools.rules.pricing.Rule_Pricing_based_on_demand____Used_AUDI_70__of_the_original_price_77e52c0333d54b068cd3bc5e98c79344DefaultConsequenceInvokerGenerated.evaluate(Unknown
 Source)
    at 
org.foo.jbpm5.drools.rules.pricing.Rule_Pricing_based_on_demand____Used_AUDI_70__of_the_original_price_77e52c0333d54b068cd3bc5e98c79344DefaultConsequenceInvoker.evaluate(Unknown
 Source)
    at org.drools.common.DefaultAgenda.fireActivation(DefaultAgenda.java:1273)
    at org.drools.common.DefaultAgenda.fireNextItem(DefaultAgenda.java:1209)
    at org.drools.common.DefaultAgenda.fireAllRules(DefaultAgenda.java:1442)
    at 
org.drools.common.AbstractWorkingMemory.fireAllRules(AbstractWorkingMemory.java:710)
    at 
org.drools.common.AbstractWorkingMemory.fireAllRules(AbstractWorkingMemory.java:674)
    at 
org.drools.impl.StatefulKnowledgeSessionImpl.fireAllRules(StatefulKnowledgeSessionImpl.java:230)
    at 
org.drools.impl.StatelessKnowledgeSessionImpl.execute(StatelessKnowledgeSessionImpl.java:295)
    at 
org.foo.jbpm5.drools.DefineCarPriceWorkItemHandler.executeWorkItem(DefineCarPriceWorkItemHandler.java:24)
    at 
org.drools.process.instance.impl.DefaultWorkItemManager.internalExecuteWorkItem(DefaultWorkItemManager.java:70)
    at 
org.jbpm.workflow.instance.node.WorkItemNodeInstance.internalTrigger(WorkItemNodeInstance.java:105)
    at 
org.jbpm.workflow.instance.impl.NodeInstanceImpl.trigger(NodeInstanceImpl.java:124)
    at 
org.jbpm.workflow.instance.impl.NodeInstanceImpl.triggerNodeInstance(NodeInstanceImpl.java:205)
    at 
org.jbpm.workflow.instance.impl.NodeInstanceImpl.triggerCompleted(NodeInstanceImpl.java:164)
    at 
org.jbpm.workflow.instance.impl.ExtendedNodeInstanceImpl.triggerCompleted(ExtendedNodeInstanceImpl.java:47)
    at 
org.jbpm.workflow.instance.node.StateBasedNodeInstance.triggerCompleted(StateBasedNodeInstance.java:162)
    at 
org.jbpm.workflow.instance.node.StateBasedNodeInstance.triggerCompleted(StateBasedNodeInstance.java:143)
    at 
org.jbpm.workflow.instance.node.WorkItemNodeInstance.triggerCompleted(WorkItemNodeInstance.java:239)
    at 
org.jbpm.workflow.instance.node.WorkItemNodeInstance.workItemCompleted(WorkItemNodeInstance.java:301)
    at 
org.jbpm.workflow.instance.node.WorkItemNodeInstance.signalEvent(WorkItemNodeInstance.java:277)
    at 
org.jbpm.workflow.instance.impl.WorkflowProcessInstanceImpl.signalEvent(WorkflowProcessInstanceImpl.java:326)
    at 
org.drools.process.instance.impl.DefaultWorkItemManager.completeWorkItem(DefaultWorkItemManager.java:116)
    at 
org.foo.jbpm5.drools.RankCarWorkItemHandler.executeWorkItem(RankCarWorkItemHandler.java:27)
    at 
org.drools.process.instance.impl.DefaultWorkItemManager.internalExecuteWorkItem(DefaultWorkItemManager.java:70)
    at 
org.jbpm.workflow.instance.node.WorkItemNodeInstance.internalTrigger(WorkItemNodeInstance.java:105)
    at 
org.jbpm.workflow.instance.impl.NodeInstanceImpl.trigger(NodeInstanceImpl.java:124)
    at 
org.jbpm.workflow.instance.impl.NodeInstanceImpl.triggerNodeInstance(NodeInstanceImpl.java:205)
    at 
org.jbpm.workflow.instance.impl.NodeInstanceImpl.triggerCompleted(NodeInstanceImpl.java:164)
    at 
org.jbpm.workflow.instance.node.StartNodeInstance.triggerCompleted(StartNodeInstance.java:49)
    at 
org.jbpm.workflow.instance.node.StartNodeInstance.internalTrigger(StartNodeInstance.java:41)
    at 
org.jbpm.workflow.instance.impl.NodeInstanceImpl.trigger(NodeInstanceImpl.java:124)
    at 
org.jbpm.ruleflow.instance.RuleFlowProcessInstance.internalStart(RuleFlowProcessInstance.java:35)
    at 
org.jbpm.process.instance.impl.ProcessInstanceImpl.start(ProcessInstanceImpl.java:188)
    at 
org.jbpm.workflow.instance.impl.WorkflowProcessInstanceImpl.start(WorkflowProcessInstanceImpl.java:303)
    at 
org.jbpm.process.instance.ProcessRuntimeImpl.startProcessInstance(ProcessRuntimeImpl.java:168)
    at 
org.drools.common.AbstractWorkingMemory.startProcessInstance(AbstractWorkingMemory.java:1092)
    at 
org.drools.impl.StatefulKnowledgeSessionImpl.startProcessInstance(StatefulKnowledgeSessionImpl.java:330)
    at 
org.foo.jbpm5.example.client.SampleProcessClient.startStatelessDroolsEvaluation(SampleProcessClient.java:59)
    at 
org.foo.jbpm5.example.client.SampleProcessClient.init(SampleProcessClient.java:48)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at 
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at 
org.apache.aries.blueprint.utils.ReflectionUtils.invoke(ReflectionUtils.java:238)
    at 
org.apache.aries.blueprint.container.BeanRecipe.invoke(BeanRecipe.java:954)
    at 
org.apache.aries.blueprint.container.BeanRecipe.runBeanProcInit(BeanRecipe.java:708)
    ... 20 more
Caused by: java.lang.IllegalArgumentException: Unable to instantiate service 
for Class 'org.drools.concurrent.ExecutorProvider'
    at org.drools.util.ServiceRegistryImpl.get(ServiceRegistryImpl.java:162)
    at 
org.drools.concurrent.ExecutorProviderFactory$ExecutorProviderHolder.<clinit>(ExecutorProviderFactory.java:8)
    ... 82 more
Caused by: java.lang.IllegalArgumentException: Unable to instantiate 
'org.drools.concurrent.ExecutorProviderImpl'
    at 
org.drools.util.ServiceRegistryImpl$ReflectionInstantiator.newInstance(ServiceRegistryImpl.java:213)
    at 
org.drools.util.ServiceRegistryImpl$ReflectionInstantiator.call(ServiceRegistryImpl.java:205)
    at org.drools.util.ServiceRegistryImpl.get(ServiceRegistryImpl.java:160)
    ... 83 more
Caused by: java.lang.ClassNotFoundException: 
org.drools.concurrent.ExecutorProviderImpl
    at 
org.eclipse.osgi.internal.loader.BundleLoader.findClassInternal(BundleLoader.java:513)
    at 
org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:429)
    at 
org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:417)
    at 
org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.loadClass(DefaultClassLoader.java:107)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
    at java.lang.Class.forName0(Native Method)
    at java.lang.Class.forName(Class.java:169)
    at 
org.drools.util.ServiceRegistryImpl$ReflectionInstantiator.newInstance(ServiceRegistryImpl.java:210)
    ... 85 more
--------------------------------------------------------------

Reply to this message by going to Community
[https://community.jboss.org/message/758994#758994]

Start a new discussion in jBPM at Community
[https://community.jboss.org/choose-container!input.jspa?contentType=1&containerType=14&container=2034]

_______________________________________________
jboss-user mailing list
[email protected]
https://lists.jboss.org/mailman/listinfo/jboss-user

Reply via email to