เจาะลึกพูลการเชื่อมต่อ JNDI (กำหนดค่าพูลการเชื่อมต่อผ่านอินเทอร์เฟซการจัดการภายใต้ Tomcat5.5)
ผู้เขียน:Eve Cole
เวลาอัปเดต:2009-07-03 16:56:20
ทำลายกลุ่มการเชื่อมต่อ JNDI - -
หลังจากทำงานหนักมาหลายวัน ในที่สุดฉันก็สามารถเชื่อมต่อกับกลุ่มการเชื่อมต่อได้ ฉันได้อ้างอิงถึงโพสต์ต่างๆ ของฮีโร่เกี่ยวกับเรื่องนี้แล้ว ตอนนี้ฉันจะเขียนปัญหาต่างๆ ที่เกิดขึ้นในช่วงไม่กี่วันที่ผ่านมาที่นี่:
1. ใส่ไดรเวอร์ jdbc ทั้งสามตัว (ต้อง) ไว้ใต้ tomcat_homecommon ซึ่งสามารถดาวน์โหลดได้จากเว็บไซต์ของ Microsoft ชื่อผู้ใช้เริ่มต้นของ SQLSERVER2k ที่ติดตั้งคือ sa และรหัสผ่านว่างเปล่า แต่ไม่สำคัญว่ารหัสผ่านจะว่างเปล่าหรือไม่ หมายความว่าไม่มีรหัสผ่าน ดังนั้นคุณต้องกำหนดชื่อผู้ใช้และรหัสผ่านใน URL ของคุณ วิธีที่ดีที่สุดคือรีเซ็ตรหัสผ่านซึ่งไม่สามารถอ้างอิงได้ มักเป็นเพราะเส้นทางเขียนไม่ถูกต้อง เส้นทางของ tomcat คือ tomcat_homewebapps แต่ใช้ 5.5 .x เพียงทำตามวิธีการด้านล่าง ไม่จำเป็นต้องกำหนดค่าเส้นทาง และไม่จำเป็นต้องกำหนดค่าการอ้างอิงใน youwebappWEB-INFweb.xml การกำหนดค่า server.xml ของเวอร์ชัน tomcat5.5.x แตกต่างจากการกำหนดค่าของ tomcat5.0 ต่อไปนี้คือวิธีการกำหนดค่าสามวิธีใน tomcat5.5.x หากการกำหนดค่าไม่ถูกต้อง javax.naming.NameNotFoundException: ชื่อ ไม่ได้ถูกผูกไว้ในวิธีที่ 1 ข้อผิดพลาดของบริบทนี้ พูลการเชื่อมต่อฐานข้อมูลส่วนกลาง
1. กำหนดค่าพูลการเชื่อมต่อผ่านอินเทอร์เฟซการจัดการ หรือเพิ่มโดยตรงไปยัง GlobalNamingResources ใน tomcatconfserver.xml
<ชื่อทรัพยากร = "jdbc/mydb" type = "javax.sql.DataSource" รหัสผ่าน = "mypwd" driverClassName = "com.microsoft.jdbc.sqlserver.SQLServerDriver" maxIdle = "2" maxWait = "5000" validationQuery = "เลือก 1" ชื่อผู้ใช้ = "sa" url = "jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=mydb" maxActive = "4"/>
2. เพิ่มสิ่งต่อไปนี้ในบริบทของ tomcatwebappsmyappMETA-INFcontext.xml:
แค่นั้นแหละ.
วิธีที่ 2 พูลการเชื่อมต่อฐานข้อมูลส่วนกลาง
1. เหมือนข้างบน
2. เพิ่มสิ่งต่อไปนี้ในบริบทของ tomcatconfcontext.xml:
วิธีที่ 3: จำเป็นต้องเพิ่มพูลการเชื่อมต่อฐานข้อมูลท้องถิ่นลงในบริบทของ tomcatwebappsmyappsMETA-INFcontext.xml เท่านั้น:
<ชื่อทรัพยากร = "jdbc/mydb" type = "javax.sql.DataSource" รหัสผ่าน = "mypwd" driverClassName = "com.microsoft.jdbc.sqlserver.SQLServerDriver" maxIdle = "2" maxWait = "5000" validationQuery = "เลือก 1" ชื่อผู้ใช้ = "sa" url = "jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=mydb" maxActive = "4"/>
คำอธิบายพารามิเตอร์:
driveClassName: ชื่อเต็มของคลาสไดรเวอร์ JDBC
maxActive: จำนวนอินสแตนซ์สูงสุดที่มีอยู่ที่สามารถจัดสรรจากพูลการเชื่อมต่อในเวลาเดียวกัน
maxIdle: จำนวนการเชื่อมต่อสูงสุดที่สามารถไม่ได้ใช้งานในกลุ่มการเชื่อมต่อในเวลาเดียวกัน
maxWait: การหมดเวลาสูงสุดในหน่วยมิลลิวินาที;
รหัสผ่าน: รหัสผ่านผู้ใช้;
url: การเชื่อมต่อ URL ไปยัง JDBC;
ผู้ใช้: ชื่อผู้ใช้;
validationQuery: ใช้เพื่อค้นหาการเชื่อมต่อที่ไม่ได้ใช้งานในพูล
สามวิธีข้างต้นมีให้ใช้งานภายใต้ Tomcat 5.5.4 นอกจากนี้ ไดรเวอร์ jdbc ของเซิร์ฟเวอร์ sql คือเซิร์ฟเวอร์ sql jdbc (sp3) ที่ดาวน์โหลดจากเว็บไซต์ Microsoft
4. ข้อผิดพลาด org.apache.tomcat.dbcp.dbcp.SQLNestedException: ไม่สามารถสร้าง PoolableConnectionFactory ([Microsoft] [SQLServer 2000 Driver for JDBC] เกิดข้อผิดพลาดในการสร้างซ็อกเก็ต) นี่เป็นปัญหาเล็กน้อยเนื่องจากบริการ SQLSERVER2K ของฉันถูกเปลี่ยนเป็น manual ดังนั้น คุณต้องเริ่ม SQLSERVER2K ด้วยตนเองหลังจากการเริ่มต้นแต่ละครั้ง เนื่องจากเริ่มต้นโดยจำไม่ได้ จึงเกิดข้อผิดพลาดบางอย่าง ดังนั้นหากคุณใช้ SQLSERVER2K บ่อยครั้ง ทางที่ดีที่สุดคืออย่าเปลี่ยนเป็นการเริ่มต้นด้วยตนเอง