1 5 package com.opensymphony.workflow.util.ejb.local; 6 7 import com.opensymphony.workflow.*; 8 import com.opensymphony.workflow.spi.WorkflowEntry; 9 10 import org.apache.commons.logging.Log; 11 import org.apache.commons.logging.LogFactory; 12 13 import java.lang.reflect.Method ; 14 15 import java.util.Map ; 16 17 import javax.ejb.EJBHome ; 18 19 import javax.naming.InitialContext ; 20 21 import javax.rmi.PortableRemoteObject ; 22 23 24 32 public class LocalEJBRegister implements Register { 33 35 private static final Log log = LogFactory.getLog(LocalEJBRegister.class); 36 37 39 public Object registerVariable(WorkflowContext context, WorkflowEntry entry, Map args) throws WorkflowException { 40 String ejbLocation = (String ) args.get(AbstractWorkflow.EJB_LOCATION); 41 Register sessionBean = null; 42 43 try { 44 EJBHome home = (EJBHome ) PortableRemoteObject.narrow(new InitialContext ().lookup(ejbLocation), javax.ejb.EJBHome .class); 45 Method create = home.getClass().getMethod("create", new Class [0]); 46 sessionBean = (Register) create.invoke(home, new Object [0]); 47 } catch (Exception e) { 48 String message = "Could not get handle to local EJB register at: " + ejbLocation; 49 throw new WorkflowException(message, e); 50 } 51 52 return sessionBean.registerVariable(context, entry, args); 53 } 54 } 55 | Popular Tags |