KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > opensymphony > workflow > util > ejb > remote > RemoteEJBRegister


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

5 package com.opensymphony.workflow.util.ejb.remote;
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.rmi.RemoteException JavaDoc;
16
17 import java.util.Map JavaDoc;
18
19 import javax.ejb.EJBHome JavaDoc;
20
21 import javax.naming.InitialContext JavaDoc;
22
23 import javax.rmi.PortableRemoteObject JavaDoc;
24
25
26 /**
27  *
28  *
29  * @author $Author: hani $
30  * @version $Revision: 1.2 $
31  */

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

35     private static final Log log = LogFactory.getLog(RemoteEJBRegister.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         RegisterRemote 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 = (RegisterRemote) create.invoke(home, new Object JavaDoc[0]);
47         } catch (Exception JavaDoc e) {
48             String JavaDoc message = "Could not get handle to remote EJB register at: " + ejbLocation;
49             throw new WorkflowException(message, e);
50         }
51
52         try {
53             return sessionBean.registerVariable(context, entry, args);
54         } catch (RemoteException JavaDoc e) {
55             String JavaDoc message = "Remote exception while executing remote EJB register: " + ejbLocation;
56             log.error(message, e);
57             throw new WorkflowException(message, e);
58         }
59     }
60 }
61
Popular Tags