วันพฤหัสบดีที่ 3 มิถุนายน พ.ศ. 2553

Tomcat JNDI Datasource:use MySQL [pooling by application server] แบบงงๆ

- ในส่วนของ JNDI ก็สามารถทำได้หลายวิธีก็แล้วแต่ว่าจะให้เป็น Server Pool (ใช้ร่วมกันกับทุก application) หรือ เฉพาะ application pool ซึ่งคล้ายกัน
แต่จะใช้ได้เฉพาะ Application ตัวที่เรา config ไว้เท่านั้น

สำหรับการ config Server pool และ App pool ต่างก้นที่ตำแหน่งการเก็บของ context.xml ซึ่งเป็น config file

#-สำหรับ Server pool แก้ไขไฟล์ context.xml ที่ $TOMCAT_INSTALL_PATH/conf/ อันนี้จะไม่กล่าวถึงครับ


-สำหรับ App pool ให้เพิ่มไฟล์ context.xml ที่ $META-INF/
แก้ไข tag ดังนี้
-สำหรับ App pool ให้เพิ่มไฟล์ context.xml ที่ $META-INF/
แก้ไข tag ดังนี้
<?xml version="1.0" encoding="UTF-8"?>
<Context path="/web-app" docBase="web-app" debug="5" reloadable="true" crossContext="true">
<Resource name="jdbc/Datasource_DBPerson" auth="Container" type="javax.sql.DataSource"
maxActive="100" maxIdle="30" maxWait="10000"
username="root" password="root" driverClassName="com.mysql.jdbc.Driver"
url="jdbc:mysql://localhost:3306/db_person"/>
</Context>


-แก้ไข web.xml ที่ WEB-INF
<resource-ref>
<description>DB Connection</description>
<res-ref-name>jdbc/Datasource_DBPerson</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>

code เรียกใช้งานที่เป็น servlet
Connection m_connection = null;
try
{
String jndi_name = "jdbc/Datasource_DBPerson" ;
// Use JNDI
Context initCtx = new InitialContext();
Context envCtx = (Context) initCtx.lookup("java:comp/env");
DataSource ds = (DataSource) envCtx.lookup(jndi_name);
m_connection = ds.getConnection();
System.out.println("JNDI WORKS!..........") ;
PreparedStatement stmt = m_connection.prepareStatement("select * from person_test" );
ResultSet rs = stmt.executeQuery();
System.out.println( "

Web nerds:

" );
while (rs.next())
{
System.out.println( "

" + rs.getString( "fname" ) +" is a Web Nerd.

" );
}
rs.close();

m_connection.close() ;
}
catch (SQLException se)
{
System.out.println("SQL Error : "+ se.toString());
}
catch (Exception ne)
{
System.out.println("Other Error : "+ ne.toString());
}

อย่าลืมนำ jar (mysql-connector-java-5.0.7-bin.jar สำหรับ mysql 5.0 ขึ้นไป) ไฟล์สำหรับติดต่อ database ไปวางไว้ที่ WEB-INF/lib/
ด้วยน่ะคับ

อ้างอิง: http://gotoknow.org/blog/naidherng/289144


ไม่มีความคิดเห็น:

แสดงความคิดเห็น