background image

1 package com.ibm.library;
2 import java.lang.reflect.Method;
3 import java.lang.reflect.InvocationTargetException;
4 import java.rmi.RemoteException;
5 import java.util.HashMap;
6 import java.util.Map;
7 import javax.ejb.CreateException;
8 import javax.naming.NamingException;
9 public class LibraryDelegate implements ILibrary {
10   private ILibrary library;
11   private Map availableMethods;
12   public LibraryDelegate() {
13     init();
14   }
15       public void init() {
16         // Look up and obtain our session bean
17         try {
18           LibraryHome libraryHome =
19             (LibraryHome)EJBHomeFactory.getInstance().lookup(
20               "java:comp/env/ejb/LibraryHome", LibraryHome.class);
21           library = libraryHome.create();
22           // Get the methods available for use in proxying
23           availableMethods = new HashMap();
24           Method[] methods = ILibrary.class.getMethods();
25           for (int i=0; i<methods.length; i++) {
26             availableMethods.put(methods[i].getName(),
27               methods[i]);
28           }
29         } catch (NamingException e) {
30           throw new RuntimeException(e);
31         } catch (CreateException e) {
32           throw new RuntimeException(e);
33         } catch (RemoteException e) {
34           throw new RuntimeException(e);
35         }
36       }
37       // All the hard-coded methods are removed
38       public Object
39         invoke(Object proxy, Method method, Object[] args)
40         throws Throwable{
41         try {
42           // See if this is init() or destroy()