कल एडब्ल्यूएस के आरडीएस नीचे चला गया - और हमारे डेटाबेस भी किया।c3p0 के लिए getConnection() टाइमआउट कैसे सेट करें?
जब ऐसा हुआ, तो C3P0 डेटाबेस कनेक्शन प्राप्त करने का प्रयास करेगा और लटका होगा। मैं स्पष्ट रूप से प्रतिक्रिया के लिए हमेशा के लिए इंतजार करने के बजाय, इन उदाहरणों में एक त्रुटि पृष्ठ वापस करने के लिए अपने आवेदन की तरह होगा।
ComboPooledDataSource db = new ComboPooledDataSource();
...
Connection conn = db.getConnection();
कैसे c3p0 के कनेक्शन पूल से कनेक्शन प्राप्त करने के लिए एक समय समाप्ति सेट कर सकते हैं:
यहाँ कोड कैसा दिखता है?
मैंने सोचा कि चेकआउटटाइमआउट() यह होगा - लेकिन ऐसा नहीं है। यह "क्लाइंट कॉलिंग प्राप्त करने वाले मिलीसेकंड की संख्या कनेक्शन कनेक्शन() पूल समाप्त होने पर कनेक्शन के लिए चेक-इन या अधिग्रहण की प्रतीक्षा करेगा।" चूंकि पूल समाप्त नहीं हुआ है (यह केवल अनुपलब्ध है) यह लागू नहीं होता है।
मैंने यह भी सोचा कि सेटएक्वायर रीट्रीएट्सप्ट्स और सेटएक्वायर इंस्ट्रक्शन काम करेगा - लेकिन चूंकि कोई कनेक्शन विफल नहीं होता है, इसलिए यह प्रतिक्रिया नहीं देता है।
जब मैं पूरे ढेर खींच लिया, यह वह जगह है जहाँ यह रुक जाता:
SocketInputStream.socketRead0(FileDescriptor, byte[], int, int, int) line: not available [native method]
SocketInputStream.read(byte[], int, int) line: 129
ReadAheadInputStream.fill(int) line: 113
ReadAheadInputStream.readFromUnderlyingStreamIfNecessary(byte[], int, int) line: 160
ReadAheadInputStream.read(byte[], int, int) line: 188
MysqlIO.readFully(InputStream, byte[], int, int) line: 2428
MysqlIO.reuseAndReadPacket(Buffer, int) line: 2882
MysqlIO.reuseAndReadPacket(Buffer) line: 2871
MysqlIO.checkErrorPacket(int) line: 3414
MysqlIO.sendCommand(int, String, Buffer, boolean, String) line: 1936
MysqlIO.sqlQueryDirect(StatementImpl, String, String, Buffer, int, int, int, boolean, String, Field[]) line: 2060
JDBC4Connection(ConnectionImpl).execSQL(StatementImpl, String, int, Buffer, int, int, boolean, String, Field[], boolean) line: 2542
JDBC4PreparedStatement(PreparedStatement).executeInternal(int, Buffer, boolean, boolean, Field[], boolean) line: 1734
JDBC4PreparedStatement(PreparedStatement).executeQuery() line: 1885
NewProxyPreparedStatement.executeQuery() line: 76
C3P0PooledConnectionPoolManager.initializeAutomaticTestTable(String, DbAuth) line: 799
C3P0PooledConnectionPoolManager.createPooledConnectionPool(DbAuth) line: 696
C3P0PooledConnectionPoolManager.getPool(DbAuth) line: 257
C3P0PooledConnectionPoolManager.getPool() line: 271
ComboPooledDataSource(AbstractPoolBackedDataSource).getNumThreadsAwaitingCheckoutDefaultUser() line: 203
NativeMethodAccessorImpl.invoke0(Method, Object, Object[]) line: not available [native method]
NativeMethodAccessorImpl.invoke(Object, Object[]) line: 39
DelegatingMethodAccessorImpl.invoke(Object, Object[]) line: 25
Method.invoke(Object, Object...) line: 597
BeansUtils.extractAccessiblePropertiesToMap(Map, Object, Collection) line: 359
BeansUtils.appendPropNamesAndValues(StringBuffer, Object, Collection) line: 324
ComboPooledDataSource.toString() line: 539
ComboPooledDataSource(AbstractPoolBackedDataSource).getPoolManager() line: 462
ComboPooledDataSource(AbstractPoolBackedDataSource).getConnection() line: 128
जब मैं googled "socketRead0 टाइमआउट 'और' socketRead0 लटका" - मैं समस्याओं लेकिन कोई वास्तविक समाधान का एक बहुत देखते हैं।
क्या टाइमआउट अवधि को यहां लागू करने का कोई तरीका है?
धन्यवाद!