Glassfish / Toplink وإعادة المحاولة sqljdbc.jar إلى الأبد على كسر ديسيبل-اتصال
-
22-07-2019 - |
سؤال
وأنا باستخدام Glassfish وToplink جنبا إلى جنب مع MS-SQL-Server و بالتالي يستخدم sqljdbc4.jar لربط قاعدة البيانات. عند قاعدة البيانات غير متوفرة (خادم DB هو أسفل)، ويرتفع استخدام وحدة المعالجة المركزية إلى 100٪ وGlassfish يكف عن محاولة الاتصال إلى الأبد. سجل بلدي تملأ بسرعة مع الرسائل التالية:
و
FINE: TDSChannel (ConnectionID:7) read failed:Connection reset
FINE: *** SQLException:ConnectionID:7 com.microsoft.sqlserver.jdbc.SQLServerException: Connection reset Connection reset
FINE: com.microsoft.sqlserver.jdbc.SQLServerConnection.terminate(SQLServerConnection.java:1368)com.microsoft.sqlserver.jdbc.SQLServerConnection.terminate(SQLServerConnection.java:1355)com.microsoft.sqlserver.jdbc.TDSChannel.read(IOBuffer.java:1532)com.microsoft.sqlserver.jdbc.TDSReader.readPacket(IOBuffer.java:3274)com.microsoft.sqlserver.jdbc.TDSReader.nextPacket(IOBuffer.java:3227)com.microsoft.sqlserver.jdbc.TDSReader.ensurePayload(IOBuffer.java:3203)com.microsoft.sqlserver.jdbc.TDSReader.peekTokenType(IOBuffer.java:3420)com.microsoft.sqlserver.jdbc.TDSParser.parse(tdsparser.java:50)com.microsoft.sqlserver.jdbc.TDSParser.parse(tdsparser.java:39)com.microsoft.sqlserver.jdbc.SQLServerStatement.processExecuteResults(SQLServerStatement.java:1064)com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement$PrepStmtExecCmd.processResponse(SQLServerPreparedStatement.java:345)com.microsoft.sqlserver.jdbc.TDSCommand.close(IOBuffer.java:4111)com.microsoft.sqlserver.jdbc.SQLServerStatement.discardLastExecutionResults(SQLServerStatement.java:99)com.microsoft.sqlserver.jdbc.SQLServerStatement.closeInternal(SQLServerStatement.java:592)com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement.closeInternal(SQLServerPreparedStatement.java:170)com.microsoft.sqlserver.jdbc.SQLServerStatement.close(SQLServerStatement.java:604)com.sun.gjc.spi.ManagedConnectionFactory.isValidByTableQuery(ManagedConnectionFactory.java:397)com.sun.gjc.spi.ManagedConnectionFactory.isValid(ManagedConnectionFactory.java:297)com.sun.gjc.spi.ManagedConnectionFactory.getInvalidConnections(ManagedConnectionFactory.java:246)com.sun.enterprise.resource.AbstractConnectorAllocator.getInvalidConnections(AbstractConnectorAllocator.java:99)com.sun.enterprise.resource.AbstractResourcePool.removeInvalidResources(AbstractResourcePool.java:1535)com.sun.enterprise.resource.AbstractResourcePool.removeInvalidAndIdleResources(AbstractResourcePool.java:1515)com.sun.enterprise.resource.AbstractResourcePool.resizePool(AbstractResourcePool.java:1448)com.sun.enterprise.resource.AbstractResourcePool$Resizer.run(AbstractResourcePool.java:1610)java.util.TimerThread.mainLoop(Timer.java:512)java.util.TimerThread.run(Timer.java:462)
هل هناك طريقة لتحديد الحد إعادة المحاولة للاتصالات إلى قاعدة البيانات، أو مهلة قفة بين المحاولة اتصال؟
وكيف يمكنني أن أجعل Glassfish بطرح استثناء بدلا من ذلك تحاول الاتصال إلى الأبد؟
المحلول
نصائح أخرى
وعلى HADB طبعة من GlassFish يسلم مجانا سائق DataDirect JDBC لMS SQL، التي يمكن التعامل مع يعيد الاتصال وإغلاق
لا تنتمي إلى StackOverflow