[jboss-user] [jBPM Users] - Process archive classes:ClassNotFoundException

jbosspnet do-not-reply at jboss.com
Fri Oct 9 04:31:25 EDT 2009


Hi all,
I have installed JBpm 3.2.3 on JBoss 4.2.3.GA and I have created the following simple process:

<?xml version="1.0" encoding="UTF-8"?>
  | <process-definition  xmlns="urn:jbpm.org:jpdl-3.2"   name="sample">
  | 	<start-state name="start">
  | 		<transition to="a-node"></transition>
  | 	</start-state>
  | 
  | 	<node name="a-node">
  | 		<event type="node-enter">
  | 			<action name="node-enter" 
  |                                    class="sample.process.NodeHandler"></action>
  | 		</event>
  | 		<transition to="end"></transition>
  | 	</node>
  | 
  | 	<end-state name="end"></end-state>
  | </process-definition>

where NodeHandler is the delegation class where I need to invoke an EJB method (the EJB is already deployed in JBoss):

public class NodeHandler implements ActionHandler {
  | 	private static final String MANAGER_HOME_JNDI = "ejb/Manager";
  | 		
  | 	@Override
  | 	public void execute(ExecutionContext context) throws Exception {
  | 		Properties env = new Properties();
  | 		// ... setting Context.INITIAL_CONTEXT_FACTORY, Context.PROVIDER_URL, Context.URL_PKG_PREFIXES ...
  | 		
  | 		InitialContext context = null;
  | 		try { 
  | 			context = new InitialContext(env);
  | 	        Object homeObject = context.lookup(Constants.MANAGER_HOME_JNDI);
  | 	        ManagerHome home = (ManagerHome) PortableRemoteObject.narrow(homeObject, ManagerHome.class);
  | 	        Manager manager = home.create();
  | 	        // ... invoking manager business methods...
  |         } finally {
  |         	if (context != null) {
  |         		try {
  |         			context.close();
  |         		} catch (Exception e) {
  | 					// ignored
  |         		}
  |         	}
  |         }
  | 	}
  | }
  | 
In the process archive are present all needed classes like NodeHandler and, of course, the home / remote interfaces of the EJB. The directory structure is the following:
	
sample.par
  | 	|
  | 	+- processdefinition.xml
  | 	+- gpd.xml
  | 	+- processimage.jpg
  | 	|
  | 	+ classes
  | 		+- sample
  | 			 +- manager
  | 				+-- intefaces
  | 					+-- Manager.class          // EJB Remote Interface
  | 					+-- ManagerHome.class  // EJB Home Interface
  | 			 +- process
  | 			    +-- NodeHandler.class
  | 
I deploy this process archive into Jbpm by the console without any warning or errors. But when I create a process instance and I signal the instance (to move from "start" node to "a-node") I obtain the exception reported at the end.
		
I have looked into JBPM_BYTEARRAY / JBPM_BYTEBLOCK tables and there is a row that refers to class ManagerHome.

So why Jbpm cannot find them? 

There is some other way to use an EJB into Jbpm action delegation classes?  

Regards.


javax.naming.CommunicationException [Root exception is java.lang.ClassNotFoundException: sample.manager.interfaces.ManagerHome (no security manager: RMI class loader disabled)]
        at org.jnp.interfaces.NamingContext.lookup(NamingContext.java:786)
        at org.jnp.interfaces.NamingContext.lookup(NamingContext.java:627)
        at javax.naming.InitialContext.lookup(InitialContext.java:392)
        at sample.process.sample.NodeHandler.execute(NodeHandler.java:37)
        at org.jbpm.graph.def.Action.execute(Action.java:122)
        at org.jbpm.graph.def.GraphElement.executeAction(GraphElement.java:259)
        at org.jbpm.graph.def.GraphElement.executeActions(GraphElement.java:215)
        at org.jbpm.graph.def.GraphElement.fireAndPropagateEvent(GraphElement.java:185)
        at org.jbpm.graph.def.GraphElement.fireEvent(GraphElement.java:169)
        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:597)
        at org.hibernate.proxy.pojo.javassist.JavassistLazyInitializer.invoke(JavassistLazyInitializer.java:173)
        at org.jbpm.graph.def.Node_$$_javassist_80.enter(Node_$$_javassist_80.java)
        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:597)
        at org.hibernate.proxy.pojo.javassist.JavassistLazyInitializer.invoke(JavassistLazyInitializer.java:173)
        at org.jbpm.graph.def.Node_$$_javassist_80.leave(Node_$$_javassist_80.java)
        at org.jbpm.graph.exe.Token.signal(Token.java:192)
        at org.jbpm.graph.exe.Token.signal(Token.java:140)
        at org.jbpm.jsf.core.action.SignalActionListener.handleAction(SignalActionListener.java:52)
        at org.jbpm.jsf.core.impl.JbpmActionListenerWrapper.processAction(JbpmActionListenerWrapper.java:82)
        at javax.faces.event.ActionEvent.processListener(ActionEvent.java:88)
        at javax.faces.component.UIComponentBase.broadcast(UIComponentBase.java:771)
        at javax.faces.component.UICommand.broadcast(UICommand.java:372)
        at javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:475)
        at javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:755)
        at com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:82)
        at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:100)
        at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118)
        at javax.faces.webapp.FacesServlet.service(FacesServlet.java:265)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
        at org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)
        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:230)
        at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
        at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:182)
        at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:524)
        at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:84)
        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
        at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
        at org.jboss.web.tomcat.service.jca.CachedConnectionValve.invoke(CachedConnectionValve.java:157)
        at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
        at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:262)
        at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
        at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
        at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:446)
        at java.lang.Thread.run(Thread.java:619)
Caused by: java.lang.ClassNotFoundException: sample.manager.interfaces.PollerManagerHome (no security manager: RMI class loader disabled)
        at sun.rmi.server.LoaderHandler.loadProxyClass(LoaderHandler.java:535)
        at java.rmi.server.RMIClassLoader$2.loadProxyClass(RMIClassLoader.java:628)
        at org.jboss.system.JBossRMIClassLoader.loadProxyClass(JBossRMIClassLoader.java:82)
        at java.rmi.server.RMIClassLoader.loadProxyClass(RMIClassLoader.java:294)
        at sun.rmi.server.MarshalInputStream.resolveProxyClass(MarshalInputStream.java:238)
        at java.io.ObjectInputStream.readProxyDesc(ObjectInputStream.java:1531)
        at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1493)
        at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1732)
        at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1329)
        at java.io.ObjectInputStream.readObject(ObjectInputStream.java:351)
        at java.rmi.MarshalledObject.get(MarshalledObject.java:142)
        at org.jnp.interfaces.MarshalledValuePair.get(MarshalledValuePair.java:72)
        at org.jnp.interfaces.NamingContext.lookup(NamingContext.java:710)
        ... 57 more


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

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



More information about the jboss-user mailing list