View Javadoc

1   /*
2    * $Id: FixedHostRmiClientSocketFactory.java 7976 2007-08-21 14:26:13Z dirk.olmes $
3    * --------------------------------------------------------------------------------------
4    * Copyright (c) MuleSource, Inc.  All rights reserved.  http://www.mulesource.com
5    *
6    * The software in this package is published under the terms of the CPAL v1.0
7    * license, a copy of which has been included with this distribution in the
8    * LICENSE.txt file.
9    */
10  
11  package org.mule.management.agents;
12  
13  import org.mule.util.StringUtils;
14  
15  import java.io.IOException;
16  import java.io.Serializable;
17  import java.net.Socket;
18  import java.rmi.server.RMIClientSocketFactory;
19  
20  /**
21   * This implementation will enforce specific overrideHost/ip for RMI calls on multi-NIC servers.
22   * TODO MULE-1440 this should probably be moved into the RMI transport.
23   */
24  public class FixedHostRmiClientSocketFactory implements RMIClientSocketFactory, Serializable
25  {
26      /**
27       * Host to use instead of the default one.
28       */
29      private String overrideHost;
30  
31      /**
32       * Default constructor.
33       */
34      public FixedHostRmiClientSocketFactory ()
35      {
36      }
37  
38      /**
39       * Create a new instance.
40       * @param overrideHost host/ip to enforce
41       */
42      public FixedHostRmiClientSocketFactory (final String overrideHost)
43      {
44          this.overrideHost = overrideHost;
45      }
46  
47      /**
48       * Create a client socket connected to the specified overrideHost and port.
49       *
50       * @param host the host name IGNORED if an override configured
51       * @param port the port number
52       * @return a socket connected to the specified overrideHost and port.
53       * @throws java.io.IOException if an I/O error occurs during socket creation
54       */
55      public Socket createSocket (String host, int port) throws IOException
56      {
57          final String hostToUse = StringUtils.defaultString(overrideHost, host);
58          return new Socket(hostToUse, port);
59      }
60  
61      /**
62       * Getter for property 'overrideHost'.
63       *
64       * @return Value for property 'overrideHost'.
65       */
66      public String getOverrideHost ()
67      {
68          return overrideHost;
69      }
70  
71      /**
72       * Setter for property 'overrideHost'.
73       *
74       * @param overrideHost Value to set for property 'overrideHost'.
75       */
76      public void setOverrideHost (final String overrideHost)
77      {
78          this.overrideHost = overrideHost;
79      }
80  }