1
2
3
4
5
6
7
8
9
10
11 package org.mule.transport.ejb;
12
13 import org.mule.api.endpoint.ImmutableEndpoint;
14 import org.mule.transport.rmi.RmiConnector;
15 import org.mule.util.ClassUtils;
16
17 import java.lang.reflect.Method;
18 import java.net.UnknownHostException;
19 import java.rmi.Remote;
20 import java.rmi.RemoteException;
21
22 import javax.ejb.EJBObject;
23
24
25
26
27
28 public class EjbConnector extends RmiConnector
29 {
30 public static final String EJB = "ejb";
31
32
33 public static final int EJB_SERVICECLASS_INVOCATION_FAILED = 2;
34
35 public String getProtocol()
36 {
37 return EJB;
38 }
39
40 public Remote getRemoteObject(ImmutableEndpoint endpoint) throws RemoteException, UnknownHostException
41 {
42 EJBObject remoteObj;
43
44 try
45 {
46 Object ref = getRemoteRef(endpoint);
47
48 Method method = ClassUtils.getMethod(ref.getClass(), "create", null);
49
50 remoteObj = (EJBObject)method.invoke(ref, ClassUtils.NO_ARGS);
51 }
52 catch (Exception e)
53 {
54 throw new RemoteException("Remote EJBObject lookup failed for '" + endpoint.getEndpointURI(), e);
55 }
56
57 return remoteObj;
58 }
59 }