ตอนนี้ยังมีสิทธิ์เลือกทำในสิ่งที่ชอบก็เลือกซะ พอโตขึ้นก็เลือกไม่ได้แล้ว เพราะต้องทำสิ่งที่ไม่อยากทำด้วยหน้าที่ หรือ ฯลฯ
Wednesday, February 25, 2009
คำคม
หลังจากได้คุยกับอาจารย์เกี่ยวกับงานวิจัยที่กำลังทำอยู่ ก็มีคำคมหลุดมา ชอบมากมาย เลยเอามาโพสเก็บไว้เดี๋ยวจะลืมไปก่อน
Monday, February 16, 2009
ปัญหาการใช้งาน Microsoft SQL Server 2000 ร่วมกับ Java, Tomcat, Spring
การใช้งาน Microsoft SQL Server 2000 ร่วมกับ Java, Tomcat, Spring นั้น ถ้าโปรแกรมของเรามีการเขื่อมต่อฐานข้อมูลโดยใช้ driver ของ microsoft (mssqlserver.jar, msbase.jar และ msutil.jar) ละก็
เตรียมพบกับความผิดพลาดและความไม่มีเสถียรภาพของระบบได้เลย ซึ่งปัญหานี้จะเกิดขึ้นก็ต่อเมื่อ การเชื่อมต่อระหว่าง Tomcat กับ ฐานข้อมูล Microsoft SQL Server 2000 ขาดการเชื่อมต่อ เช่น สาย lan หลุด, เครื่องฐานข้อมูลมีการ restart เป็นต้น จะทำให้เกิด Error message ขึ้นมาบอกว่า
ขั้นตอนการแก้ปัญหามีดังนี้ สามารถทำตามได้เลย
1. ต้องไปดาวน์โหลดไดรเวอร์ตัวใหม่มา ซึ่งสิ่้งที่เหมาะสมกับ Java ที่สุดๆ เลยก็คือ open source ด้วยกันเอง ที่ชื่อว่า jTDS นั่นเอง
คุณสมบัติคร่าวๆ ของเจ้าตัวนี้ เอามาจากเว็บเค้านั่นแหละครับ
2. เมื่อได้ไดรเวอร์มาแล้ว จะมีชื่อว่า jtds-x.x.x.jar (x.x.x คือเวอร์ชั่น เช่น jtds-1.2.2.jar เป็นต้น) นำไดรเวอร์ตัวนั้น import เข้าไปในเว็บโปรเจคของเรา อย่างของผลไว้ที่โฟลเดอร์ \ProjectName\WebContent\WEB-INF\lib
3. เริ่มมา config กัน ก่อนอื่นก็ต้องเปลี่ยนตัว driverClass ใน config ซะก่อน (cofig นี้จะอยู่ในส่วนที่เราทำการเชื่อมต่อฐานข้อมูลนะครับ) เช่น
เดิม
เปลี่ยนใหม่เป็นของ jTDS
สามารถดูเอกสารได้นะ เพราะชื่อ class นี้อาจจะมีการเปลี่ยนแปลงเมื่อเค้าออกเวอร์ชั่นใหม่ๆ หาดูได้จากตรงส่วน Get Started ในเว็บของ JTDS ครับ
4. มาทดสอบกัน
4.1 start tomcat
4.2 access my web site
4.3 disable network connection or unplug LAN
4.4 access my web site again (1st found Error, but 2nd, 3rd, ... found my web site)
5. จากข้อ 4 ก็ยังมี error เหมือนเดิมงิ ยังแก้อาการแบบนี้ไม่หายขาดซักที ทำไงดีละ
ไม่ต้องกังวลครับ เรามีทางเลือกมานำเสนอเป็นโปรโมชั่นที่ 2 อีก ทำตามข้อ 6 ได้เลยครับ แล้วทุกอย่างจะดีขึ้นเอง
6. เพิ่ม config
7. ลองทดสอบตามข้อ 3 อีกครั้ง พบว่า หลังจากที่เรา disable LAN หรือลองดึงสาย LAN ออกนั้น เมื่อเข้าเว็บครั้งแรกจะช้าหน่อย แต่ก็ขึ้นหน้าเว็บตามปกติมาให้เรา เนื่องจากมันจะไปทำการตรวจสอบโดยใช้ statement SQL select 1 ไปทดสอบก่อน
แต่การเข้าเว็บครั้งที่ 2 และต่อๆ มาก็ไวเป็นปกติแล้วครับท่าน
Note: jTDS is a very very excellent driver for MS SQL Server 2000 จริงเลย
เตรียมพบกับความผิดพลาดและความไม่มีเสถียรภาพของระบบได้เลย ซึ่งปัญหานี้จะเกิดขึ้นก็ต่อเมื่อ การเชื่อมต่อระหว่าง Tomcat กับ ฐานข้อมูล Microsoft SQL Server 2000 ขาดการเชื่อมต่อ เช่น สาย lan หลุด, เครื่องฐานข้อมูลมีการ restart เป็นต้น จะทำให้เกิด Error message ขึ้นมาบอกว่า
" [Microsoft][SQLServer 2000 Driver for JDBC]Connection reset by peer: socket write error "
แต่ยังไม่ต้องตกใจ เรามีทางแก้ทางเลือกหนึ่ง มานำเสนอแล้ว หนังจากที่ได้ค้นหาทางแก้และปวดหัวกับมันมาซะหลายวันขั้นตอนการแก้ปัญหามีดังนี้ สามารถทำตามได้เลย
1. ต้องไปดาวน์โหลดไดรเวอร์ตัวใหม่มา ซึ่งสิ่้งที่เหมาะสมกับ Java ที่สุดๆ เลยก็คือ open source ด้วยกันเอง ที่ชื่อว่า jTDS นั่นเอง
คุณสมบัติคร่าวๆ ของเจ้าตัวนี้ เอามาจากเว็บเค้านั่นแหละครับ
Overview
jTDS is an open source 100% pure Java (type 4) JDBC 3.0 driver for Microsoft SQL Server (6.5, 7, 2000 and 2005) and Sybase (10, 11, 12, 15). jTDS is based on FreeTDS and is currently the fastest production-ready JDBC driver for SQL Server and Sybase. jTDS is 100% JDBC 3.0 compatible, supporting forward-only and scrollable/updateable ResultSets, concurrent (completely independent) Statements and implementing all the DatabaseMetaData and ResultSetMetaData methods. Check out the feature matrix for more details.
2. เมื่อได้ไดรเวอร์มาแล้ว จะมีชื่อว่า jtds-x.x.x.jar (x.x.x คือเวอร์ชั่น เช่น jtds-1.2.2.jar เป็นต้น) นำไดรเวอร์ตัวนั้น import เข้าไปในเว็บโปรเจคของเรา อย่างของผลไว้ที่โฟลเดอร์ \ProjectName\WebContent\WEB-INF\lib
3. เริ่มมา config กัน ก่อนอื่นก็ต้องเปลี่ยนตัว driverClass ใน config ซะก่อน (cofig นี้จะอยู่ในส่วนที่เราทำการเชื่อมต่อฐานข้อมูลนะครับ) เช่น
เดิม
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" method="close">
<property name="driverClassName" value="com.microsoft.jdbc.sqlserver.SQLServerDriver"/>
<property name="url" value="jdbc:microsoft:sqlserver://xxx.xxx.xxx.xxx:1433;DatabaseName=xxxxxx"/>
<property name="username" value="username"/>
<property name="password" value="secret"/>
</bean>
เปลี่ยนใหม่เป็นของ jTDS
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" method="close"/>
<property name="driverClassName" value="net.sourceforge.jtds.jdbc.Driver"/>
<property name="url" value="jdbc:jtds:sqlserver://xxx.xxx.xxx.xxx:1433;DatabaseName=xxxxxx"/>
<property name="username" value="username"/>
<property name="password" value="secret"/>
</bean>
สามารถดูเอกสารได้นะ เพราะชื่อ class นี้อาจจะมีการเปลี่ยนแปลงเมื่อเค้าออกเวอร์ชั่นใหม่ๆ หาดูได้จากตรงส่วน Get Started ในเว็บของ JTDS ครับ
4. มาทดสอบกัน
4.1 start tomcat
4.2 access my web site
4.3 disable network connection or unplug LAN
4.4 access my web site again (1st found Error, but 2nd, 3rd, ... found my web site)
5. จากข้อ 4 ก็ยังมี error เหมือนเดิมงิ ยังแก้อาการแบบนี้ไม่หายขาดซักที ทำไงดีละ
ไม่ต้องกังวลครับ เรามีทางเลือกมานำเสนอเป็นโปรโมชั่นที่ 2 อีก ทำตามข้อ 6 ได้เลยครับ แล้วทุกอย่างจะดีขึ้นเอง
6. เพิ่ม config
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" method="close"/>
<property name="driverClassName" value="net.sourceforge.jtds.jdbc.Driver"/>
<property name="url" value="jdbc:jtds:sqlserver://xxx.xxx.xxx.xxx:1433;DatabaseName=xxxxxx"/>
<property name="validationQuery" value="select 1"></property>
<property name="username" value="username"/>
<property name="password" value="secret"/>
</bean>
7. ลองทดสอบตามข้อ 3 อีกครั้ง พบว่า หลังจากที่เรา disable LAN หรือลองดึงสาย LAN ออกนั้น เมื่อเข้าเว็บครั้งแรกจะช้าหน่อย แต่ก็ขึ้นหน้าเว็บตามปกติมาให้เรา เนื่องจากมันจะไปทำการตรวจสอบโดยใช้ statement SQL select 1 ไปทดสอบก่อน
แต่การเข้าเว็บครั้งที่ 2 และต่อๆ มาก็ไวเป็นปกติแล้วครับท่าน
Note: jTDS is a very very excellent driver for MS SQL Server 2000 จริงเลย
Subscribe to:
Posts (Atom)