Archive for June, 2011

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

[javascript] How to get all elements in form

<html>
<head>
<script type="text/javascript">
	function showFormElement(){
		//Get all element from object form
		var els = document.getElementById('sys_form').elements;
		var str = "";
		for(var i = 0; i < els.length; i++){
			str += "type : "+ els[i].type +" name : "+ 
			els[i].name + " id : "+ els[i].id +" value : "+ 
			els[i].value + "\n";
		} 
		alert(str);
	}
</script>
</head>
<body>
<form id="sys_form" name="sys_form" target="#">
	<input type="hidden" name="el_hidden" id="el_hidden" value="I'm hidden" />
	<input type="text" name="el_text" id="el_text" value="I'm text" /><br />
	<select name="el_select" id="el_select">
		<option value="xxx">xxx</option>
	</select><br />
	<input type="checkbox" name="el_checkbox" id="checkbox" checked /><br />
	<input type="radio" name="el_radio" /><br />
	<textarea name="el_textarea" id="el_textarea">I'm textarea</textarea><br />
	<br />
	<input type="button" value="Show Info" onclick="showFormElement();" /> 
</form>
</body>
</html>

หมายเหตุ : ถ้าใช้ jQuery นี่คงสบายกว่านี้

[java]ปัญหาการ การใช้ DateFormat และ setLenient

เนื่องจากต้องการตรวจสอบว่าข้อมูลที่รับมาเป็นข้อมูลวันที่ตามรูปแบบที่กำหนดหรือไม่ เลยจัดแจงเขียน code ดังนี้ เพื่อทำการตรวจสอบ

public static void main(String[] args){
	DateFormat  fmt = new SimpleDateFormat("yyyy/MM/dd", Locale.US);
	try {
		System.out.print(fmt.parse("2011/06/50"));
	} catch (ParseException ex) {
		ex.printStackTrace();
	}
}

ทดลองรันดู โอ้พระเจ้า วันที่ “2011/06/50” กลับถูกต้องไม่ผิดอะไร แสดงผลดังนี้

Wed Jul 20 00:00:00 ICT 2011

ผิดเต็มๆ เลยหาว่าสาเหตุมันคืออะไร จนสุดถ้ายไปพบกับ setLenient
เลยได้รู้ว่าปกติแล้ว จะไม่เข้มงวดในการ parse วันที่ถ้าต้องการให้ตรวจสอบและเข้มงวดต้องกำหนด lenient ดังนี้

	DateFormat  fmt = new SimpleDateFormat("yyyy/MM/dd", Locale.US);
	try {
		fmt.setLenient(false);
		System.out.print(fmt.parse("2011/06/50"));
	} catch (ParseException ex) {
		ex.printStackTrace();
	}

ทดลองรันใหม่ จะได้ผลดังนี้

java.text.ParseException: Unparseable date: "2011/06/50"
        at java.text.DateFormat.parse(DateFormat.java:337)
        at wsews.test.TestEWSWebService.xx(TestEWSWebService.java:57)
        at wsews.test.TestEWSWebService.main(TestEWSWebService.java:25)

แหล่งข้อมูล
setLenient

สถิติจำนวน column ที่มากที่สุดที่พบเจอ

บันทึกไว้เป็นเอกสารหลักฐานหน่อย ในฐานะคนทำงานประสบการณ์น้อย ตั้งแต่ทำงานและเกี่ยวข้องกับการใช้งานฐานข้อมูลและตารางมาอย่างหลีกเลี่ยงไม่ได้ เคยเจอการออกแบบตารางที่มี column มากที่สุดประมาณ 121 column แต่ตอนนี้เจอมากสุดเป็น 486 ถือว่าทำลายสถิติเดิมที่เคยเจอมาจากประสบการณ์ทำงาน

หมายเหตุ : คิดและเข้าใจไปเองว่า สำหรับพวก Datawarehouse คงเป็นเรื่องปกติมาก

Jdeveloper&WebLogic : QTJava.zip was unexpected at this time

เจอปัญหาเกิดตอนรัน Web ที่พัฒนาด้วย Jdeveloper และ WebLogic โดยใช้ Oracle ADF Framework ดังนี้

*** Using port 7101 ***
C:\Users\xxyy\xxx...\bin\startWebLogic.cmd
[waiting for the server to complete its initialization...]
\Java\jre6\lib\ext\QTJava.zip was unexpected at this time.
Process exited.

ตอนแรกคิดว่าเป็นที่ตัว Windows เองหรือเปล่าเพราะผมใช้ Windows 7 64bit และตัว JDK ก็เป็น 64 bit ลองไปตรวจสอบ ตาม path \Java\jre6\lib\ext\ ก็ไม่พบไฟล์ QTJava.zip ลองหาใน path 32 bit ดูก็เจอ เลยทดลองคัดลอกมาไว้ใน path 64 bit แต่ก็ไม่ได้ สุดท้ายต้องพึ่งอาจารย์ google และก็ได้คำตอบสั้นๆ จาก http://forums.oracle.com/forums/thread.jspa?threadID=922895 ทดลองแก้ไขแล้วใช้ได้เลย ถ้าขาดโลก internet ไปนี่ชีวิตโปรแกรม google อย่างผมแย่แน่ๆ