• Post Reply
  • Bookmark Topic Watch Topic
  • New Topic

Dynamically set RMI Timeout from client

 
Saurabh. Arora
Greenhorn
Posts: 4
Eclipse IDE Firefox Browser Mac
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Hi,

I am stuck with following RMI timeout problem and need urgent help,

1) Is there any way for configuring dynamically different RMI timeout values at RMI client depending upon some criteria.
2) Is there any way to override "sun.rmi.transport.tcp.responseTimeout" value at RMI client depending upon some criteria.


I tried below ways, but none of them worked. Is there any genius who can let me out of this problem.

1) I tried setting "sun.rmi.transport.tcp.responseTimeout" dynamically, but it only accept values that is set very first time.
System.getProperties().setProperty("sun.rmi.transport.tcp.responseTimeout",
rmiTimeout);

2) To override system properties dynamically, I tried way as below but that did not work
FileInputStream propFile = new FileInputStream("myProperties.txt");
Properties p = new Properties(System.getProperties());p.load(propFile);
p.setProperty("sun.rmi.transport.tcp.responseTimeout",rmiTimeout); System.setProperties(p);

3) I created rmiclientSocketFactory and pass it to LocateRegistry.getRegistry … but that did not work.
GUIClientSocketFactory guiClientSocketFactory = new GUIClientSocketFactory(Integer.parseInt(rmiTimeout));
public Socket createSocket(String host, int port) throws IOException {
Socket socket = new Socket(host, port);
socket.setSoTimeout(timeout);
return socket;
}
Registry reg = LocateRegistry. getRegistry(props.getProperty("rmiIpAddress"), (new Integer(props.getProperty("rmiPort"))) .intValue(),guiClientSocketFactory);

Any help will be extremely appreciated.

Thanks.
 
roshan sinha
Greenhorn
Posts: 13
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator

RMISocketFactory.setSocketFactory(new RMISocketFactory()
{
public Socket createSocket(String host, int port) throws IOException {
Socket socket = new Socket(host, port);
socket.setSoTimeout(timeoutMillis);
socket.setSoLinger(false, 0);
return socket;
}
public ServerSocket createServerSocket(int port) throws IOException {
return new ServerSocket(port);
}
});


you can try this.
 
  • Post Reply
  • Bookmark Topic Watch Topic
  • New Topic