জেডিবিসিতে কীভাবে সংযোগ পুল স্থাপন করবেন?


111

কীভাবে কোনও জেডিবিসি সংযোগ পুল স্থাপন করবেন তার উদাহরণ বা লিঙ্ক সরবরাহ করতে পারেন?

গুগল অনুসন্ধান থেকে আমি এটি করার বিভিন্ন উপায় দেখতে পাচ্ছি এবং এটি বরং বিভ্রান্তিকর।

অবশেষে আমার কোনও java.sql.Connectionজিনিস ফেরত দেওয়ার জন্য কোডটি দরকার , তবে শুরু করতে আমার সমস্যা হচ্ছে ... কোনও পরামর্শ স্বাগত।

আপডেট করুন: করে না javax.sqlবা java.sqlpooled সংযোগ বাস্তবায়নের আছে? কেন এগুলি ব্যবহার করা ভাল হবে না?


8
না, স্টক জেডিবিসি সংযোগ পুলিং সরবরাহ করে না। তার জন্য আপনার একটি পৃথক গ্রন্থাগার দরকার। বেশিরভাগ অ্যাপ সার্ভার এবং সার্লেট পাত্রে তাদের সাথে সংযোগ পুল অন্তর্ভুক্ত থাকে। এছাড়াও, জেপিএ বাস্তবায়নগুলি সাধারণত বাস্তবায়নও সরবরাহ করে।
হার্টুং

3
আধুনিক দিনের জাভা ব্যবহারকারীদের জন্য একটি আপডেট। জেডিবিসি 3.0.০+ (যা আমি বিশ্বাস করি জাভা। এ ব্যবহৃত হয়?) পোল্ড ডিবি সংযোগের জন্য একটি বাস্তবায়ন রয়েছে। জাভা 7 জেডিবিসি 4, এবং জাভা 8 জেডিবিসি 4.1 ব্যবহার করে।
BRasmussen

1
সংযোগ পুলিংয়ের জন্য জেডিবিসি 3.0 এপিআই সম্পর্কিত: প্রগতি
টিউটোরিয়ালস / জেডিবিসি / জেডিবিসি-jdbc- সংযোগ-

উত্তর:


102

আপনার যদি একটি স্বতন্ত্র সংযোগ পুলের দরকার হয় তবে আমার পছন্দটি ডিবিসিপি এর চেয়ে C3P0 এ যায় (যে আমি এই আগের উত্তরে উল্লেখ করেছি ), ভারী বোঝার মধ্যে আমার কেবল ডিবিসিপি নিয়ে খুব বেশি সমস্যা হয়েছিল। সি 3 পি 0 ব্যবহার করা সহজ মৃত। ডকুমেন্টেশন থেকে :

ComboPooledDataSource cpds = new ComboPooledDataSource();
cpds.setDriverClass( "org.postgresql.Driver" ); //loads the jdbc driver
cpds.setJdbcUrl( "jdbc:postgresql://localhost/testdb" );
cpds.setUser("swaldman");
cpds.setPassword("test-password");

// the settings below are optional -- c3p0 can work with defaults
cpds.setMinPoolSize(5);
cpds.setAcquireIncrement(5);
cpds.setMaxPoolSize(20);

// The DataSource cpds is now a fully configured and usable pooled DataSource 

তবে আপনি যদি কোনও অ্যাপ্লিকেশন সার্ভারের অভ্যন্তরে ছুটে চলেছেন তবে আমি প্রস্তাব দিচ্ছি যে এটি বিল্ট-ইন সংযোগ পুলটি সরবরাহ করে use সেক্ষেত্রে আপনাকে এটিটি কনফিগার করতে হবে (আপনার অ্যাপ্লিকেশন সার্ভারের ডকুমেন্টেশনটি দেখুন) এবং জেএনডিআই এর মাধ্যমে ডেটা সোর্স পুনরুদ্ধার করতে হবে:

DataSource ds = (DataSource) new InitialContext().lookup("jdbc/myDS");

1
দিতো, সে। আমি বছরের পর বছর ধরে একটি লোডের নিচে ডিবিসিপি ডেডলকিং পর্যবেক্ষণ করছি। সংস্করণ পরে সংস্করণ।
ভাসিলি

হ্যাঁ তবে সি 3 পি 0-তেও আমি বোনসিপি-র নিকট সেরা অভিজ্ঞতা পেয়েছি
নিকোলাস

1
BoneCP মত দেখায় হয়েছে অবচিত পক্ষে HikariCPনীচে একটি উত্তরে হিকারিসিপিও উল্লেখ করা হয়েছে ।
কর্টিক

19

সাধারণত আপনার যদি সংযোগ পুলের প্রয়োজন হয় তবে আপনি এমন একটি অ্যাপ্লিকেশন লিখছেন যা কিছু পরিচালিত পরিবেশে চলমান, এটি আপনি কোনও অ্যাপ্লিকেশন সার্ভারের অভ্যন্তরে চলছে। যদি এটি হয় তবে আপনার অ্যাপ্লিকেশন সার্ভার অন্য কোনও বিকল্প ব্যবহার করার আগে কোন সংযোগ পুলিংয়ের সুবিধা দেয় তা যাচাই করে নিন।

বাক্সের বাইরে থাকা সমাধানটি অ্যাপ্লিকেশন সার্ভারের বাকি সুবিধার সাথে সর্বোত্তম সংহত হবে। তবে আপনি যদি কোনও অ্যাপ্লিকেশন সার্ভারের ভিতরে না চলে থাকেন তবে আমি অ্যাপাচি কমন্স ডিবিসিপি কম্পোনেন্টের সুপারিশ করব । এটি ব্যাপকভাবে ব্যবহৃত হয় এবং বেশিরভাগ অ্যাপ্লিকেশনগুলির জন্য প্রয়োজনীয় সমস্ত বেসিক পুলিং কার্যকারিতা সরবরাহ করে।


18

HikariCP

এটি আধুনিক, এটি দ্রুত, এটি সহজ। আমি এটি প্রতিটি নতুন প্রকল্পের জন্য ব্যবহার করি। আমি এটি সি 3 পি 0 এর চেয়ে অনেক বেশি পছন্দ করি, অন্যান্য পুলগুলি খুব ভাল করে জান না।


18

চাকা পুনরুদ্ধার করবেন না।

সহজেই উপলভ্য তৃতীয় পক্ষের উপাদানগুলির মধ্যে একটি ব্যবহার করে দেখুন:

কীভাবে পুলিং জাভ্যাক্স.এসএইচএল.ডাটাসোর্স সেটআপ করতে হয় সে সম্পর্কে অ্যাপাচি ডিবিসিপি বিভিন্ন উদাহরণ সহ আসে । এখানে একটি নমুনা যা আপনাকে শুরু করতে সহায়তা করতে পারে।


1
একে C3P0 বলা হয়। DBCP একক থ্রেডে অ্যাক্সেস লক করার পরে এটি বহুবিধ পরিবেশে DBCP এর চেয়ে আরও পারফরম্যান্স।
বালাসসি

@BalusC। সংশোধনের জন্য ধন্যবাদ, আমার disclecsiaথেকে আমার আরও ভাল হয়েছে। আপনি দেখতে পাচ্ছেন যে লিঙ্কটি সঠিক। :)
আলেকজান্ডার পোগ্রেবন্যাক

1
@Mudassir। আমি স্প্রিং -> স্ট্যাটিক.স্প্রিংসোর্স / প্রকল্পগুলি / টিসি- সার্ভার / ২.০ / অ্যাডমিন / এইচটিমলসিং /… থেকে টমক্যাটকে অবদান রেখে ডিবিসিপি-র জন্য একটি ড্রপ-ইন প্রতিস্থাপনের দিকে তাকানোর পরামর্শ দেব । এটি ব্যবহার করার জন্য আপনার পুরো টোম্যাট সার্ভারের দরকার নেই, কেবল একটি একক জার tomcat-jdbc। আপনি মাভেন সেন্ট্রাল থেকে এটি পেতে পারেন -> org.apache.tomcat:tomcat-jdbc:jar:7.0.22-> অনুসন্ধান. maven.org/…
আলেকজান্ডার পোগ্রেবন্যাক

@ আলেকজান্ডারপোগ্রেবন্যাক: আলেকজান্ডারকে ধন্যবাদ, আপনাকে ভালো লাগছে। আমি এক্সিস ওয়েব সার্ভিসে সিপি ব্যবহার করার পরিকল্পনা করছি। আপনার পরামর্শ সম্পর্কে চিন্তা করবে। - মুদাসসির 7 মিনিট আগে
মুদাসসির

17

আমি কমন্স-ডিবিসিপি লাইব্রেরি ব্যবহার করার পরামর্শ দেব । এটি কীভাবে ব্যবহার করতে হবে তার উপরে তালিকাভুক্ত অসংখ্য উদাহরণ রয়েছে , সরল সরলটির লিঙ্কটি এখানে । ব্যবহার খুব সহজ:

 BasicDataSource ds = new BasicDataSource();
 ds.setDriverClassName("oracle.jdbc.driver.OracleDriver")
 ds.setUsername("scott");
 ds.setPassword("tiger");
 ds.setUrl(connectURI);
 ...
 Connection conn = ds.getConnection();

আপনাকে কেবল একবার ডেটা উত্স তৈরি করতে হবে, সুতরাং আপনি কীভাবে এটি করতে না জানেন তা নিশ্চিত করে ডকুমেন্টেশনটি পড়েছেন তা নিশ্চিত করুন। আপনি যদি জেডিবিসি স্টেটমেন্টগুলি সঠিকভাবে কীভাবে লিখবেন সে সম্পর্কে আপনার সচেতন না হলে আপনি সংস্থানগুলি ফাঁস করবেন না, আপনি এই উইকিপিডিয়া পৃষ্ঠাটি পড়তেও পারেন ।


8
এটি কি আসলে একটি সংযোগ পুল তৈরি করে?
llm

@ এলএম শিওর! javax.sql.DataSourceইন্টারফেস সংজ্ঞা "সংযোগ পুলিং" এর একটি বাস্তবায়ন রয়েছে (ব্যতীত, আমি মনে করি আপনি ইতিমধ্যে জানেন কি একটি JDBC এর ইন্টারফেস)।
এডি

7

আমি যেখানে কাজ করি সেখানে অ্যাপ সার্ভারে (ওরাকল অ্যাপ্লিকেশন সার্ভার 10 জি, যেমনটি আমি মনে করি), পুলিংটি অ্যাপ সার্ভার দ্বারা পরিচালিত হয়। আমরা একটি javax.sql.DataSourceসঙ্গে একটি JNDI চেহারা ব্যবহার একটি পুনরুদ্ধার javax.sql.InitialContext

এটি এমন কিছু করা হয়েছে

try {     
   context = new InitialContext();
   jdbcURL = (DataSource) context.lookup("jdbc/CachedDS");
   System.out.println("Obtained Cached Data Source ");
}
catch(NamingException e)   
{  
    System.err.println("Error looking up Data Source from Factory: "+e.getMessage());
}

(আমরা এই কোডটি লিখিনি, এটি এই নথি থেকে অনুলিপি করা হয়েছে ))


5

পুকুর

  • পুলিং মেকানিজম হ'ল আগাম বস্তু তৈরির উপায়। যখন একটি ক্লাস বোঝা হয়।
  • এটি অ্যাপ্লিকেশনটির উন্নতি করে performance[অবজেক্ট-ডেটাতে কোনও ক্রিয়া সম্পাদন করতে একই বস্তুর পুনরায় ব্যবহার করে] এবং memory[অনেকগুলি বিষয় বরাদ্দকরণ এবং ডি-বরাদ্দকরণ একটি গুরুত্বপূর্ণ মেমরি পরিচালনা ওভারহেড তৈরি করে]।
  • আমরা একই অবজেক্টটি ব্যবহার করছি, আবর্জনা সংগ্রহের লোড হ্রাস করার কারণে অবজেক্ট ক্লিন আপের প্রয়োজন নেই।

Ool পুলিং [ Objectপুল, Stringকনস্ট্যান্ট পুল, Threadপুল, সংযোগ পুল]

স্ট্রিং কনস্ট্যান্ট পুল

  • স্ট্রিং আক্ষরিক পুল প্রতিটি স্বতন্ত্র স্ট্রিং মানের কেবল একটি অনুলিপি বজায় রাখে। যা অবশ্যই পরিবর্তনযোগ্য হবে।
  • ইন্টার্ন পদ্ধতিটি চালু করা হলে, সমান পদ্ধতিতে পুলটিতে একই সামগ্রীর সাথে অবজেক্টের প্রাপ্যতা পরীক্ষা করে। Ool পুলে স্ট্রিং-অনুলিপি উপলব্ধ থাকলে রেফারেন্সটি দেয়। «অন্যথায়, স্ট্রিং অবজেক্টটি পুলটিতে যুক্ত করা হয় এবং রেফারেন্সটি দেয়।

উদাহরণ: পুল থেকে অনন্য বিষয় যাচাই করতে স্ট্রিং ।

public class StringPoolTest {
    public static void main(String[] args) { // Integer.valueOf(), String.equals()
        String eol = System.getProperty("line.separator"); //java7 System.lineSeparator();

        String s1 = "Yash".intern();
        System.out.format("Val:%s Hash:%s SYS:%s "+eol, s1, s1.hashCode(), System.identityHashCode(s1));
        String s2 = "Yas"+"h".intern();
        System.out.format("Val:%s Hash:%s SYS:%s "+eol, s2, s2.hashCode(), System.identityHashCode(s2));
        String s3 = "Yas".intern()+"h".intern();
        System.out.format("Val:%s Hash:%s SYS:%s "+eol, s3, s3.hashCode(), System.identityHashCode(s3));
        String s4 = "Yas"+"h";
        System.out.format("Val:%s Hash:%s SYS:%s "+eol, s4, s4.hashCode(), System.identityHashCode(s4));
    }
}

সংযোগ পুল প্রকার -4 ব্যবহার ড্রাইভার 3rd পার্টি লাইব্রেরি ব্যবহার [ DBCP2, c3p0, Tomcat JDBC]

Type 4 - The Thin driver converts JDBC calls directly into the vendor-specific database protocol Ex[Oracle - Thick, MySQL - Quora]. উইকি

সংযোগ পুল ব্যবস্থায়, শ্রেণিটি লোড হয়ে গেলে এটি physical JDBC connectionবস্তুগুলি পায় এবং ব্যবহারকারীর কাছে একটি মোড়ানো শারীরিক সংযোগ অবজেক্ট সরবরাহ করে। PoolableConnectionপ্রকৃত সংযোগের চারপাশে একটি মোড়ক।

  • getConnection()ফ্রি মোড়ক -সংযোগের একটি চয়ন করুন সংযোগ অবজেক্টটি ফর্ম এবং এটি প্রদান করে।
  • close() এটি বন্ধ করার পরিবর্তে মোড়কযুক্ত সংযোগটি পুলটিতে ফিরিয়ে দেয়।

উদাহরণ: জাভা 7 সহ ~ ডিবিসিপি 2 সংযোগ পুল ব্যবহার করা হচ্ছে [ try-with-resources]

public class ConnectionPool {
    static final BasicDataSource ds_dbcp2 = new BasicDataSource();
    static final ComboPooledDataSource ds_c3p0 = new ComboPooledDataSource();
    static final DataSource ds_JDBC = new DataSource();

    static Properties prop = new Properties();
    static {
        try {
            prop.load(ConnectionPool.class.getClassLoader().getResourceAsStream("connectionpool.properties"));

            ds_dbcp2.setDriverClassName( prop.getProperty("DriverClass") );
            ds_dbcp2.setUrl( prop.getProperty("URL") );
            ds_dbcp2.setUsername( prop.getProperty("UserName") );
            ds_dbcp2.setPassword( prop.getProperty("Password") );
            ds_dbcp2.setInitialSize( 5 );

            ds_c3p0.setDriverClass( prop.getProperty("DriverClass") );
            ds_c3p0.setJdbcUrl( prop.getProperty("URL") );
            ds_c3p0.setUser( prop.getProperty("UserName") );
            ds_c3p0.setPassword( prop.getProperty("Password") );
            ds_c3p0.setMinPoolSize(5);
            ds_c3p0.setAcquireIncrement(5);
            ds_c3p0.setMaxPoolSize(20);

            PoolProperties pool = new PoolProperties();
            pool.setUrl( prop.getProperty("URL") );
            pool.setDriverClassName( prop.getProperty("DriverClass") );
            pool.setUsername( prop.getProperty("UserName") );
            pool.setPassword( prop.getProperty("Password") );
            pool.setValidationQuery("SELECT 1");// SELECT 1(mysql) select 1 from dual(oracle)

            pool.setInitialSize(5);
            pool.setMaxActive(3);
            ds_JDBC.setPoolProperties( pool );
        } catch (IOException e) {   e.printStackTrace();
        } catch (PropertyVetoException e) { e.printStackTrace(); }
    }

    public static Connection getDBCP2Connection() throws SQLException {
        return ds_dbcp2.getConnection();
    }

    public static Connection getc3p0Connection() throws SQLException {
        return ds_c3p0.getConnection();
    }

    public static Connection getJDBCConnection() throws SQLException {
        return ds_JDBC.getConnection();
    }
}
public static boolean exists(String UserName, String Password ) throws SQLException {
    boolean exist = false;
    String SQL_EXIST = "SELECT * FROM users WHERE username=? AND password=?";
    try ( Connection connection = ConnectionPool.getDBCP2Connection();
          PreparedStatement pstmt = connection.prepareStatement(SQL_EXIST); ) {
        pstmt.setString(1, UserName );
        pstmt.setString(2, Password );

        try (ResultSet resultSet = pstmt.executeQuery()) {
            exist = resultSet.next(); // Note that you should not return a ResultSet here.
        }
    }
    System.out.println("User : "+exist);
    return exist;
}

jdbc:<DB>:<drivertype>:<HOST>:<TCP/IP PORT>:<dataBaseName> jdbc:oracle:thin:@localhost:1521:myDBName jdbc:mysql://localhost:3306/myDBName

connectionpool.properties

URL         : jdbc:mysql://localhost:3306/myDBName
DriverClass : com.mysql.jdbc.Driver
UserName    : root
Password    :

ওয়েব অ্যাপ্লিকেশন: সংযোগের সমস্যাটি এড়াতে যখন সমস্ত সংযোগ বন্ধ হয়ে যায় [মাইএসকিউএল "ওয়েটটাইমআউটআউট" ডিফল্ট 8 ঘন্টা] অন্তর্নিহিত ডিবি দিয়ে সংযোগটি পুনরায় খোলার জন্য।

আপনি প্রতিটি সংযোগ টেস্ট করার জন্য এটি টেস্টঅনবোর = সত্য এবং বৈধকরণকুচি = "নির্বাচন 1" সেট করে এবং মাইএসকিউএল সার্ভারের জন্য স্বতঃসিদ্ধ হওয়ার সাথে সাথে স্বতঃসংযোগ ব্যবহার করবেন না। সমস্যা

===== ===== context.xml ===== =====
<?xml version="1.0" encoding="UTF-8"?>
<!-- The contents of this file will be loaded for a web application -->
<Context>
    <Resource name="jdbc/MyAppDB" auth="Container" 
        factory="org.apache.tomcat.jdbc.pool.DataSourceFactory" 
        type="javax.sql.DataSource" 

        initialSize="5" minIdle="5" maxActive="15" maxIdle="10"

        testWhileIdle="true"
            timeBetweenEvictionRunsMillis="30000"

        testOnBorrow="true"
            validationQuery="SELECT 1"
            validationInterval="30000"


        driverClassName="com.mysql.jdbc.Driver" 
        url="jdbc:mysql://localhost:3306/myDBName" 
        username="yash" password="777"
    />
</Context>

===== ===== web.xml ===== =====
<resource-ref>
    <description>DB Connection</description>
    <res-ref-name>jdbc/MyAppDB</res-ref-name>
    <res-type>javax.sql.DataSource</res-type>
    <res-auth>Container</res-auth>
</resource-ref>
===== ===== DBOperations ===== =====
servlet «   init() {}
Normal call used by sevlet  « static {}

static DataSource ds;
static {
    try {
        Context ctx=new InitialContext();
        Context envContext = (Context)ctx.lookup("java:comp/env");
        ds  =   (DataSource) envContext.lookup("jdbc/MyAppDB");
    } catch (NamingException e) {   e.printStackTrace();    }
}

এগুলিও দেখুন:


স্ট্রিং কনস্ট্যান্ট পুল উদাহরণে, আমি যখন বুঝতে পারি যে আপনি "পুলে স্ট্রিং-কপি উপলব্ধ থাকলে [.Equals ()] লিখে রেফারেন্সটি ফিরিয়ে দেন« অন্যথায়, স্ট্রিং অবজেক্টটি পুলটিতে যুক্ত হয় এবং রেফারেন্সটি ফিরিয়ে দেয়। " তবে public class StringPoolTestকেবলমাত্র 2 টি অকার্যকর পদ্ধতি রয়েছে যাতে তারা কোনও কিছুই ফেরায় না। সেই কোডটি কি স্ট্রিং পুল পরিচালনা করার প্রক্রিয়াটি দিয়ে যায়? এমনকি এটি কোনও যুক্তি ব্যবহার করে বলে মনে হয় না।
জেফারি_ও_ওয়াইন্ড

@ জেফারি_টি_উইন্ড: - স্ট্রিং পুল যাচাইয়ের জন্য পুল ধারণাটি জানা মাত্র, আমি সবেমাত্র হ্যাশকোড, পরিচয়্যাশকোড পদ্ধতি ব্যবহার করেছি । কোডটি পরিবর্তন করেছে ...
যশ

দুঃখিত, s1সংজ্ঞায়িত হয় না?
jeffery_t__ind

ঠিক আছে, আমি নিশ্চিত হয়েছি যে আমি এটি সব দেখছি। আমি যে কাজ করবে। আপনার ConnectionPoolক্লাসের কাছাকাছি কিছুতে আমার কী প্রয়োজন । অনেক ধন্যবাদ.
jeffery_t__ind

5

2017 এর শেষের দিকে, এই মুহুর্তে প্রক্সুল, বোনসিপি, সি 3 পি 0, ডিবিসিপি বেশিরভাগই অচল। হিকারিসিপি (২০১২ সালে তৈরি) প্রতিশ্রুতিবদ্ধ বলে মনে হচ্ছে, আমার জানা সমস্ত কিছু থেকে দরজাটি উড়িয়ে দিয়েছে। http://www.baeldung.com/hikaricp

প্রক্সুলের বেশ কয়েকটি সমস্যা রয়েছে:
- ভারী বোঝার অধীনে সংযোগের সর্বাধিক সংখ্যার বেশি হতে পারে এবং সর্বাধিকের নীচে
ফিরে না আসতে পারে
- সংযোগের মেয়াদ শেষ হয়ে গেলেও ন্যূনতম সংযোগগুলিতে ফিরে না আসতে পরিচালনা করতে পারে - পুরো পুলটি লক করতে পারে (এবং সমস্ত সার্ভার / ক্লায়েন্ট থ্রেড) যদি হাউসকিপার থ্রেডের সময় ডাটাবেসের সাথে সংযোগ স্থাপন করতে সমস্যা হয় (.setQueryTimeout ব্যবহার করে না)
- হাউসকিপার থ্রেডটি প্রক্রিয়াটির জন্য সংযোগ পুল লক থাকা অবস্থায় প্রোটোটাইপার থ্রেডকে সংযোগগুলি পুনরায় তৈরি করার অনুরোধ জানায় (ঝাড়ু) যা রেস শর্ত / লকআপের ফলে তৈরি হতে পারে। এই পদ্ধতিতে কলগুলি সর্বশেষ প্যারামিটার সর্বদা ঝাড়ু হওয়া উচিত: লুপ চলাকালীন মিথ্যা, শুধুমাত্র ঝাড়ু: এর নিচে সত্য।
- হাউসকিপারকে কেবল শেষে একক প্রোটোটাইপ কন্ট্রোলার সুইপ প্রয়োজন এবং আরও [উপরে উল্লিখিত]
- হাউসকিপার থ্রেড সংযোগগুলির পরীক্ষা করার জন্য যা সংযোগগুলির মেয়াদ শেষ হতে পারে তা দেখার আগে [ফায়ারওয়াল ইত্যাদিতে ডিবিতে অন্য সময়সীমার মাধ্যমে ভেঙে ফেলা / শেষ হতে পারে এমন কিছু পরীক্ষার ঝুঁকি]
- প্রকল্পটির অসমাপ্ত কোড রয়েছে (সংজ্ঞাযুক্ত বৈশিষ্ট্যগুলি তবে তার উপরে অভিনয় করা হয়নি
- ডিফল্ট সর্বাধিক সংযোগের জীবনটি 4 ঘন্টা (অতিরিক্ত) হিসাবে সংজ্ঞায়িত না করা হয়
- হাউসকিপার থ্রেড প্রতি পুল প্রতি পাঁচ সেকেন্ডে চালিত হয় (অতিরিক্ত)

আপনি কোডটি সংশোধন করতে পারেন এবং এই উন্নতি করতে পারেন। তবে এটি 2003 সালে তৈরি করা হয়েছিল এবং ২০০৮ সালে আপডেট হয়েছিল, এর প্রায় 10 বছরের জাভা উন্নতির অভাব রয়েছে যা হিকারিকাপের মতো সমাধানগুলি ব্যবহার করে।


4

অন্যদের উত্তর হিসাবে, আপনি সম্ভবত অ্যাপাচি ডিবিসিপি বা সি 3 পি 0 দিয়ে খুশি হবেন । উভয়ই জনপ্রিয়, এবং সূক্ষ্মভাবে কাজ করে।

আপনার সন্দেহ সম্পর্কিত

জাভ্যাক্স.এসকিএল বা জাভা.এসকিএল সংযোগ বাস্তবায়নগুলি পোল করে না? কেন এগুলি ব্যবহার করা ভাল হবে না?

তারা বাস্তবায়ন সরবরাহ করে না, পরিবর্তে ইন্টারফেস এবং কিছু সমর্থন ক্লাস করে কেবল তৃতীয় পক্ষের গ্রন্থাগার (পুল বা ড্রাইভার) প্রয়োগকারী প্রোগ্রামারদের কাছে প্রকাশ করে। সাধারণত আপনি এটি তাকান না। আপনার কোডটি আপনার পুলের সংযোগগুলি যেমন স্বচ্ছ উপায়ে "সরল" সংযোগের সাথে মোকাবেলা করা উচিত।


4

সেই লক্ষ্যে ভিবার ডিবিসিপি হ'ল একটি গ্রন্থাগার। হাইবারনেট, স্প্রিং + হাইবারনেট, বা প্রোগ্রামগতভাবে কীভাবে এটি ব্যবহারের জন্য কনফিগার করতে হয় তার কয়েকটি উদাহরণ তার ওয়েবসাইটে পাওয়া যাবে: http://www.vibur.org/

এছাড়াও, অস্বীকার এখানে দেখুন


3

অ্যাপাচি কমন্সের সেই উদ্দেশ্যে একটি গ্রন্থাগার রয়েছে: ডিবিসিপি । আপনার পুলগুলির চারপাশে অদ্ভুত প্রয়োজনীয়তা না থাকলে আমি একটি লাইব্রেরিটি ব্যবহার করব কারণ এটি আপনার প্রত্যাশার চেয়ে কৌশলযুক্ত এবং আরও সূক্ষ্ম হতে বাধ্য।


1

আপনার ইউসিপি ব্যবহার করা উচিত। ইউনিভার্সাল কানেকশন পুল (ইউসিপি) একটি জাভা সংযোগ পুল। এটি একটি বৈশিষ্ট্যযুক্ত সমৃদ্ধ সংযোগ পুল এবং ওরাকলের রিয়েল অ্যাপ্লিকেশন ক্লাস্টারস (আরএসি), এডিজি, ডিজি ডাটাবেসগুলির সাথে দৃly়ভাবে সংহত।

ইউসিপি সম্পর্কে আরও তথ্যের জন্য এই পৃষ্ঠাটি দেখুন।


0

MiniConnectionPoolManager এটি যদি একটি এম্বেডযোগ্য সমাধানের সন্ধান করে থাকেন এবং পারফরম্যান্স সম্পর্কে খুব বেশি উদ্বিগ্ন না হন তবে এটি একটি জাভা-ফাইল বাস্তবায়ন though

এটি মাল্টি-লাইসেন্সধারী ইপিএল , এলজিপিএল এবং এমপিএল

এর ডকুমেন্টেশন চেক করার মতো বিকল্পও দেয় (ডিবিসিপি এবং সি 3 পি 0 এর শীর্ষে):

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.