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