วันศุกร์ที่ 9 พฤศจิกายน พ.ศ. 2550

การเรียก Datasource ของ Websphere จาก Java Application

วิธีการเรียกที่ผมเห็นทำได้ 2 แบบน่ะครับ แต่มีแบบนึงไม่แน่ใจว่าเป็นปัญหาของ Websphere หรือเปล่า
ที่ผมลองลองกับ Websphere 6.0, Websphere 6.1 ครับ ควรจะทำบน RAD นะครับ ถึงจะรันได้
1. เรียกโดยใช้ Library ของ Websphere เลยซึ่งวิธีนี้จะอ้าง JNDI Name ได้ตรงๆ เลยครับ

Hashtable env = new Hashtable();
env.put(Context.INITIAL_CONTEXT_FACTORY,"com.ibm.websphere .naming.WsnInitialContextFactory"); // เป็นตัวที่เราใช้ในการเรียก Context ซึ่ง Library จะอยู่ที่ lib ใน RAD น่ะครับ
env.put(Context.PROVIDER_URL, "iiop://localhost:2809/");// IP Address ของ JNDI Name ตัวที่เราเรียก ซึ่งเราสามารถดู Port ได้ที่ Servers --> Application Server แล้วเลือก Server ที่เรามี JDBC อยู่ เสร็จแล้วดู Port (Communications) ว่า BOOTSTRAP_ADDRESS เป็นอันไหนก็ใช้อันนั้นครับ
InitialContext ctx = new InitialContext(env);
DataSource ds = (DataSource) ctx.lookup("jdbc/test");//ชื่อ JNDI Name ที่เราใช้เรียกครับ


2. จะคล้ายวิธีแรกแต่เราใช้ Context มาตรฐานของ Sun เลย (วิธีนี้ผมลองเรียกแล้วมันได้ค่าเป็น NULL น่ะครับ ม่รู้เพราะอะไรเหมือนกัน)

Hashtable env = new Hashtable();
env.put(Context.INITIAL_CONTEXT_FACTORY,"com.sun.jndi .cosnaming.CNCtxFactory"); // เป็นตัวที่เราใช้ในการเรียก Context ซึ่งจะเป็นของ Sun เลย
env.put(Context.PROVIDER_URL, "iiop://localhost:2809/");// IP Address ของ JNDI Name ตัวที่เราเรียก ซึ่งเราสามารถดู Port ได้ที่ Servers --> Application Server แล้วเลือก Server ที่เรามี JDBC อยู่ เสร็จแล้วดู Port (Communications) ว่า BOOTSTRAP_ADDRESS เป็นอันไหนก็ใช้อันนั้นครับ
InitialContext ctx = new InitialContext(env);
DataSource ds = (DataSource) ctx.lookup("cell/nodes/Node01/servers/server1/jdbc/test"); //ชื่อที่ใช้เรียกจะต่างกับเรียกโดยใช้ของ Websphere โดยเราจะต้องทำการใส่ cell/nodes/<ชื่อ Node>/servers/<ชื่อ Server>/

ปล.
1. ต้องใช้ JRE On Websphere กับ Websphere Runtime ด้วยน่ะครับ
2. ถ้าไปเรียกที่ Server อาจจะต้องดูว่า Server เปิดให้เรียกใช้หรือเปล่าน่ะครับ แต่ถ้าเทสเครื่องตัวเองคืดว่าไม่น่าจะมีปัญหาอะไรครับ

Reference
http://www.webservertalk.com/archive80-2006-4-1481822.html

วิธีการดึงข้อมูลจาก XML อย่างง่ายโดยใช้ Dom4J

เวบของ DOM4J (Entry วิธีการสร้าง XML อย่างง่ายโดยใช้ Dom4J)
จากข้อมูลข้างล่าง เราจะมาแกะ ข้อมูลออกกันว่าจะแกะด้อย่างไรบ้างนะครับ
<?xml version="1.0" encoding="UTF-8">
<Header>
<Parameter1></Parameter1>
<Parameter2>123456</Parameter2>
<Parameter3 total="3"/>
<Parameter4>
<SubParameter>Sub</SubParameter>
</Parameter4>
</Header>

ซึ่งในที่นี้จะสอนวิธีแกะออกมาโดยใช้ DOM4J นะครับ
Document document = DocumentHelper.parseText(xmlResult);//Parser String ที่เป็น XML ให้เป็น Document เพื่อที่เราจะได้ดึงข้อมูลได้
Element rootElement = document.getRootElement();// get Element ออกมาเพื่อจะดึงค่าข้างในมันออกมา
System.out.println("Parameter2 : " + rootElement.elementText("Parameter2")); //เป็นการดึงค่าที่อยู่ใน Parameter2 ออกมาแสดง (ดึงได้เฉพาะ String ถ้าข้างในเป็น Element จะดึงออกมาไม่ได้)
System.out.println("Parameter3 : " + rootElement.element("Parameter3").attributeValue("total")); //ดึงค่าของ total ที่อยู่ใน Parameter3
Element elementParameter4 = rootElement.element("Parameter4"); //ดึง Element ที่อยู่ใน Parameter4
System.out.println("Parameter4 : " + elementParameter4.elementText("SubParameter")); //ดึงค่าเหมือนก่อนหน้านี้ทุกประการ