Posts Tagged ‘ JAX-RPC

How to set timeout in JAX-RPC Web Service client

การกำหนดค่า Timeout ให้กับ Web Service Client ที่เป็น JAX-RPC นั้นถ้าใช้งานกับ WebSphere ก็ไม่อยากอะไรครับมี method ให้กำหนด Timeout อยู่ในตัว Stub เลยแต่พอมาทำบน Netbean และใช้งานกับ GlassFish Netbean กลับไม่สร้างให้ วุ่นวายพอควร ก็เลยหาวิธีจาก อ.google แล้วพอมีหนทางประมาณนี้
1. สร้าง HttpURLConnection ขึ้นมาเองโดยการ extends HttpClientTransport แล้วทำการ Override method createHttpConnection ดังนี้

package com.secondknow.ws;
import com.sun.xml.rpc.client.http.HttpClientTransport;
import com.sun.xml.rpc.soap.message.SOAPMessageContext;
import java.io.IOException;
import java.net.HttpURLConnection;

/**
 * Example HttpTransport
 * @author Supot Saelao
 * @version 1.0
 */
public class ExampleHttpTransport extends HttpClientTransport{
    private int timeout;

    public ExampleHttpTransport(){
		super();
	}

    public ExampleHttpTransport(int timeout){
        this.timeout = timeout;
    }

    @Override
    protected HttpURLConnection createHttpConnection(String endpoint, SOAPMessageContext context) throws IOException {
        HttpURLConnection httpConn = super.createHttpConnection(endpoint, context);
		//If set tmeout 0 never set timeout
        if(timeout > 0){
            httpConn.setReadTimeout(timeout);
            httpConn.setConnectTimeout(timeout);
        }
        return httpConn;
    }
}

Read more