Source code: com/mjh/switchrmi/RmiClientInvocationHandler.java
1 //
2 // SwitchRMI Framework
3 // Copyright (c) 2000-2002 by Michael J. Henderson & Associates.
4 //
5 // Michael Henderson
6 // http://switchrmi.sf.net
7 // mailto:mikehenderson@dunelm.org.uk
8 //
9 // This library is free software.
10 //
11 // You may redistribute it and/or modify it under the terms of the GNU
12 // Lesser General Public License as published by the Free Software Foundation.
13 //
14 // Version 2.1 of the license should be included with this distribution in
15 // the file LICENSE, as well as License.html. If the license is not
16 // included with this distribution, you may find a copy at the FSF web
17 // site at 'www.gnu.org' or 'www.fsf.org', or you may write to the
18 // Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139 USA.
19 //
20 // This library is distributed in the hope that it will be useful,
21 // but WITHOUT ANY WARRANTY; without even the implied waranty of
22 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
23 // Lesser General Public License for more details.
24 //
25 // $Id: RmiClientInvocationHandler.java,v 1.1 2002/11/11 22:19:48 mikehenderson Exp $
26 //
27 package com.mjh.switchrmi;
28
29 import java.lang.reflect.Method;
30
31 import java.util.HashMap;
32
33 import javax.naming.*;
34
35 import org.apache.log4j.Logger;
36
37 public class RmiClientInvocationHandler
38 extends RmiInvocationHandlerBase
39 {
40 private static final Logger log =
41 Logger.getLogger(RmiClientInvocationHandler.class.getName());
42 private String targetUrl;
43 private String protocolName;
44 private RmiContext context;
45 private RmiHandler handler;
46 private Context jndiContext;
47
48 public RmiClientInvocationHandler(String url, Class[] intrfaces)
49 {
50 super(intrfaces);
51 targetUrl = url;
52 }
53
54 public RmiClientInvocationHandler(String url, Class[] intrfaces,
55 String protocolName, Context ctx)
56 {
57 this(url, intrfaces);
58 this.protocolName = protocolName;
59 jndiContext = ctx;
60 }
61
62 private void init() throws Exception
63 {
64 context = new RmiContextImpl(false, targetUrl, jndiContext,
65 protocolName);
66 handler = new RmiHandler();
67 }
68
69 public Object rmiInvoke(Object target, Method method, Object[] args)
70 throws Throwable
71 {
72 if (context == null)
73 {
74 init();
75 }
76
77 return handler.clientInvoke(method, args, context);
78 }
79
80 public String toString()
81 {
82 return "RmiClientInvocationHandler(url=" + targetUrl + ")";
83 }
84 }