Hi,
I have been trying to manage timeout on a stateless session bean. I have a
client that is running in eclipse outside of jboss calling in to a running
jboss server. The server then makes another call to a local service. I did this
double hop because I wanted to test the timeout behavior for both remote and
local calls.
The code looks something like this (a combination of pseudo code and real code
used throughout):
client:
record start time
stub = (MyInterface)JBossUtil.find(IP, "MyInterface/remote");
stub.ping("123);
log elapsed time
server:
public String ping(String value) {
try {
return
((EzRezBusinessServiceInterface) JBossUtil.find("localhost",
"MyInterface/local")).ping2(value);
} catch (Exception e) {
e.printStackTrace();
return "error";
}
}
public String ping2(String value) {
for (int i = 0; i < 10; i++) {
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
return value;
}
The find routine that both teh client and server use does the following:
Properties properties = new Properties();
//
properties.put(javax.naming.Context.INITIAL_CONTEXT_FACTORY,
"org.jnp.interfaces.NamingContextFactory");
properties.put(javax.naming.Context.URL_PKG_PREFIXES,
"org.jboss.naming:org.jnp.interfaces");
properties.put(javax.naming.Context.PROVIDER_URL, providerUrl);
properties.put("jnp.disableDiscovery", (disableDiscovery == true) ?
"true" : "false");
properties.put("jnp.timeout", "250"); // connection timeout in
milliseconds
properties.put("jnp.sotimeout", "500"); // socket read timeout in
milliseconds
//
return new InitialContext(properties).lookup(interfaceName);
The behavior is that the client always return in 10 seconds, as determined by
the time taken to execute ping2.
I am trying to figure out how to change the timeout so that I can control this.
I.e., I would like to be able to set something so that the client gets a
timeout exception if the call takes more than 5 seconds.
I have tried setting the socket timeout in jboss-service.xml, and the
transaction timeout in jta-service.xml. In the latter case, I can see some logs
warning about transaction timeouts, but the client still takes 10 seconds to
execute and seems to simply return the ping value rather than any timeout
indications.
Can you help me know what configurations I should change to control the
response time from a service call?
It would be ideal if I could control on individual calls in an interface.
(I.e., ping1 must respond in 5 seconds but ping2 may take 10 seconds), but I
won't be greedy right now. :-)
Thanks,
Harold Williams
View the original post :
http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4012249#4012249
Reply to the post :
http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4012249
_______________________________________________
jboss-user mailing list
[email protected]
https://lists.jboss.org/mailman/listinfo/jboss-user