C3P0 সর্বোত্তম উপায়ে কার্যকর করতে হলে এই উত্তরটি দেখুন
C3P0 :
এন্টারপ্রাইজ অ্যাপ্লিকেশনটির জন্য, সি 3 পি 0 হ'ল সর্বোত্তম পন্থা। সিডিপিসি হ'ল জেডিবিসি 3 স্পেস এবং জেডিবিসি 2 স্ট্যান্ড এক্সটেনশনের বিবরণ অনুসারে সংযোগ এবং স্টেটমেন্ট পুলিং বাস্তবায়নকারী ডেটাসোর্স সহ জেএনডিআই-বাইন্ডেবল ডেটাসোর্স সহ traditionalতিহ্যবাহী (ড্রাইভার-ম্যানেজার-ভিত্তিক) জেডিবিসি ড্রাইভারদের বাড়ানোর জন্য সহজেই ব্যবহারযোগ্য লাইব্রেরি। সি 3 পি 0 দৃume়ভাবে ডিবি সংযোগ বিচ্ছিন্ন এবং পুনরায় শুরুতে স্বচ্ছ পুনরায় সংযোগ স্থাপন করেছে, যদিও লিঙ্কটি নীচে থেকে বাইরে নিয়ে যাওয়ার পরে ডিবিসিপি কখনও সংযোগগুলি উদ্ধার করতে পারে না।
সুতরাং এই কারণেই সি 3 পি 0 এবং অন্যান্য সংযোগ পুলগুলিতে স্টেটমেন্ট ক্যাশেও প্রস্তুত রয়েছে - এটি অ্যাপ্লিকেশন কোডকে এই সমস্ত বিষয়গুলি এড়াতে অনুমতি দেয়। বিবৃতিগুলি সাধারণত কিছু সীমিত এলআরইউ পুলে রাখা হয়, তাই সাধারণ বিবৃতিগুলি একটি প্রস্তুতিমূলক স্টেস্ট্যান্ট উদাহরণ পুনরায় ব্যবহার করে।
সবচেয়ে খারাপটি এখনও ডিবিসিপি সেই আবেদনের সাথে সংযোগের বস্তুগুলি ফিরিয়ে দিচ্ছিল যার জন্য অন্তর্নিহিত পরিবহনটি ভেঙেছিল। সি 3 পি 0 এর জন্য একটি সাধারণ ব্যবহারের ক্ষেত্রে অ্যাপাচি টমক্যাটের সাথে অন্তর্ভুক্ত স্ট্যান্ডার্ড ডিবিসিপি সংযোগ পুলিং প্রতিস্থাপন করা। প্রায়শই, একটি প্রোগ্রামার এমন পরিস্থিতিতে চলে আসবে যেখানে সংযোগগুলি সঠিকভাবে ডিবিসিপি সংযোগ পুলে পুনর্ব্যবহার করা হয় না এবং সি 3 পি 0 এই ক্ষেত্রে একটি মূল্যবান প্রতিস্থাপন।
বর্তমান আপডেটগুলিতে সি 3 পি 0 এর কিছু উজ্জ্বল বৈশিষ্ট্য রয়েছে। এগুলি বোকা দেওয়া হয়:
ComboPooledDataSource dataSource = new ComboPooledDataSource();
dataSource.setMinPoolSize();
dataSource.setMaxPoolSize();
dataSource.setMaxIdleTime();
dataSource.setMaxStatements();
dataSource.setMaxStatementsPerConnection();
dataSource.setMaxIdleTimeExcessConnections();
এখানে সর্বোচ্চ এবং সর্বনিম্ন পুলসাইজ সংযোগের সীমা নির্ধারণ করে যার অর্থ এই অ্যাপ্লিকেশনটি কীভাবে সর্বনিম্ন এবং সর্বাধিক সংযোগ গ্রহণ করবে। MaxIdleTime()
এটি নিষ্ক্রিয় সংযোগটি কখন প্রকাশ করবে তা নির্ধারণ করুন।
DBCP :
এই পদ্ধতিরটিও ভাল তবে সংযোগের সময়সীমা এবং সংযোগ পুনরায় প্রকাশের মতো কিছু ত্রুটি রয়েছে। C3P0 ভাল হয় যখন আমরা মিডিথ্রেডিং প্রকল্পগুলি ব্যবহার করি। আমাদের প্রকল্পগুলিতে আমরা DBCP ব্যবহার করে একসাথে একাধিক থ্রেড মৃত্যুদন্ড ব্যবহার করেছি, তারপরে আমরা আরও থ্রেড এক্সিকিউশন ব্যবহার করি তবে আমরা সংযোগের সময়সীমা পেয়েছিলাম। সুতরাং আমরা c3p0 কনফিগারেশন সঙ্গে গিয়েছিলাম। আমি মোটেও ডিবিসিপিকে সুপারিশ করব না, বিশেষত এটি ডিবি চলে গেলে পুলের বাইরে সংযোগ নিক্ষেপ করার ঝাঁকুনি, ডিবি ফিরে এলে পুনরায় সংযোগ স্থাপনে অক্ষমতা এবং সংযোগের বস্তুগুলিকে পুনরায় পুলের মধ্যে যুক্ত করতে তার অক্ষমতা (এটি চিরতরে স্তব্ধ থাকে) একটি পোস্ট JDBC সংযোগ আই / ও সকেট পড়ুন)
ধন্যবাদ :)