java - Spring Batch JdbcCursorItemReader SqlServer 连接正在关闭过程中。“TDS 协议无效”
问题描述
我的驱动程序:
com.microsoft.sqlserver mssql-jdbc 8.4.0.jre8
我的 itemReader 实现:
@Bean(destroyMethod = "")
public ItemReader<TedEmitidaItem> tedBackOfficeReader( ) {
return new JdbcCursorItemReaderBuilder<TedEmitidaItem>()
.name("cursorItemReader")
.dataSource(this.dataSource)
.sql(QUERY_TED_EMITIDA)
.rowMapper(new BeanPropertyRowMapper<>(TedEmitidaItem.class))
.build();
}
堆栈跟踪:
1:02:32.846 [restartedMain] INFO o.s.batch.core.job.SimpleStepHandler - Executing step: [stepTedBackOffice]
11:02:33.462 [restartedMain] WARN o.s.b.core.step.item.ChunkMonitor - No ItemReader set (must be concurrent step), so ignoring offset data.
11:02:33.609 [spring_batch_ted_back_office4] ERROR c.m.s.jdbc.internals.TDS.TOKEN - ConnectionID:4 ClientConnectionId: f6cbc1f3-4f59-4679-a8d7-23ee20aa92d1: FetchBufferTokenHandler: Encountered unexpected unknown token (0x16)
11:02:33.609 [spring_batch_ted_back_office3] ERROR c.m.s.jdbc.internals.TDS.TOKEN - ConnectionID:4 ClientConnectionId: f6cbc1f3-4f59-4679-a8d7-23ee20aa92d1: FetchBufferTokenHandler: Encountered unexpected unknown token (0x16)
11:02:33.609 [spring_batch_ted_back_office1] ERROR c.m.s.jdbc.internals.TDS.TOKEN - ConnectionID:4 ClientConnectionId: f6cbc1f3-4f59-4679-a8d7-23ee20aa92d1: FetchBufferTokenHandler: Encountered unexpected unknown token (0x16)
11:02:33.609 [spring_batch_ted_back_office2] ERROR c.m.s.jdbc.internals.TDS.TOKEN - ConnectionID:4 ClientConnectionId: f6cbc1f3-4f59-4679-a8d7-23ee20aa92d1: FetchBufferTokenHandler: Encountered unexpected unknown token (0x16)
11:02:33.609 [spring_batch_ted_back_office4] ERROR c.m.s.jdbc.internals.TDS.Reader - ConnectionID:4 ClientConnectionId: f6cbc1f3-4f59-4679-a8d7-23ee20aa92d1 got unexpected value in TDS response at offset:35
11:02:33.609 [spring_batch_ted_back_office3] ERROR c.m.s.jdbc.internals.TDS.Reader - ConnectionID:4 ClientConnectionId: f6cbc1f3-4f59-4679-a8d7-23ee20aa92d1 got unexpected value in TDS response at offset:35
11:02:33.609 [spring_batch_ted_back_office1] ERROR c.m.s.jdbc.internals.TDS.Reader - ConnectionID:4 ClientConnectionId: f6cbc1f3-4f59-4679-a8d7-23ee20aa92d1 got unexpected value in TDS response at offset:35
11:02:33.609 [spring_batch_ted_back_office2] ERROR c.m.s.jdbc.internals.TDS.Reader - ConnectionID:4 ClientConnectionId: f6cbc1f3-4f59-4679-a8d7-23ee20aa92d1 got unexpected value in TDS response at offset:35
11:02:33.988 [restartedMain] ERROR o.s.batch.core.step.AbstractStep - Encountered an error executing step stepTedBackOffice in job importTedBackOfficeJob
org.springframework.batch.core.step.skip.NonSkippableReadException: Non-skippable exception during read
at org.springframework.batch.core.step.item.FaultTolerantChunkProvider.read(FaultTolerantChunkProvider.java:105)
at org.springframework.batch.core.step.item.SimpleChunkProvider$1.doInIteration(SimpleChunkProvider.java:119)
at org.springframework.batch.repeat.support.RepeatTemplate.getNextResult(RepeatTemplate.java:375)
at org.springframework.batch.repeat.support.RepeatTemplate.executeInternal(RepeatTemplate.java:215)
at org.springframework.batch.repeat.support.RepeatTemplate.iterate(RepeatTemplate.java:145)
at org.springframework.batch.core.step.item.SimpleChunkProvider.provide(SimpleChunkProvider.java:113)
at org.springframework.batch.core.step.item.ChunkOrientedTasklet.execute(ChunkOrientedTasklet.java:69)
at org.springframework.batch.core.step.tasklet.TaskletStep$ChunkTransactionCallback.doInTransaction(TaskletStep.java:407)
at org.springframework.batch.core.step.tasklet.TaskletStep$ChunkTransactionCallback.doInTransaction(TaskletStep.java:331)
at org.springframework.transaction.support.TransactionTemplate.execute(TransactionTemplate.java:140)
at org.springframework.batch.core.step.tasklet.TaskletStep$2.doInChunkContext(TaskletStep.java:273)
at org.springframework.batch.core.scope.context.StepContextRepeatCallback.doInIteration(StepContextRepeatCallback.java:82)
at org.springframework.batch.repeat.support.TaskExecutorRepeatTemplate$ExecutingRunnable.run(TaskExecutorRepeatTemplate.java:262)
at org.springframework.core.task.SimpleAsyncTaskExecutor$ConcurrencyThrottlingRunnable.run(SimpleAsyncTaskExecutor.java:275)
at java.lang.Thread.run(Thread.java:745)
Caused by: org.springframework.dao.DataAccessResourceFailureException: Attempt to process next row failed; SQL [SELECT top(10000)[NUM_SEQE_TED] as 'id_ted' FROM [dbo].[TBDY5504_PROD_TED_EMIS]]; O fluxo do protocolo TDS não é válido. Token inesperado unknown token (0x16).; nested exception is com.microsoft.sqlserver.jdbc.SQLServerException: O fluxo do protocolo TDS não é válido. Token inesperado unknown token (0x16).
at org.springframework.jdbc.support.SQLStateSQLExceptionTranslator.doTranslate(SQLStateSQLExceptionTranslator.java:107)
at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:72)
at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:81)
at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:81)
at org.springframework.batch.item.database.AbstractCursorItemReader.doRead(AbstractCursorItemReader.java:484)
at org.springframework.batch.item.support.AbstractItemCountingItemStreamItemReader.read(AbstractItemCountingItemStreamItemReader.java:92)
at org.springframework.batch.core.step.item.SimpleChunkProvider.doRead(SimpleChunkProvider.java:94)
at org.springframework.batch.core.step.item.FaultTolerantChunkProvider.read(FaultTolerantChunkProvider.java:87)
... 14 common frames omitted
Caused by: com.microsoft.sqlserver.jdbc.SQLServerException: O fluxo do protocolo TDS não é válido. Token inesperado unknown token (0x16).
at com.microsoft.sqlserver.jdbc.SQLServerConnection.terminate(SQLServerConnection.java:3145)
at com.microsoft.sqlserver.jdbc.SQLServerConnection.terminate(SQLServerConnection.java:3134)
at com.microsoft.sqlserver.jdbc.SQLServerConnection.throwInvalidTDSToken(SQLServerConnection.java:3124)
at com.microsoft.sqlserver.jdbc.TDSReader.throwInvalidTDSToken(IOBuffer.java:6513)
at com.microsoft.sqlserver.jdbc.TDSParser.throwUnexpectedTokenException(tdsparser.java:149)
at com.microsoft.sqlserver.jdbc.TDSParser.parse(tdsparser.java:134)
at com.microsoft.sqlserver.jdbc.TDSParser.parse(tdsparser.java:37)
at com.microsoft.sqlserver.jdbc.SQLServerResultSet$FetchBuffer.nextRow(SQLServerResultSet.java:5441)
at com.microsoft.sqlserver.jdbc.SQLServerResultSet.fetchBufferNext(SQLServerResultSet.java:1770)
at com.microsoft.sqlserver.jdbc.SQLServerResultSet.next(SQLServerResultSet.java:1028)
at org.springframework.batch.item.database.AbstractCursorItemReader.doRead(AbstractCursorItemReader.java:475)
... 17 common frames omitted
11:02:33.995 [restartedMain] ERROR c.m.s.jdbc.internals.TDS.TOKEN - ConnectionID:4 ClientConnectionId: f6cbc1f3-4f59-4679-a8d7-23ee20aa92d1: FetchBufferTokenHandler: Encountered unexpected unknown token (0x16)
11:02:33.995 [restartedMain] ERROR c.m.s.jdbc.internals.TDS.Reader - ConnectionID:4 ClientConnectionId: f6cbc1f3-4f59-4679-a8d7-23ee20aa92d1 got unexpected value in TDS response at offset:35
11:02:33.996 [restartedMain] ERROR c.m.s.jdbc.internals.TDS.TOKEN - ConnectionID:4 ClientConnectionId: f6cbc1f3-4f59-4679-a8d7-23ee20aa92d1: getNextResult: Encountered unexpected unknown token (0x16)
11:02:33.996 [restartedMain] ERROR c.m.s.jdbc.internals.TDS.Reader - ConnectionID:4 ClientConnectionId: f6cbc1f3-4f59-4679-a8d7-23ee20aa92d1 got unexpected value in TDS response at offset:35
11:02:34.005 [restartedMain] ERROR o.s.batch.core.step.AbstractStep - Exception while closing step execution resources in step stepTedBackOffice in job importTedBackOfficeJob
org.springframework.batch.item.ItemStreamException: Error while closing item reader
at org.springframework.batch.item.support.AbstractItemCountingItemStreamItemReader.close(AbstractItemCountingItemStreamItemReader.java:141)
at org.springframework.batch.item.support.CompositeItemStream.close(CompositeItemStream.java:89)
at org.springframework.batch.core.step.item.ChunkMonitor.close(ChunkMonitor.java:106)
at org.springframework.batch.item.support.CompositeItemStream.close(CompositeItemStream.java:89)
at org.springframework.batch.core.step.tasklet.TaskletStep.close(TaskletStep.java:306)
at org.springframework.batch.core.step.AbstractStep.execute(AbstractStep.java:274)
at org.springframework.batch.core.job.SimpleStepHandler.handleStep(SimpleStepHandler.java:148)
at org.springframework.batch.core.job.flow.JobFlowExecutor.executeStep(JobFlowExecutor.java:68)
at org.springframework.batch.core.job.flow.support.state.StepState.handle(StepState.java:67)
at org.springframework.batch.core.job.flow.support.SimpleFlow.resume(SimpleFlow.java:169)
at org.springframework.batch.core.job.flow.support.SimpleFlow.start(SimpleFlow.java:144)
at org.springframework.batch.core.job.flow.FlowJob.doExecute(FlowJob.java:136)
at org.springframework.batch.core.job.AbstractJob.execute(AbstractJob.java:313)
at org.springframework.batch.core.launch.support.SimpleJobLauncher$1.run(SimpleJobLauncher.java:144)
at org.springframework.core.task.SyncTaskExecutor.execute(SyncTaskExecutor.java:50)
at org.springframework.batch.core.launch.support.SimpleJobLauncher.run(SimpleJobLauncher.java:137)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:497)
at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:343)
at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:198)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163)
at org.springframework.batch.core.configuration.annotation.SimpleBatchConfiguration$PassthruAdvice.invoke(SimpleBatchConfiguration.java:127)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)
at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:212)
at com.sun.proxy.$Proxy80.run(Unknown Source)
at br.com.itau.paris.ted.reconciliation.message.etl.service.ConciliationService.conciliation(ConciliationService.java:53)
at br.com.itau.paris.ted.reconciliation.message.etl.service.ConciliationService.tedBackOFficeConciliation(ConciliationService.java:43)
at br.com.itau.paris.ted.reconciliation.message.etl.TedReconciliationMessageEtlApplication.run(TedReconciliationMessageEtlApplication.java:71)
at org.springframework.boot.SpringApplication.callRunner(SpringApplication.java:804)
at org.springframework.boot.SpringApplication.callRunners(SpringApplication.java:794)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:324)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1260)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1248)
at br.com.itau.paris.ted.reconciliation.message.etl.TedReconciliationMessageEtlApplication.main(TedReconciliationMessageEtlApplication.java:38)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:497)
at org.springframework.boot.devtools.restart.RestartLauncher.run(RestartLauncher.java:49)
Caused by: com.microsoft.sqlserver.jdbc.SQLServerException: A conexão está fechada.
at com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDriverError(SQLServerException.java:234)
at com.microsoft.sqlserver.jdbc.SQLServerConnection.checkClosed(SQLServerConnection.java:1196)
at com.microsoft.sqlserver.jdbc.SQLServerConnection.setAutoCommit(SQLServerConnection.java:3363)
at org.springframework.batch.item.database.AbstractCursorItemReader.doClose(AbstractCursorItemReader.java:402)
at org.springframework.batch.item.support.AbstractItemCountingItemStreamItemReader.close(AbstractItemCountingItemStreamItemReader.java:138)
... 40 common frames omitted
解决方案
推荐阅读
- javascript - 相同 html 上的相同 nav_bar 类
- encryption - 使用 iv 和 PKCS7Padding 加密字符串解密 AES 256 CBC(使用 Java 加密)
- c# - (如何)我可以试用新的 C# 9.0 语言功能吗?
- python - Tkinter - 为什么我的所有 Checkbuttons 的状态都链接在一个循环中?
- php - 如何每次在 iframe 中加载 html 页面而不在浏览器上存储或缓存
- r - 如何根据原始索引合并两个向量?
- javascript - 防止多个 BrowserWindow 打开电子
- node.js - 使用令牌(JWT?)管理安全请求
- javascript - 遍历图像集合 Google Earth Enigne
- machine-learning - 将 YOLO 与 vgg 分类器连接