1 Reply Latest reply on Jan 28, 2007 4:05 PM by chipschoch

    ClassNotFoundException loading my ActionHandler

    chipschoch

      Jbpm 3.1.3. Using jbpm.sar in my AS I am trying use Jbpm in my webapp. I created an ActionHandler and assigned it to a transition. I get the following exception:

      2007-01-28 09:15:46,656 ERROR [org.jbpm.instantiation.Delegation] couldn't load delegation class 'com.eLynx.BPM.Handler.ConsentHandler'
      java.lang.ClassNotFoundException: class 'com.eLynx.BPM.Handler.ConsentHandler' could not be found by the process classloader
      at org.jbpm.instantiation.ProcessClassLoader.findClass(ProcessClassLoader.java:67)
      at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
      at java.lang.ClassLoader.loadClass(ClassLoader.java:251)
      at org.jbpm.instantiation.Delegation.instantiate(Delegation.java:140)
      at org.jbpm.instantiation.Delegation.getInstance(Delegation.java:125)
      at org.jbpm.graph.def.Action.execute(Action.java:122)
      at org.jbpm.graph.def.GraphElement.executeAction(GraphElement.java:235)
      at org.jbpm.graph.def.GraphElement.executeActions(GraphElement.java:212)
      at org.jbpm.graph.def.GraphElement.fireAndPropagateEvent(GraphElement.java:182)
      at org.jbpm.graph.def.GraphElement.fireEvent(GraphElement.java:166)
      at org.jbpm.graph.def.Transition.take(Transition.java:106)
      at org.jbpm.graph.def.Node.leave(Node.java:383)
      ...

      My ActionHandler class is in the war file (classpath) of my webapp. Does it need to be in the jbpm.sar deployment? That seems pretty weird. I have my logging configured so that my application logs to its own file and I noticed that this exception logs to the server file, not my app log, which suggests to me that the jbpm service is what is trying to instantiate the class and its classloader knows nothing about this class.

      Is there a way around this. I don't want to have to put every custom action handler in the jbpm.sar. I have existing code that I am trying to wrap with jbpm to get better flexibility in managing process flow. Should I not use jbpm.sar and instead run jbpm embedded in my application in the manner of the simplewebapp example found on wiki? We have several webapps whose functionality we want to bpm enable and that doesn't appear to be the optimal way to approach it.

      Thanks for all input.