วิธีการเรียกที่ผมเห็นทำได้ 2 แบบน่ะครับ แต่มีแบบนึงไม่แน่ใจว่าเป็นปัญหาของ Websphere หรือเปล่า
ที่ผมลองลองกับ Websphere 6.0, Websphere 6.1 ครับ ควรจะทำบน RAD นะครับ ถึงจะรันได้
1. เรียกโดยใช้ Library ของ Websphere เลยซึ่งวิธีนี้จะอ้าง JNDI Name ได้ตรงๆ เลยครับ
2. จะคล้ายวิธีแรกแต่เราใช้ Context มาตรฐานของ Sun เลย (วิธีนี้ผมลองเรียกแล้วมันได้ค่าเป็น NULL น่ะครับ ม่รู้เพราะอะไรเหมือนกัน)
ปล.
1. ต้องใช้ JRE On Websphere กับ Websphere Runtime ด้วยน่ะครับ
2. ถ้าไปเรียกที่ Server อาจจะต้องดูว่า Server เปิดให้เรียกใช้หรือเปล่าน่ะครับ แต่ถ้าเทสเครื่องตัวเองคืดว่าไม่น่าจะมีปัญหาอะไรครับ
Reference
http://www.webservertalk.com/archive80-2006-4-1481822.html
ที่ผมลองลองกับ 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 ที่เราใช้เรียกครับ
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>/
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