التقييم عبر الإنترنت لثلاث تجمعات اتصال هو كما يلي:
C3P0 أكثر استهلاكًا للموارد وقد يكون أقل قليلاً من حيث الكفاءة.
هناك أخطاء في DBCP في الممارسة ، وفي بعض الحالات ، لا يمكن إطلاق العديد من الاتصالات الفارغة. تخلت Hibernate 3.0 عن دعمها.
يحتوي Proxool على عدد أقل من المراجعات السلبية ويوصى به الآن ، كما يوفر مراقبة فورية لحالة تجمع الاتصال لتسهيل تسرب الاتصال.
تجمع اتصال Proxool
<bean id = "proxool_dataSource"> <property name = "driver-class value =" oracle.jdbc.driver.oracledriver "/> <property name =" driver-url "value =" jdbc: oracle: thin:@localhost: 1521/ssid "/> <property name = user" بيان تنفيذ SQL للاختبار-> <property name = "housekeepingtestsql" value = "select current_date"/> <!-الحد الأدنى لعدد اتصالات الخمول التي يتم الحفاظ عليها (افتراضي 2)-> <property name = "protypeCount" value = "2"/> <! إذا تم اكتشاف اتصال الخمول ، فسيتم إعادة تدويره على الفور. تتخلف تدمير المهلة إلى 30 ثانية)-> <property name = "Housekeepingsleeptime" value = "30"/> <!-الحد الأقصى لوقت النشاط (سيتم قتل المواضيع التي تتجاوز هذا الوقت ، الافتراضي هو 5 دقائق)-> <property name = "maximumcontive" value = "300"/> <! value = "30"/> <!-الحد الأدنى لعدد الاتصالات (افتراضي 2)-> <property name = "minimumConnectionCount" value = "10"/> <!-الحد الأقصى لعدد الاتصالات (افتراضي 5)-> <property name = "maximumConnectionCount" = "30"/> <! value = "10"/> </ban>
تجمع اتصال C3P0
<BeanID = "datasource" class = "com.mchange.v2.c3p0.combopooledDatasource" تدمير method = "close"> <pertaryName = "driverClass" value = "oracle.jdbc.driver.oracledriver"/> <PreferenceName = "jdbcurl" value = "jdbc: oracle: thin:@localhost: 1521/ssid"/> <propertyName = "user" value = "user"/> <propertyName = "portport" value = "password"/> <propertyname = "initialPoolsize" <propertyName = "maxpoolsize" value = "100"/> </bean> <!- خصائص تكوين C3P0 ، من خلال هذه الخصائص ، يمكن تنفيذ العديد من عناصر التحكم الفعالة على مصدر البيانات: الحصول على: عند استخدام الاتصال في تجمع الاتصال لأعلى ، يخلق C3P0 اتصالات جديدة في وقت واحد ؛ Acquiretryattempts: تحديد عدد المحاولات المتكررة للحصول على بعد الفشل في الحصول على اتصال جديد من قاعدة البيانات ، الافتراضي هو 30 ؛ AcquiretryDelay: الفاصل بين اتصالين ، وحدة ميلي ثانية ، الافتراضي هو 1000 ؛ AutoCommitonClose: عندما يتم إغلاق الاتصال ، يتم إعادة جميع العمليات غير الملتزمة بشكل افتراضي. الافتراضي كاذب. AutomatictestTable: سيقوم C3P0 بإنشاء جدول فارغ يسمى اختبار ويستخدم بيان الاستعلام الخاص به للاختبار. إذا تم تعريف هذه المعلمة ، فسيتم تجاهل العقار المفضل. لا يمكنك فعل أي شيء على جدول الاختبار هذا ، وسيتم استخدامه لاختبارات C3P0 ، افتراضيًا إلى NULL ؛ BreakafterAcquireFailure: الفشل في الحصول على الاتصال سيؤدي إلى أن يتسبب جميع مؤشرات الترابط في انتظار الحصول على اتصال لرمي الاستثناءات. ومع ذلك ، لا يزال مصدر البيانات صالحًا ويستمر في محاولة الحصول على الاتصال في المرة التالية التي تتصل فيها GetConnection (). إذا تم تعيينه على TRUE ، فسيعلن مصدر البيانات أنه تم فصله وإغلاقه بشكل دائم بعد محاولات فاشلة للحصول على الاتصال. الافتراضي كاذب. CheckoutTimeout: عند استخدام تجمع الاتصال ، يقوم العميل باستدعاء GetConnection () وينتظر الوقت للحصول على الاتصال الجديد. بعد المهلة ، سيتم إلقاء sqlexception. إذا تم ضبطها على 0 ، فسوف تنتظر إلى أجل غير مسمى. وحدة ميلي ثانية ، الافتراضي هو 0 ؛ ConnectionTesterClassName: توصيلات الاختبار عن طريق تنفيذ ConnectionTester أو QueryConnectionTester ، يجب تعيين اسم الفصل على اسم مؤهل تمامًا. الافتراضي هو com.mchange.v2.c3p0.impl.DefaultConnectionTester ؛ IdleConnectionTestperiod: كم ثوانٍ تتطلبها التحقق من اتصالات الخمول في جميع تجمعات الاتصال ، يكون الافتراضي هو 0 للإشارة إلى أنه لم يتم التحقق منه ؛ initialPoolsize: يجب أن يتم تقييم عدد الاتصالات التي تم إنشاؤها أثناء التهيئة بين Minpoolsize و MaxPoolsize. الافتراضي هو 3 ؛ MaxIdletime: الحد الأقصى لوقت الخمول ، سيتم التخلص من الاتصالات التي تتجاوز وقت الخمول. إذا كان 0 أو سلبيًا ، فلن يتم التخلص منه أبدًا. الافتراضي هو 0 ؛ MaxPoolsize: الحد الأقصى لعدد الاتصالات المحتفظ بها في تجمع الاتصال. الافتراضي هو 15 ؛ MaxStatements: المعلمة القياسية لـ JDBC ، المستخدمة للتحكم في عدد أعداد المعدة المحملة في مصدر البيانات. ولكن لأن عبارة precacher تنتمي إلى اتصال واحد بدلاً من تجمع الاتصال بأكمله. لذلك ، يتطلب تحديد هذه المعلمة النظر في العديد من العوامل. إذا كانت كل من MaxStatements و MaxStatementsperConnection 0 ، فسيتم إغلاق ذاكرة التخزين المؤقت. الافتراضي هو 0 ؛ MaxStatementsPerConnection: الحد الأقصى لعدد العبارات المخزنة مؤقتًا التي يحتوي عليها اتصال واحد في مجموعة الاتصال. الافتراضي هو 0 ؛ NumHelperThreads: يتم تشغيل C3P0 بشكل غير متزامن ، ويتم إكمال عمليات JDBC البطيئة من خلال عملية المساعدة. يمكن لتوسيع هذه العمليات تحسين الأداء بشكل فعال ويتم تنفيذ عمليات متعددة في وقت واحد من خلال مؤشرات ترابط متعددة. الافتراضي هو 3 ؛ المفضل: يحدد عبارة الاختبار أن جميع اختبارات الاتصال يتم تنفيذها. يمكن لهذه المعلمة تحسين سرعة الاختبار بشكل كبير عند استخدام اختبارات الاتصال. يجب أن يكون الجدول المختبري موجودًا في وقت مصدر البيانات الأولي. الافتراضي هو لاغ. PropertyCycle: الحد الأقصى لعدد الثواني للانتظار قبل تعديل المستخدم معلمات تكوين النظام. الافتراضي هو 300 ؛ TestConnectionOncheckout: يرجى استخدامه فقط عند الحاجة بسبب استهلاك الأداء العالي. إذا تم ضبطه على TRUE ، فسيتم التحقق من صلاحيته عند كل تقديم اتصال. يوصى باستخدام idleconnectionTestperiod أو AutomatictEstTable لتحسين أداء اختبار الاتصال. الافتراضي كاذب. TestConnectionOncheckin: إذا تم ضبطها على TRUE ، فسيتم فحص صحة الاتصال أثناء الحصول على الاتصال. الافتراضي كاذب. ->
تجمع اتصال DBCP
<beanid = "dbcp_datasource" class = "org.apache.commons.dbcp.basicDataSource "> <PertaryName =" driverClassName "value =" oracle.jdbc.driver.oracledriver "> </property> <PertornAme = "url" value = "jdbc: Oracle: thin:@localhost: 1521/ssid"> </spregment> <pertaryName = "username" value = "user" <purstlortname = "maxactive" value = "50"> </property> <pertornname = "maxactive" value = "50"> </property> <PertaryName = "maxidle" value = "20" التهيئة: العدد الأولي للاتصالات عند تهيئة تجمعات الاتصال MaxActive: الحد الأقصى لقيمة تجمع الاتصال MaxIdle: الحد الأقصى لقيمة الخمول Minidle: الحد الأدنى لقيمة الخمول MaxWait: الحد الأقصى للاتصال وقت الانتظار ->