2 Replies Latest reply on Jun 27, 2012 9:51 PM by gigazhang

    AsyncMinaHTWorkItemHandler exception

    gigazhang

      AsyncMinaTaskClient client = new AsyncMinaTaskClient();

      boolean connected = client.connect("127.0.0.1", 9123);

       

      AsyncMinaHTWorkItemHandler taskHandler = new AsyncMinaHTWorkItemHandler(ksession);

      taskHandler.setClient(taskClient);

      ksession.getWorkItemManager().registerWorkItemHandler("Human Task", taskHandler);

       

       

      ksession.startProcess(info.getProcessId(), data);

       

       

      throws exception:

       

       

      2012-06-27 18:56:02,146 WARN [org.hibernate.ejb.AbstractEntityManagerImpl] - <Calling joinTransaction() on a non JTA EntityManager>

      2012-06-27 18:56:02,209 ERROR [org.drools.persistence.SingleSessionCommandService] - <Could not commit session>

      org.jbpm.workflow.instance.WorkflowRuntimeException: [com.baison.shop2:13,838 - Self Evaluation:2] -- Already connected. Disconnect first.

          at org.jbpm.workflow.instance.impl.NodeInstanceImpl.trigger(NodeInstanceImpl.java:130)

          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.jbpm.process.instance.ProcessRuntimeImpl.startProcess(ProcessRuntimeImpl.java:138)

          at org.drools.common.AbstractWorkingMemory.startProcess(AbstractWorkingMemory.java:1082)

          at org.drools.impl.StatefulKnowledgeSessionImpl.startProcess(StatefulKnowledgeSessionImpl.java:320)

          at org.drools.command.runtime.process.StartProcessCommand.execute(StartProcessCommand.java:120)

          at org.drools.command.runtime.process.StartProcessCommand.execute(StartProcessCommand.java:39)

          at org.drools.command.impl.DefaultCommandService.execute(DefaultCommandService.java:36)

          at org.drools.persistence.SingleSessionCommandService.execute(SingleSessionCommandService.java:367)

          at org.drools.command.impl.CommandBasedStatefulKnowledgeSession.startProcess(CommandBasedStatefulKnowledgeSession.java:223)

          at com.baison.demo.jbpm.service.TaskProcessServiceImpl.saveProcess(TaskProcessServiceImpl.java:91)

          at com.baison.demo.jbpm.service.TaskProcessServiceImpl.commitProcess(TaskProcessServiceImpl.java:124)

          at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

          at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)

          at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)

          at java.lang.reflect.Method.invoke(Method.java:601)

          at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:318)

          at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:183)

          at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:150)

          at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:110)

          at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)

          at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:202)

          at $Proxy45.commitProcess(Unknown Source)

          at com.baison.demo.jbpm.controller.TaskProcessController.getUserCommitProcess(TaskProcessController.java:80)

          at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

          at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)

          at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)

          at java.lang.reflect.Method.invoke(Method.java:601)

          at org.springframework.web.method.support.InvocableHandlerMethod.invoke(InvocableHandlerMethod.java:212)

          at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:126)

          at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:96)

          at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:617)

          at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:578)

          at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:80)

          at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:900)

          at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:827)

          at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:882)

          at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:789)

          at javax.servlet.http.HttpServlet.service(HttpServlet.java:637)

          at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)

          at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)

          at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)

          at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:88)

          at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)

          at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)

          at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)

          at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)

          at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)

          at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)

          at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)

          at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)

          at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)

          at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:859)

          at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:602)

          at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)

          at java.lang.Thread.run(Thread.java:722)

      Caused by: java.lang.IllegalStateException: Already connected. Disconnect first.

          at org.jbpm.task.service.mina.MinaTaskClientConnector.connect(MinaTaskClientConnector.java:73)

          at org.jbpm.task.service.mina.MinaTaskClientConnector.connect(MinaTaskClientConnector.java:68)

          at org.jbpm.task.service.TaskClient.connect(TaskClient.java:790)

          at org.jbpm.process.workitem.wsht.AsyncGenericHTWorkItemHandler.connect(AsyncGenericHTWorkItemHandler.java:120)

          at org.jbpm.process.workitem.wsht.AsyncGenericHTWorkItemHandler.executeWorkItem(AsyncGenericHTWorkItemHandler.java:147)

          at org.drools.persistence.jpa.processinstance.JPAWorkItemManager.internalExecuteWorkItem(JPAWorkItemManager.java:55)

          at org.jbpm.workflow.instance.node.WorkItemNodeInstance.internalTrigger(WorkItemNodeInstance.java:105)

          at org.jbpm.workflow.instance.impl.NodeInstanceImpl.trigger(NodeInstanceImpl.java:124)

          ... 63 more

      2012-06-27 18:56:02,550 INFO [org.apache.mina.filter.logging.LoggingFilter] - <IDLE>

        • 1. Re: AsyncMinaHTWorkItemHandler exception
          salaboy21

          Yes, that's happening because you are connecting the Task client and the workItem is trying to connect it again.

          Let me review that logic to see if we can avoid duplicate connections.

          If you use two different instances, one for the task client and one for the workItem it should work correctly.

          Remember that you don't want to attach logically the WorkItemHandler lifecycle with your application that is interacting directly with the human task module, usually you end up with two different

          instances of the client, but sharing for testing purposes should be possible.

           

          CHeers

          • 2. Re: AsyncMinaHTWorkItemHandler exception
            gigazhang

            It works well use two different instances of the client.

            But avoid duplicate connections is still very necessary.

             

            Tks