[jboss-user] [JBoss jBPM] - ActionHandler and ClassCastException

aledbf do-not-reply at jboss.com
Sun Jul 15 18:13:19 EDT 2007


Hi, I'm a new user en jbpm and I have one problem executing an Action.
Here is the error

  | DEBUG - JbpmContextInfo            - creating jbpm context with service factories '[tx, message, scheduler, logging, persistence, authentication]'
  | DEBUG - JbpmContext                - creating org.jbpm.JbpmContext at 6018e0
  | DEBUG - bPersistenceServiceFactory - creating persistence service
  | DEBUG - DbPersistenceService       - creating hibernate session
  | DEBUG - DbPersistenceService       - beginning hibernate transaction
  | DEBUG - DbPersistenceService       - begun hibernate transaction org.hibernate.transaction.JTATransaction at 6431f
  | DEBUG - GraphElement               - event 'before-signal' on 'StartState(Solicitar Vacaciones)' for 'Token(/)'
  | DEBUG - GraphElement               - event 'node-leave' on 'StartState(Solicitar Vacaciones)' for 'Token(/)'
  | DEBUG - GraphElement               - event 'transition' on 'Transition(ObtenerDias)' for 'Token(/)'
  | DEBUG - GraphElement               - event 'node-enter' on 'Node(Determinar Dias Disponibles)' for 'Token(/)'
  | DEBUG - GraphElement               - executing action 'action[DeterminarDias]'
  | DEBUG - Token                      - token[2] is locked by token[2]
  | DEBUG - Token                      - token[2] is unlocked by token[2]
  | ERROR - GraphElement               - action threw exception: jbpm.SpringInvocationHandler
  | java.lang.ClassCastException: jbpm.SpringInvocationHandler
  |         at org.jbpm.graph.def.Action.execute(Action.java:121)
  |         at org.jbpm.graph.def.GraphElement.executeAction(GraphElement.java:255)
  |         at org.jbpm.graph.def.GraphElement.executeActions(GraphElement.java:220)
  |         at org.jbpm.graph.def.GraphElement.fireAndPropagateEvent(GraphElement.java:190)
  |         at org.jbpm.graph.def.GraphElement.fireEvent(GraphElement.java:174)
  |         at org.jbpm.graph.def.Node.enter(Node.java:302)
  |         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:585)
  |         at org.hibernate.proxy.pojo.cglib.CGLIBLazyInitializer.invoke(CGLIBLazyInitializer.java:157)
  |         at org.jbpm.graph.def.Node$$EnhancerByCGLIB$$a160d766.enter(<generated>)
  |         at org.jbpm.graph.def.Transition.take(Transition.java:151)
  |         at org.jbpm.graph.def.Node.leave(Node.java:393)
  |         at org.jbpm.graph.node.StartState.leave(StartState.java:70)
  |         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:585)
  |         at org.hibernate.proxy.pojo.cglib.CGLIBLazyInitializer.invoke(CGLIBLazyInitializer.java:157)
  |         at org.jbpm.graph.def.Node$$EnhancerByCGLIB$$a160d766.leave(<generated>)
  |         at org.jbpm.graph.exe.Token.signal(Token.java:194)
  |         at org.jbpm.graph.exe.Token.signal(Token.java:157)
  |         at org.jbpm.jsf.core.action.SignalActionListener.handleAction(SignalActionListener.java:56)
  |         at org.jbpm.jsf.core.impl.JbpmActionListenerWrapper.processAction(JbpmActionListenerWrapper.java:82)
  |         at javax.faces.event.ActionEvent.processListener(ActionEvent.java:77)
  |         at javax.faces.component.UIComponentBase.broadcast(UIComponentBase.java:758)
  |         at javax.faces.component.UICommand.broadcast(UICommand.java:368)
  |         at javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:448)
  |         at javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:752)
  |         at com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:97)
  |         at com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:248)
  |         at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:117)
  |         at javax.faces.webapp.FacesServlet.service(FacesServlet.java:244)
  |         at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
  |         at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
  |         at org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)
  |         at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
  |         at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
  |         at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
  |         at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
  |         at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:175)
  |         at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:524)
  |         at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:74)
  |         at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
  |         at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
  |         at org.jboss.web.tomcat.tc5.jca.CachedConnectionValve.invoke(CachedConnectionValve.java:156)
  |         at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
  |         at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
  |         at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:869)
  |         at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:664)
  |         at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)
  |         at org.apache.tomcat.util.net.MasterSlaveWorkerThread.run(MasterSlaveWorkerThread.java:112)
  |         at java.lang.Thread.run(Thread.java:613)
  | DEBUG - JbpmContext                - closing JbpmContext
  | DEBUG - Services                   - executing default save operations
  | DEBUG - HibernateSaveOperation     - saving process instance
  | DEBUG - SaveLogsOperation          - flushing logs to logging service.
  | DEBUG - CascadeSaveOperation       - cascading save of 'org.jbpm.graph.exe.ProcessInstance at 59fe79'
  | DEBUG - Services                   - closing service 'persistence': org.jbpm.persistence.db.DbPersistenceService at 9e160a
  | DEBUG - DbPersistenceService       - rolling back hibernate transaction
  | DEBUG - DbPersistenceService       - closing hibernate session
  | 

and this is the code of the handler:

  | 
  | 
  | 
  | public class SpringInvocationHandler implements ActionHandler
  | {
  | 
  |     private String oResultVariable;
  | 
  |     private String sWSServiceUrl;
  | 
  |     private String sBeanName;
  | 
  |     private String sExtraParam;
  | 
  |     /**
  |      * @see org.jbpm.graph.def.ActionHandler#execute(org.jbpm.graph.exe.ExecutionContext)
  |      */
  |     public void execute( final ExecutionContext executionContext )
  |     {
  |         try
  |         {
  |             final Map<Object, Object> oProcessParams =
  |                 (Map) executionContext.getProcessInstance().getContextInstance().getVariables();
  | 
  |             if (sExtraParam != null)
  |             {
  |                 String[] aMapContent = sExtraParam.split( "=" );
  |                 if (aMapContent != null && aMapContent.length == 2)
  |                 {
  |                     oProcessParams.put( aMapContent[0], aMapContent[1] );
  |                 }
  |             }
  | 
  |             final String sInstanceId =
  |                 String.valueOf( executionContext.getToken().getId() );
  |             final String sProcessName =
  |                 executionContext.getToken().getNode().getName();
  |             final Service serviceModel =
  |                 new ObjectServiceFactory().create( IWSFrontController.class );
  |             final XFire xfire = XFireFactory.newInstance().getXFire();
  |             final XFireProxyFactory factory = new XFireProxyFactory( xfire );
  | 
  |             try
  |             {
  |                 final IWSFrontController oSpringClient =
  |                     (IWSFrontController) factory.create( serviceModel, sWSServiceUrl );
  |                 final Object oResult =
  |                     oSpringClient.execute( sBeanName, sInstanceId, sProcessName, oProcessParams );
  |                 executionContext.setVariable( oResultVariable, oResult );
  |             } catch (Exception e)
  |             {
  |                 e.printStackTrace();
  |             }
  |         } catch (Exception e)
  |         {
  |             e.printStackTrace();
  |         }
  |     }
  | ...
  | 
  | (plus the getter and setter of the fields).
  | 

I try the config-type field and bean whith the same result.
If I see the source code of Action (line 151) the error belong a manual cast and later execution of the handler. But if I try this:

  |         String sConf =
  |             "<oResultVariable xmlns=\"urn:jbpm.org:jpdl-3.2\">result</oResultVariable><sBeanName xmlns=\"urn:jbpm.org:jpdl-3.2\">remaingTimesvc</sBeanName><sWSServiceUrl xmlns=\"urn:jbpm.org:jpdl-3.2\">http://10.0.0.126:8080/services/WSFrontController</sWSServiceUrl>";
  |         Object o =
  |             new FieldInstantiator().instantiate( jbpm.SpringInvocationHandler.class, sConf );
  |         ActionHandler o1 = (ActionHandler) o;
  | 
works fine.

The jbpm version is 3.2.1.

Any idea?
Thanks in advice.


View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4064376#4064376

Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4064376



More information about the jboss-user mailing list