KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > opensymphony > workflow > util > ejb > local > LocalEJBRegister


1 /*
2  * Copyright (c) 2002-2003 by OpenSymphony
3  * All rights reserved.
4  */

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 JavaDoc;
14
15 import java.util.Map JavaDoc;
16
17 import javax.ejb.EJBHome JavaDoc;
18
19 import javax.naming.InitialContext JavaDoc;
20
21 import javax.rmi.PortableRemoteObject JavaDoc;
22
23
24 /**
25  * A register helper that exposes a local session bean as a register.
26  * This register takes in one argument, <code>ejb.location</code> that specifies
27  * the JNDI location of the session bean.
28  *
29  * @author $Author: hani $
30  * @version $Revision: 1.3 $
31  */

32 public class LocalEJBRegister implements Register {
33     //~ Static fields/initializers /////////////////////////////////////////////
34

35     private static final Log log = LogFactory.getLog(LocalEJBRegister.class);
36
37     //~ Methods ////////////////////////////////////////////////////////////////
38

39     public Object JavaDoc registerVariable(WorkflowContext context, WorkflowEntry entry, Map JavaDoc args) throws WorkflowException {
40         String JavaDoc ejbLocation = (String JavaDoc) args.get(AbstractWorkflow.EJB_LOCATION);
41         Register sessionBean = null;
42
43         try {
44             EJBHome JavaDoc home = (EJBHome JavaDoc) PortableRemoteObject.narrow(new InitialContext JavaDoc().lookup(ejbLocation), javax.ejb.EJBHome JavaDoc.class);
45             Method JavaDoc create = home.getClass().getMethod("create", new Class JavaDoc[0]);
46             sessionBean = (Register) create.invoke(home, new Object JavaDoc[0]);
47         } catch (Exception JavaDoc e) {
48             String JavaDoc 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