1 /***
2 * JFoxSOAF, Service-Oriented Application Framework
3 *
4 * Copyright (C) www.huihoo.org
5 *
6 * Distributable under GNU LGPL
7 *
8 * For more information, please visit: http://www.huihoo.org/jfox/jfoxsoaf
9 */
10
11 package org.huihoo.jfox.soaf.services.ejb;
12
13 import java.lang.reflect.InvocationTargetException;
14 import java.lang.reflect.Method;
15
16 import javax.ejb.EJBException;
17 import javax.ejb.EJBHome;
18 import javax.ejb.EJBLocalHome;
19
20 import org.huihoo.jfox.soaf.exception.ServiceLocatorException;
21
22 /***
23 * <p>
24 * EJBProxyService Implementation.
25 * </p>
26 *
27 * @author <a href="mailto:founder_chen@yahoo.com.cn">Peter Cheng </a>
28 * @version $Revision: 1.2 $ $Date: 2004/11/22 15:19:08 $
29 * @version Revision: 1.0
30 */
31
32 public class EJBProxyServiceImpl implements EJBProxyService {
33
34 private ServiceLocator serviceLocator;
35
36 public EJBProxyServiceImpl(ServiceLocator serviceLocator) {
37 this.serviceLocator = serviceLocator;
38 }
39
40 /***
41 * @see org.huihoo.jfox.soaf.services.ejb.EJBProxyService#getRemoteObject(java.lang.String)
42 */
43 public Object getRemoteObject(String jndiName) throws EJBException {
44 try {
45 EJBHome ejbHome = serviceLocator.getRemoteHome(jndiName,
46 EJBHome.class);
47
48 Method method = ejbHome.getClass().getDeclaredMethod("create",
49 new Class[0]);
50 Object obj = method.invoke(ejbHome, new Object[0]);
51 return obj;
52 } catch (ServiceLocatorException e) {
53 throw new EJBException(e);
54 } catch (SecurityException e) {
55 throw new EJBException(e);
56 } catch (IllegalArgumentException e) {
57 throw new EJBException(e);
58 } catch (NoSuchMethodException e) {
59 throw new EJBException(e);
60 } catch (IllegalAccessException e) {
61 throw new EJBException(e);
62 } catch (InvocationTargetException e) {
63 throw new EJBException(e);
64 }
65 }
66
67 /***
68 * @see org.huihoo.jfox.soaf.services.ejb.EJBProxyService#getLocalObject(java.lang.String)
69 */
70 public Object getLocalObject(String jndiName) throws EJBException {
71 Object obj;
72 try {
73 EJBLocalHome ejbLocalHome = serviceLocator.getLocalHome(jndiName);
74 Method method = ejbLocalHome.getClass().getDeclaredMethod("create",
75 new Class[0]);
76 obj = method.invoke(ejbLocalHome, new Object[0]);
77 return obj;
78 } catch (ServiceLocatorException e) {
79 throw new EJBException(e);
80 } catch (SecurityException e) {
81 throw new EJBException(e);
82 } catch (IllegalArgumentException e) {
83 throw new EJBException(e);
84 } catch (NoSuchMethodException e) {
85 throw new EJBException(e);
86 } catch (IllegalAccessException e) {
87 throw new EJBException(e);
88 } catch (InvocationTargetException e) {
89 throw new EJBException(e);
90 }
91 }
92
93 }