How to set the client timeout for a JAX-WS/JMS client

1. WS Client Timeout

Calling the web service in Jboss EAP 6, the following error occurs:

Invoke has thrown exception, unwinding now: org.apache.cxf.interceptor.Fault: Could not send Message

java.net.SocketTimeoutException: Read timed out

 

Calling WS has two timeout parameters:

  • ConnectionTimeout

Specifies the amount of time, in milliseconds, that the client will attempt to establish a connection before it times out. The default is 30000 (30 seconds). 0 specifies that the client will continue to attempt to open a connection indefinitely.

 

  • ReceiveTimeout

Specifies the amount of time, in milliseconds, that the client will wait for a response before it times out. The default is 60000. 0 specifies that the client will wait indefinitely.

 

In Java code it can be set as follows:

 

QName serviceName = new QName("namespaceURI", "serviceName");
QName portName = new QName("namespaceURI", "port");
Service service = Service.create("wsdl", serviceName);

Dispatch<SOAPMessage> dispatch = service.createDispatch(portName, SOAPMessage.class, Service.Mode.MESSAGE);
dispatch.getRequestContext().put("javax.xml.ws.client.connectionTimeout", 3 * 60 * 1000);
dispatch.getRequestContext().put("javax.xml.ws.client.receiveTimeout", 5 * 60 * 1000);
SOAPMessage response = dispatch.invoke(msg);

 

2. JMS Client Timeout

Got an error while processing JMS: Failed to connect to any server. Servers tried: Operation failed with status WAITING after 5000 MILLISECONDS

Properties props = new Properties();

// timeout is in milli. seconds. Here we configure a 10 second timeout

props.put("jboss.naming.client.connect.timeout", "10000");

Context context = new InitialContext(props);

 

Guess you like

Origin http://43.154.161.224:23101/article/api/json?id=326442032&siteId=291194637