Docjar: A Java Source and Docuemnt Enginecom.*    java.*    javax.*    org.*    all    new    plug-in

Quick Search    Search Deep

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  }