1. แหล่งข้อมูลการกำหนดค่า TOMCAT:
วิชาบังคับก่อน: คุณต้องใส่แพ็คเกจไดรเวอร์ไดรเวอร์ฐานข้อมูล MySQL ที่เชื่อมต่อลงในไดเรกทอรี LIB ภายใต้โฟลเดอร์ทั่วไปในไดเรกทอรีการติดตั้ง Tomcat
1. วิธีที่ 1: สร้าง meta-inf โฟลเดอร์ภายใต้ webroot และสร้าง file context.xml ในนั้นดังนี้:
<? xml version = "1.0" การเข้ารหัส = "utf-8"?> <บริบท> <ชื่อทรัพยากร = "jdbc/chaoshi" auth = "container" type = "javax.sql.datasource" maxaction = "50" maxidle = "30" maxwait = "10000" driverclassName = "com.mysql.jdbc.driver" url = "jdbc: mysql: // localhost: 3306/dbname"> </resource>
วิธีที่ 2: ใน context.xml ด้านล่างไดเรกทอรี Tomcat CONF แก้ไขแท็กบริบทดั้งเดิมและเปลี่ยนเป็น:
<dexting> <!-ชุดทรัพยากรที่ได้รับการตรวจสอบเริ่มต้น-> <WatchEdResource> web-inf/web.xml </watchedResource> <ชื่อทรัพยากร = "jdbc/test" auth = "container" type = "javax.sql.datasource" maxactive = "50" maxidle = "30" รหัสผ่าน = "root" driverclassName = "com.mysql.jdbc.driver" url = "jdbc: mysql: // localhost: 3306/testdb"/> </context>
วิธีที่ 3: เมื่อกำหนดค่าไดเรกทอรีเสมือนนั่นคือเมื่อกำหนดค่า Server.xml ด้านล่าง CONF ให้เปลี่ยนเป็นแท็กบริบท:
<context path = "/webroot" reloadable = "true" docBase = "e:/workspace/dataSource/webroot"> <ชื่อทรัพยากร = "jdbc/test" auth = "container" type = "javax.sql.datasource" maxactive = "50" maxidle = "30 รหัสผ่าน = "root" driverclassName = "com.mysql.jdbc.driver" url = "jdbc: mysql: // localhost: 3306/testdb"/> </context>
</ความหมายของแต่ละแอตทริบิวต์ในแท็กทรัพยากรในไฟล์กำหนดค่า:
DriverClassName - ชื่อเต็มของคลาสไดรเวอร์ฐานข้อมูลที่ใช้โดย JDBC
Maxactive - จำนวนสูงสุดของการเชื่อมต่อที่ใช้งานอยู่โดยพูลเชื่อมต่อในเวลาเดียวกัน
Maxidle - จำนวนการเชื่อมต่อสูงสุดที่พูลการเชื่อมต่อถืออยู่ในช่วงเวลาว่าง
MaxWait - จำนวนสูงสุดของมิลลิวินาทีฐานข้อมูลจะรอเมื่อมีข้อยกเว้นเกิดขึ้น (เมื่อไม่มีการเชื่อมต่อที่พร้อมใช้งาน)
ชื่อผู้ใช้ - ชื่อเข้าสู่ระบบเมื่อเชื่อมต่อกับฐานข้อมูล
รหัสผ่าน - รหัสผ่านเพื่อเชื่อมต่อกับฐานข้อมูล
URL - URL ไปยังคนขับ (อนุญาตให้ใช้ชื่อ Drivername สำหรับความเข้ากันได้ย้อนหลัง)
รหัสทดสอบ:
บริบท initContext = new InitialContext (); บริบท envContext = (บริบท) initContext.lookup ("java:/comp/env"); dataSource ds = (dataSource) envContext.lookup ("jdbc/test"); system.out.println (ds.getConnection ());หากไม่ใช่โมฆะก็ควรจะประสบความสำเร็จ
โปรดทราบว่าเมื่อทำการทดสอบคุณต้องทดสอบใน Tomcat นั่นคือมันจะต้องอยู่ในคอนเทนเนอร์ Tomcat (อย่ารบกวนเขียนหน้า JSP ง่าย ๆ เพื่อทดสอบและใช้ <%...%> ซึ่งค่อนข้างง่าย) หากไม่ได้ทดสอบในคอนเทนเนอร์ Tomcat ข้อยกเว้นจะถูกโยน:
... javax.naming.noinitialContextexception: จำเป็นต้องระบุชื่อคลาสในสภาพแวดล้อมหรือคุณสมบัติระบบหรือเป็นพารามิเตอร์แอปเพล็ตหรือในไฟล์ทรัพยากรแอปพลิเคชัน: java.naming.factory.initial
2. มีสามวิธีในการกำหนดค่าพูลการเชื่อมต่อในไฮเบอร์เนต:
วิธีที่ 1 ใช้พูลการเชื่อมต่อของ Hibernate
<hibernate-configuration> <session-factory> <!-ไดรเวอร์ jdbc-> <property name = "การเชื่อมต่อ. driver_class"> com.mysql.jdbc.driver </คุณสมบัติ> <!-url เพื่อเชื่อมต่อกับฐานข้อมูล-> การเชื่อมต่อ-> <property name = "connection.username"> root </property> <!-รหัสผ่านเข้าสู่ระบบ-> <property name = "Connection.password"> </property> <!-ไม่ว่าจะส่ง SQL ที่สร้างขึ้นระหว่างการรันไปยังบันทึกการดีบัก-> <property name = "show_sql" name = "Dialect"> org.hibernate.dialect.mysqldialect </คุณสมบัติ> <!-ทรัพยากรการทำแผนที่-> <การทำแผนที่ทรัพยากร = "/xx/xx.hbm.xml"/> </session-factory> </hibernate-configuration> การกำหนดค่าของฉันเอง <hibernate-configuration> <session-factory> <property name = "show_sql"> true </property> <!-conf dbcp/c3p0 ที่ใช้ร่วมกันทั่วไป <Property Name = "Connection.username"> Informiver </property> <property name = "การเชื่อมต่อ name = "connection.url"> jdbc: informix-sqli: //192.168.0.188: 1526/db_crm: informixserver = ol_sx; newLocale = zh_cn, en_us; newCodeSet = GBK, 8859_1,819; name = "Dialect"> com.huatech.sysframe.webapp.common.dao.hibernate.dialet.baseinformixdialect </คุณสมบัติ>-> ... ... ...
วิธีที่ 2: ใช้พูลการเชื่อมต่อฐานข้อมูลที่ระบุโดยไฟล์การกำหนดค่า
ขณะนี้กลุ่มการเชื่อมต่อมี DBCP, C3P0 และ Proxoop ที่จริงฉันรู้จัก DBCP
ในหมู่พวกเขาการกำหนดค่าของ DBCP และ C3P0 จำเป็นต้องเพิ่มการกำหนดค่าบางอย่างในการกำหนดค่าข้างต้นและ Hibernate จะระบุพูลการเชื่อมต่อฐานข้อมูลโดยอัตโนมัติ
ในการกำหนดค่า DBCP คุณต้องเข้าร่วม:
<!- dbcp conf <property name = "dbcp.maxactive"> 100 </คุณสมบัติ> <property name = "dbcp.whenexineadaction"> 1 </คุณสมบัติ> <property name = "dbcp.maxwait"> 60000 </property> <property name = "dbcp.maxidle" name = "dbcp.ps.maxactive"> 100 </คุณสมบัติ> <property name = "dbcp.ps.maxactive"> 100 </คุณสมบัติ> <property name = "dbcp.ps.wenexinexideating"> 1 </property> <property name = "dbcp.ps.maxwait"> 60000
ในการกำหนดค่า C3P0 คุณต้องเข้าร่วม:
<!-c3p0 conf <property name = "c3p0.min_size"> 5 </คุณสมบัติ> <property name = "c3p0.max_size"> 30 </คุณสมบัติ> <property name = "c3p0.time_out"> 1800 </property> <property name = "c3p0.max_statement"
การกำหนดค่าของ proxoop นั้นแตกต่างกันเล็กน้อย คุณไม่สามารถเพิ่มได้ แต่คุณต้องเปลี่ยน:
การกำหนดค่าพื้นฐานมีดังนี้:
<property name = "proxool.pool_alias"> dbpool </คุณสมบัติ> <property name = "proxool.xml"> test/huatech/conf/proxoolconf.xml </คุณสมบัติ> <property name = "การเชื่อมต่อ. provider_class"
หมายเหตุพิเศษ: พา ธ ของไฟล์ต่อไปนี้จะต้องกำหนดค่าอย่างถูกต้องมิฉะนั้น filenotfound
ไฟล์ที่เกี่ยวข้อง: ทดสอบ/huatech/conf/proxoolconf.xml ได้รับการกำหนดค่าดังนี้:
<? xml version = "1.0" encoding = "utf-8"?> <something-else-entirely> <proxool> <alias> dbpool </alias> <!-Proxool สามารถจัดการการเชื่อมต่อที่สร้างขึ้นโดย ตัวเอง-> <Driver-Url> JDBC: Informix-Sqli: //192.168.0.188: 1526/db_crm: InformixServer = OL_SX; newLocale = ZH_CN, en_us; newCod; ESET = GBK, 8859_1,819; </driver-url> <Driver-class> com.informix.jdbc.ifxdriver </driver-class> <properties> <คุณสมบัติ name = "user" value = "Informix" /> <property name = "รหัสผ่าน" value = "Informix" /> < /properties ไดรเวอร์> <!-Proxool ตรวจจับช่วงเวลา (มิลลิวินาที) โดยอัตโนมัติของแต่ละสถานะการเชื่อมต่อ หากตรวจพบการเชื่อมต่อที่ไม่ได้ใช้งานจะมีการรีไซเคิลทันที การทำลายหมดเวลา-> <การดูแลบ้าน-เวลา> 90000 </การดูแลบ้าน-เวลา> <!-มันหมายถึงจำนวนสูงสุดของคำขอที่รออยู่ในคิวเพราะไม่มีการเชื่อมต่อที่ไม่ได้ใช้งาน การเชื่อมต่อของผู้ใช้ที่เกินจำนวนคำขอนี้จะไม่ได้รับการยอมรับ-> <สูงสุด-ใหม่-การเชื่อมต่อ> 20 </สูงสุด-ใหม่-การเชื่อมต่อ> <!-จำนวนการเชื่อมต่อที่ไม่ได้ใช้งานขั้นต่ำ-> <Trotype-count> 5 </ต้นแบบการนับ> <!-จำนวนการเชื่อมต่อสูงสุดที่อนุญาต เมื่อมีคำขอจะต้องรอคิวในคิว จำนวนสูงสุดของการร้องขอการรอคอยนั้นถูกกำหนดโดยการเชื่อมต่อสูงสุด-ใหม่-> <การเชื่อมต่อสูงสุด-การเชื่อมต่อ> 100 </สูงสุดการเชื่อมต่อการเชื่อมต่อ> <!-จำนวนการเชื่อมต่อขั้นต่ำ-> <การเชื่อมต่อขั้นต่ำ> 10 </การเชื่อมต่อขั้นต่ำ> </proxool>
วิธีที่ 3: รับพูลการเชื่อมต่อจากคอนเทนเนอร์ (เช่น Tomcat)
ใช้พูลการเชื่อมต่อของเซิร์ฟเวอร์: เช่น Tomcat, เรซิ่น, เว็บบล็อก ฯลฯ
การกำหนดค่าไฮเบอร์เนตมีดังนี้: <!-<ชื่อคุณสมบัติ = "hibernate.connection.datasource"> java: comp/env/jdbc/crm </คุณสมบัติ> <property name = "show_sql"> true </property> < name = "Dialect"> com.huatech.sysframe.webapp.common.dao.hibernate.dialet.baseinformixdialect </คุณสมบัติ> <property name = "hibernate.generate_statistics"> true </property>->->->->
ในหมู่พวกเขา JDBC/CRM ของ Java: comp/env/jdbc/crm เป็นชื่อของพูลการเชื่อมต่อฐานข้อมูลในเซิร์ฟเวอร์ที่เกี่ยวข้องและจำเป็นต้องกำหนดค่าในสภาพแวดล้อมที่สอดคล้องกัน
การกำหนดค่า TOMCAT อธิบายไว้ในวิธีการกำหนดค่า TOMCAT ครั้งแรก โปรดทราบว่าชื่อของ JNDI ควรได้รับการแก้ไขตามสถานการณ์และควรสอดคล้องกับชื่อที่ใช้โดยไฮเบอร์เนต
-
การกำหนดค่าข้างต้นต้องใช้แพ็คเกจ JAR สำหรับแต่ละพูลการเชื่อมต่อฐานข้อมูลซึ่งรวมอยู่ในแพ็คเกจไฮเบอร์เนต หากคุณต้องการอันล่าสุดคุณสามารถดาวน์โหลดได้จากเว็บไซต์ของคุณ
3. วิธีการกำหนดค่าพูลการเชื่อมต่อของสปริง:
<bean id = "dataSource" destroy-method = "close"> <property name = "driverclassname"> <dange> com.mysql.jdbc.driver </value> </คุณสมบัติ> <property name = "url"> <value> jdbc: mysql: // localhost: 3306/dbname name = "username"> <value> root </value> </คุณสมบัติ> <property name = "password"> <value> ****** </value> </property> <property name = "Maxactive"> <value> 100 </value> </property> <property name = "MaxWait" name = "defaultautocommit"> <value> true </value> </property> <property name = "RemoveAbandOned"> // รีไซเคิลกลุ่มการเชื่อมต่อโดยอัตโนมัติเพื่อหลีกเลี่ยงการรั่วไหลของพูลการเชื่อมต่อ <ค่า> True </value> </property> </ebean>
ประการที่สี่ซึ่งเป็นสิ่งสุดท้ายที่ฉันต้องการพูดคุยเกี่ยวกับวันนี้คือการกำหนดค่าพูลการเชื่อมต่อผ่านการเขียนโค้ดรหัสมีดังนี้:
นำเข้า java.sql.*; นำเข้า Java.sql.datasource; นำเข้า org.apache.commons.dbcp.basicDataSource; การเชื่อมต่อระดับสาธารณะ public {ส่วนตัวคงที่ basicDatasource dbs = null; bds.sestdriverclassName ("com.mysql.jdbc.driver"); // ตั้งค่าชื่อผู้ใช้การเชื่อมต่อ bds.setusername ("root"); // ตั้งรหัสผ่านการเชื่อมต่อ bds.setpassword ("root"); // ตั้งค่าที่อยู่การเชื่อมต่อ bds.seturl ("jdbc: mysql การเชื่อมต่อที่เริ่มต้น bds.setInitialSize (50); // ตั้งจำนวนการเชื่อมต่อทั้งหมดที่ใช้พร้อมกัน bds.setMaxactive (-1); // ตั้งค่าจำนวนสูงสุดของการเชื่อมต่อในพูลบัฟเฟอร์ bds.setmaxidle (-1); bds.setmaxwait (-1); return (dataSource) bds;} // วิธีการแสดงจำนวนการเชื่อมต่อในการเชื่อมต่อพูลโมฆะสาธารณะคงที่ printDataSourCestats (DataSource DS) โยน sqlexception {bds = (basicDatasource) ds; out.out.out.println (); shutdownDataSource (DataSource DS) พ่น sqlexception {bds = (basicDatasource) ds; bds.close ();}} ในการรับพูลการเชื่อมต่อคุณสามารถใช้วิธีการคงที่ของคลาสนี้เพื่อกำหนดค่า AfigureDataSource ()
ด้านบนเป็นวิธีการกำหนดค่าหลายวิธีสำหรับพูลการเชื่อมต่อฐานข้อมูล Java ที่แนะนำให้คุณ (นำฐานข้อมูล MySQL เป็นตัวอย่าง) ฉันหวังว่ามันจะเป็นประโยชน์กับคุณ หากคุณมีคำถามใด ๆ โปรดฝากข้อความถึงฉันและบรรณาธิการจะตอบกลับคุณทันเวลา ขอบคุณมากสำหรับการสนับสนุนเว็บไซต์ Wulin.com!