Glassfish / Toplink وإعادة المحاولة sqljdbc.jar إلى الأبد على كسر ديسيبل-اتصال

StackOverflow https://stackoverflow.com/questions/1227789

سؤال

وأنا باستخدام 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 بطرح استثناء بدلا من ذلك تحاول الاتصال إلى الأبد؟

هل كانت مفيدة؟

المحلول

ولقد تتبعنا أن أسفل، وهذا يبدو أن هناك خطأ في sqljdbc4.jar من قبل مايكروسوفت:

<لأ href = "HTTPS: // connect.microsoft.com/SQLServer/feedback/ViewFeedback.aspx؟FeedbackID=483322 "يختلط =" نوفولو noreferrer "> https://connect.microsoft.com/SQLServer/feedback/ViewFeedback.aspx؟FeedbackID=483322

نصائح أخرى

وعلى HADB طبعة من GlassFish يسلم مجانا سائق DataDirect JDBC لMS SQL، التي يمكن التعامل مع يعيد الاتصال وإغلاق

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top