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()