<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<body link="#355491" alink="#4262a1" vlink="#355491" style="background: #e2e2e2; margin: 0; padding: 20px;">
<div>
        <table cellpadding="0" bgcolor="#FFFFFF" border="0" cellspacing="0" style="border: 1px solid #dadada; margin-bottom: 30px; width: 100%; -moz-border-radius: 6px; -webkit-border-radius: 6px;">
                <tbody>
                        <tr>
                                <td>
                                        <table border="0" cellpadding="0" cellspacing="0" bgcolor="#FFFFFF" style="border: solid 2px #ccc; background: #dadada; width: 100%; -moz-border-radius: 6px; -webkit-border-radius: 6px;">
                                                <tbody>
                                                        <tr>
                                                                <td bgcolor="#000000" valign="middle" height="58px" style="border-bottom: 1px solid #ccc; padding: 20px; -moz-border-radius-topleft: 3px; -moz-border-radius-topright: 3px; -webkit-border-top-right-radius: 5px; -webkit-border-top-left-radius: 5px;">
                                                                        <h1 style="color: #333333; font: bold 22px Arial, Helvetica, sans-serif; margin: 0; display: block !important;">
                                                                        <!-- To have a header image/logo replace the name below with your img tag -->
                                                                        <!-- Email clients will render the images when the message is read so any image -->
                                                                        <!-- must be made available on a public server, so that all recipients can load the image. -->
                                                                        <a href="https://community.jboss.org/index.jspa" style="text-decoration: none; color: #E1E1E1">JBoss Community</a></h1>
                                                                </td>
                                                        </tr>
                                                        <tr>
                                                                <td bgcolor="#FFFFFF" style="font: normal 12px Arial, Helvetica, sans-serif; color:#333333; padding: 20px; -moz-border-radius-bottomleft: 4px; -moz-border-radius-bottomright: 4px; -webkit-border-bottom-right-radius: 5px; -webkit-border-bottom-left-radius: 5px;"><h3 style="margin: 10px 0 5px; font-size: 17px; font-weight: normal;">
Need help:Class not found when run the JBPM 5.3 progress in Jboss As 7 servertt
</h3>
<span style="margin-bottom: 10px;">
created by <a href="https://community.jboss.org/people/dufeng">du feng</a> in <i>JBoss AS 7 Development</i> - <a href="https://community.jboss.org/message/763572#763572">View the full discussion</a>
</span>
<hr style="margin: 20px 0; border: none; background-color: #dadada; height: 1px;">
<div class="jive-rendered-content"><p><span style="font-family: georgia, palatino;">I have designed a workflow process with JBPM 5.3 eclipse designer and planed to start this workflow in the session bean which was deployed in the Jboss 7.1.1 server.</span></p><p><span style="font-family: georgia, palatino;">The client application use JNDI to find the session bean and invoke the methods with the interface but the Jboss server can't find the JBPM related classes "org.drools.builder.KnowledgeBuilderFactory".</span></p><p><span style="font-family: georgia, palatino;">Should I add the JBPM as a extension module to Jboss server? or there is another way to configure the runtime enviorment in Jboss server to find the JBPM API class?Please give some gudiences on that. Thanks a lot.</span></p><p><span style="font-family: georgia, palatino;">The following is the soruce code and the reporting error from Jboss server.</span></p><p style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><p>//Remote interface</p><p style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><p>public interface SFWorkFlowOperation {</p><p>  </p><p>          public boolean startWorkFlow(String WorkFlowBpmnName,String processID);</p><p>  </p><p>          public void setWorkFlowTimer(int timeInterval);</p><p>}</p><p style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><p>//Stateless Session Bean which use the JBPM to start the special workflow instance.</p><p style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><p>import javax.ejb.Stateless;</p><p>import javax.ejb.Remote; </p><p>import org.drools.KnowledgeBase;</p><p>import org.drools.builder.KnowledgeBuilder;</p><p>import org.drools.builder.KnowledgeBuilderFactory;</p><p>import org.drools.builder.ResourceType;</p><p>import org.drools.io.ResourceFactory;</p><p>import org.drools.runtime.StatefulKnowledgeSession;</p><p style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><p>@Stateless</p><p>@Remote(SFWorkFlowOperation.class)</p><p>public class SFWorkFlowOperationBean implements SFWorkFlowOperation {</p><p style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><p style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><p>          public boolean startWorkFlow(String WorkFlowBpmnName, String processID) { </p><p>                    KnowledgeBase kbase;</p><p>                    KnowledgeBuilder kbuilder;</p><p>                    try {</p><p>                              // load up the knowledge base</p><p>                              kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();</p><p>                              kbuilder.add(ResourceFactory.newClassPathResource(WorkFlowBpmnName),</p><p>                                                  ResourceType.BPMN2);</p><p>                              kbase = kbuilder.newKnowledgeBase();</p><p>                              StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();</p><p>                              // start a new process instance</p><p>                              ksession.startProcess(processID);</p><p>                    } catch (Exception e) {</p><p>                              e.printStackTrace();</p><p>                              return false;</p><p>                    }</p><p>                    return true;</p><p>          }</p><p>  </p><p>          public void setWorkFlowTimer(int timeInterval){</p><p>                    System.out.println("Set Timer Successfully!"+timeInterval);</p><p>          }</p><p>}</p><p style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><p>//After deployed in the standalone Jboss server ,test main function to use the JNDI to look up the SFWorkFlowOperationBean to start the workflow</p><p>//There will be a error:</p><p style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><p>public class WorkFlowMain {</p><p>          public static final void main(String[] args) throws Exception {</p><p>                    final String BPMNNAME = "ImageFormatConversion.bpmn";</p><p>                    final String PROCESSID = "com.astrium.sfv01.imageconversion";</p><p>  </p><p>                    final String INIT_FACTORY = "org.jboss.naming.remote.client.InitialContextFactory";</p><p>                    final String SERVER_URL = "remote://localhost:4447";</p><p>                    final String USERNAME = "dufeng";// Application Realm Authorization should be added user with adduser.sh</p><p>                    final String PASSWORD = "dufeng82";</p><p>                    Context context = null;</p><p>                    try {</p><p>                              Properties envset = new Properties();</p><p>                              envset.put(Context.INITIAL_CONTEXT_FACTORY, INIT_FACTORY);</p><p>                              envset.put(Context.PROVIDER_URL, SERVER_URL);</p><p>                              envset.put(Context.SECURITY_PRINCIPAL, USERNAME);</p><p>                              envset.put(Context.SECURITY_CREDENTIALS, PASSWORD);</p><p>                              envset.put("jboss.naming.client.ejb.context", true);</p><p>                              context = new InitialContext(envset);</p><p>                    } catch (NamingException e) {</p><p>                              e.printStackTrace();</p><p>                    }</p><p>                    SFWorkFlowOperation workflow = (SFWorkFlowOperation) context</p><p>                                        .lookup("SFWorkFlow/SFWorkFlowOperationBean!com.astrium.sfv01.wamf.SFWorkFlowOperation");</p><p>                    workflow.startWorkFlow(BPMNNAME, PROCESSID);</p><p>          }</p><p>}</p><p style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><p>//Jboss error reporting:</p><p style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><p>Exception in thread "main" javax.ejb.EJBException: Unexpected Error</p><p>          at org.jboss.as.ejb3.tx.CMTTxInterceptor.handleExceptionInOurTx(CMTTxInterceptor.java:163)</p><p>          at org.jboss.as.ejb3.tx.CMTTxInterceptor.invokeInOurTx(CMTTxInterceptor.java:230)</p><p>          at org.jboss.as.ejb3.tx.CMTTxInterceptor.required(CMTTxInterceptor.java:304)</p><p>          at org.jboss.as.ejb3.tx.CMTTxInterceptor.processInvocation(CMTTxInterceptor.java:190)</p><p>          at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288)</p><p>          at org.jboss.as.ejb3.remote.EJBRemoteTransactionPropagatingInterceptor.processInvocation(EJBRemoteTransactionPropagatingInterceptor.java:80)</p><p>          at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288)</p><p>          at org.jboss.as.ejb3.component.interceptors.CurrentInvocationContextInterceptor.processInvocation(CurrentInvocationContextInterceptor.java:41)</p><p>          at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288)</p><p>          at org.jboss.as.ejb3.component.interceptors.LoggingInterceptor.processInvocation(LoggingInterceptor.java:59)</p><p>          at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288)</p><p>          at org.jboss.as.ee.component.NamespaceContextInterceptor.processInvocation(NamespaceContextInterceptor.java:50)</p><p>          at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288)</p><p>          at org.jboss.as.ejb3.component.interceptors.AdditionalSetupInterceptor.processInvocation(AdditionalSetupInterceptor.java:43)</p><p>          at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288)</p><p>          at org.jboss.as.ee.component.TCCLInterceptor.processInvocation(TCCLInterceptor.java:45)</p><p>          at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288)</p><p>          at org.jboss.invocation.ChainedInterceptor.processInvocation(ChainedInterceptor.java:61)</p><p>          at org.jboss.as.ee.component.ViewService$View.invoke(ViewService.java:165)</p><p>          at org.jboss.as.ejb3.remote.protocol.versionone.MethodInvocationMessageHandler.invokeMethod(MethodInvocationMessageHandler.java:302)</p><p>          at org.jboss.as.ejb3.remote.protocol.versionone.MethodInvocationMessageHandler.access$200(MethodInvocationMessageHandler.java:64)</p><p>          at org.jboss.as.ejb3.remote.protocol.versionone.MethodInvocationMessageHandler$1.run(MethodInvocationMessageHandler.java:196)</p><p>          at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:441)</p><p>          at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)</p><p>          at java.util.concurrent.FutureTask.run(FutureTask.java:138)</p><p>          at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)</p><p>          at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)</p><p>          at java.lang.Thread.run(Thread.java:662)</p><p>          at org.jboss.threads.JBossThread.run(JBossThread.java:122)</p><p>          at ...asynchronous invocation...(Unknown Source)</p><p>          at org.jboss.ejb.client.remoting.InvocationExceptionResponseHandler$MethodInvocationExceptionResultProducer.getResult(InvocationExceptionResponseHandler.java:99)</p><p>          at org.jboss.ejb.client.EJBClientInvocationContext.getResult(EJBClientInvocationContext.java:270)</p><p>          at org.jboss.ejb.client.TransactionInterceptor.handleInvocationResult(TransactionInterceptor.java:47)</p><p>          at org.jboss.ejb.client.EJBClientInvocationContext.getResult(EJBClientInvocationContext.java:272)</p><p>          at org.jboss.ejb.client.ReceiverInterceptor.handleInvocationResult(ReceiverInterceptor.java:132)</p><p>          at org.jboss.ejb.client.EJBClientInvocationContext.getResult(EJBClientInvocationContext.java:260)</p><p>          at org.jboss.ejb.client.EJBClientInvocationContext.awaitResponse(EJBClientInvocationContext.java:399)</p><p>          at org.jboss.ejb.client.EJBInvocationHandler.doInvoke(EJBInvocationHandler.java:140)</p><p>          at org.jboss.ejb.client.EJBInvocationHandler.doInvoke(EJBInvocationHandler.java:121)</p><p>          at org.jboss.ejb.client.EJBInvocationHandler.invoke(EJBInvocationHandler.java:104)</p><p>          at $Proxy0.startWorkFlow(Unknown Source)</p><p>          at com.astrium.sfv01.wamf.WorkFlowMain.main(WorkFlowMain.java:46)</p><p>Caused by: java.lang.NoClassDefFoundError: org/drools/builder/KnowledgeBuilderFactory</p><p>          at com.astrium.sfv01.impl.SFWorkFlowOperationBean.startWorkFlow(SFWorkFlowOperationBean.java:24)</p><p>          at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)</p><p>          at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)</p><p>          at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)</p><p>          at java.lang.reflect.Method.invoke(Method.java:597)</p><p>          at org.jboss.as.ee.component.ManagedReferenceMethodInterceptorFactory$ManagedReferenceMethodInterceptor.processInvocation(ManagedReferenceMethodInterceptorFactory.java:72)</p><p>          at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288)</p><p>          at org.jboss.invocation.WeavedInterceptor.processInvocation(WeavedInterceptor.java:53)</p><p>          at org.jboss.as.ee.component.interceptors.UserInterceptorFactory$1.processInvocation(UserInterceptorFactory.java:36)</p><p>          at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288)</p><p>          at org.jboss.as.jpa.interceptor.SBInvocationInterceptor.processInvocation(SBInvocationInterceptor.java:47)</p><p>          at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288)</p><p>          at org.jboss.invocation.InitialInterceptor.processInvocation(InitialInterceptor.java:21)</p><p>          at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288)</p><p>          at org.jboss.invocation.ChainedInterceptor.processInvocation(ChainedInterceptor.java:61)</p><p>          at org.jboss.as.ee.component.interceptors.ComponentDispatcherInterceptor.processInvocation(ComponentDispatcherInterceptor.java:53)</p><p>          at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288)</p><p>          at org.jboss.as.ejb3.component.pool.PooledInstanceInterceptor.processInvocation(PooledInstanceInterceptor.java:51)</p><p>          at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288)</p><p>          at org.jboss.as.ejb3.tx.CMTTxInterceptor.invokeInOurTx(CMTTxInterceptor.java:228)</p><p>          at org.jboss.as.ejb3.tx.CMTTxInterceptor.required(CMTTxInterceptor.java:304)</p><p>          at org.jboss.as.ejb3.tx.CMTTxInterceptor.processInvocation(CMTTxInterceptor.java:190)</p><p>          at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288)</p><p>          at org.jboss.as.ejb3.remote.EJBRemoteTransactionPropagatingInterceptor.processInvocation(EJBRemoteTransactionPropagatingInterceptor.java:80)</p><p>          at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288)</p><p>          at org.jboss.as.ejb3.component.interceptors.CurrentInvocationContextInterceptor.processInvocation(CurrentInvocationContextInterceptor.java:41)</p><p>          at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288)</p><p>          at org.jboss.as.ejb3.component.interceptors.LoggingInterceptor.processInvocation(LoggingInterceptor.java:59)</p><p>          at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288)</p><p>          at org.jboss.as.ee.component.NamespaceContextInterceptor.processInvocation(NamespaceContextInterceptor.java:50)</p><p>          at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288)</p><p>          at org.jboss.as.ejb3.component.interceptors.AdditionalSetupInterceptor.processInvocation(AdditionalSetupInterceptor.java:43)</p><p>          at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288)</p><p>          at org.jboss.as.ee.component.TCCLInterceptor.processInvocation(TCCLInterceptor.java:45)</p><p>          at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288)</p><p>          at org.jboss.invocation.ChainedInterceptor.processInvocation(ChainedInterceptor.java:61)</p><p>          at org.jboss.as.ee.component.ViewService$View.invoke(ViewService.java:165)</p><p>          at org.jboss.as.ejb3.remote.protocol.versionone.MethodInvocationMessageHandler.invokeMethod(MethodInvocationMessageHandler.java:302)</p><p>          at org.jboss.as.ejb3.remote.protocol.versionone.MethodInvocationMessageHandler.access$200(MethodInvocationMessageHandler.java:64)</p><p>          at org.jboss.as.ejb3.remote.protocol.versionone.MethodInvocationMessageHandler$1.run(MethodInvocationMessageHandler.java:196)</p><p>          at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:441)</p><p>          at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)</p><p>          at java.util.concurrent.FutureTask.run(FutureTask.java:138)</p><p>          at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)</p><p>          at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)</p><p>          at java.lang.Thread.run(Thread.java:662)</p><p>          at org.jboss.threads.JBossThread.run(JBossThread.java:122)</p><p>Caused by: java.lang.ClassNotFoundException: org.drools.builder.KnowledgeBuilderFactory from [Module "deployment.SFWorkFlow.jar:main" from Service Module Loader]</p><p>          at org.jboss.modules.ModuleClassLoader.findClass(ModuleClassLoader.java:190)</p><p>          at org.jboss.modules.ConcurrentClassLoader.performLoadClassUnchecked(ConcurrentClassLoader.java:468)</p><p>          at org.jboss.modules.ConcurrentClassLoader.performLoadClassChecked(ConcurrentClassLoader.java:456)</p><p>          at org.jboss.modules.ConcurrentClassLoader.performLoadClassChecked(ConcurrentClassLoader.java:423)</p><p>          at org.jboss.modules.ConcurrentClassLoader.performLoadClass(ConcurrentClassLoader.java:398)</p><p>          at org.jboss.modules.ConcurrentClassLoader.loadClass(ConcurrentClassLoader.java:120)</p><p>          ... 47 more</p><p>1    06/10 21:48:15,028[Remoting "config-based-naming-client-endpoint" task-1] ERROR protocol.v1.RemoteNamingStoreV1.handleEnd  - Channel end notification received, closing channel Channel ID c1a937ea (outbound) of Remoting connection 3d358f03 to localhost/127.0.0.1:4447</p></div>
<div style="background-color: #f4f4f4; padding: 10px; margin-top: 20px;">
<p style="margin: 0;">Reply to this message by <a href="https://community.jboss.org/message/763572#763572">going to Community</a></p>
        <p style="margin: 0;">Start a new discussion in JBoss AS 7 Development at <a href="https://community.jboss.org/choose-container!input.jspa?contentType=1&containerType=14&container=2225">Community</a></p>
</div></td>
</tr>
</tbody>
</table>
</td>
</tr>
</tbody>
</table>
</div>
</body>
</html>