wood burning stoves 2.0*
The moose likes Distributed Java and the fly likes Dynamically set RMI Timeout from client Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login


Win a copy of Murach's Java Servlets and JSP this week in the Servlets forum!
JavaRanch » Java Forums » Java » Distributed Java
Bookmark "Dynamically set RMI Timeout from client " Watch "Dynamically set RMI Timeout from client " New topic
Author

Dynamically set RMI Timeout from client

Saurabh. Arora
Greenhorn

Joined: Apr 27, 2011
Posts: 4

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

Joined: Aug 28, 2013
Posts: 12

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.
 
It is sorta covered in the JavaRanch Style Guide.
 
subject: Dynamically set RMI Timeout from client
 
Similar Threads
I want to use java properties from an interface
Server Program - Responding To Post Requests From HTML pg.
org.apache.cxf.interceptor.Fault: Marshalling Error: null
Socket timeouts for RMI
How to put some code in one spot, rather than needing it in multiple classes and methods