“响应已提交,无法处理异常”错误当两次发送相同的 Rest API 请求时

桑杰瓦·拉纳辛哈

我正在使用 teiid Virtual Procedure 创建一个 Rest API 并公开我的数据。我使用缓存提示启用了结果集缓存。当我两次发送相同的 API 请求时,我在第二次尝试中没有得到任何数据,并且 teiid 控制台会记录以下异常。但是,当缓存被禁用或者我在等待缓存失效(在 ttl 时间之后)之后发送第二个请求时,请求被正确执行并且我得到了相关的响应。我所做的另一个重要观察是,当响应大小被限制为小于某个大小时(例如,使用 LIMIT 子句将响应大小限制为 10 条记录),请求会在启用缓存的情况下正确提供服务。仅当我在特定大小(在我的情况下为 15)之后增加记录大小时才会发生这种情况。

我能否知道这背后的原因以及任何修复或解决方法,以便我可以继续使用结果集缓存而不会出现此问题。

 05:04:52,909 ERROR [io.undertow.request] (default task-20) UT005023: Exception handling request to /TestView_1/report/get_data: org.jboss.resteasy.spi.UnhandledException: RESTEASY003770: Response is committed, can't handle exception
    at org.jboss.resteasy.core.SynchronousDispatcher.writeException(SynchronousDispatcher.java:167)
    at org.jboss.resteasy.core.SynchronousDispatcher.writeResponse(SynchronousDispatcher.java:471)
    at org.jboss.resteasy.core.SynchronousDispatcher.invoke(SynchronousDispatcher.java:415)
    at org.jboss.resteasy.core.SynchronousDispatcher.invokePropagateNotFound(SynchronousDispatcher.java:240)
    at org.jboss.resteasy.plugins.server.servlet.ServletContainerDispatcher.service(ServletContainerDispatcher.java:225)
    at org.jboss.resteasy.plugins.server.servlet.FilterDispatcher.doFilter(FilterDispatcher.java:62)
    at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:60)
    at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)
    at io.undertow.servlet.handlers.FilterHandler.handleRequest(FilterHandler.java:84)
    at io.undertow.servlet.handlers.security.ServletSecurityRoleHandler.handleRequest(ServletSecurityRoleHandler.java:62)
    at io.undertow.servlet.handlers.ServletDispatchingHandler.handleRequest(ServletDispatchingHandler.java:36)
    at org.wildfly.extension.undertow.security.SecurityContextAssociationHandler.handleRequest(SecurityContextAssociationHandler.java:78)
    at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
    at io.undertow.servlet.handlers.security.SSLInformationAssociationHandler.handleRequest(SSLInformationAssociationHandler.java:131)
    at io.undertow.servlet.handlers.security.ServletAuthenticationCallHandler.handleRequest(ServletAuthenticationCallHandler.java:57)
    at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
    at io.undertow.security.handlers.AbstractConfidentialityHandler.handleRequest(AbstractConfidentialityHandler.java:46)
    at io.undertow.servlet.handlers.security.ServletConfidentialityConstraintHandler.handleRequest(ServletConfidentialityConstraintHandler.java:64)
    at io.undertow.security.handlers.AuthenticationMechanismsHandler.handleRequest(AuthenticationMechanismsHandler.java:60)
    at io.undertow.servlet.handlers.security.CachedAuthenticatedSessionHandler.handleRequest(CachedAuthenticatedSessionHandler.java:77)
    at io.undertow.security.handlers.NotificationReceiverHandler.handleRequest(NotificationReceiverHandler.java:50)
    at io.undertow.security.handlers.AbstractSecurityContextAssociationHandler.handleRequest(AbstractSecurityContextAssociationHandler.java:43)
    at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
    at org.wildfly.extension.undertow.security.jacc.JACCContextIdHandler.handleRequest(JACCContextIdHandler.java:61)
    at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
    at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
    at io.undertow.servlet.handlers.ServletInitialHandler.handleFirstRequest(ServletInitialHandler.java:284)
    at io.undertow.servlet.handlers.ServletInitialHandler.dispatchRequest(ServletInitialHandler.java:263)
    at io.undertow.servlet.handlers.ServletInitialHandler.access$000(ServletInitialHandler.java:81)
    at io.undertow.servlet.handlers.ServletInitialHandler$1.handleRequest(ServletInitialHandler.java:174)
    at io.undertow.server.Connectors.executeRootHandler(Connectors.java:202)
    at io.undertow.server.HttpServerExchange$1.run(HttpServerExchange.java:793)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
    at java.lang.Thread.run(Thread.java:748)
 Caused by: java.io.IOException: already removed
    at org.teiid.common.buffer.FileStore.checkRemoved(FileStore.java:162)
    at org.teiid.common.buffer.FileStore.read(FileStore.java:156)
    at org.teiid.common.buffer.FileStore$1.nextBuffer(FileStore.java:223)
    at org.teiid.common.buffer.ExtensibleBufferedInputStream.ensureBytes(ExtensibleBufferedInputStream.java:42)
    at org.teiid.common.buffer.ExtensibleBufferedInputStream.read(ExtensibleBufferedInputStream.java:54)
    at sun.nio.cs.StreamDecoder.readBytes(StreamDecoder.java:284)
    at sun.nio.cs.StreamDecoder.implRead(StreamDecoder.java:326)
    at sun.nio.cs.StreamDecoder.read(StreamDecoder.java:178)
    at java.io.InputStreamReader.read(InputStreamReader.java:184)
    at java.io.Reader.read(Reader.java:100)
    at org.teiid.core.util.ReaderInputStream.read(ReaderInputStream.java:94)
    at org.teiid.core.util.ObjectConverterUtil.write(ObjectConverterUtil.java:106)
    at org.teiid.core.util.ObjectConverterUtil.write(ObjectConverterUtil.java:143)
    at org.teiid.core.util.ObjectConverterUtil.write(ObjectConverterUtil.java:139)
    at org.teiid.jboss.rest.TeiidRSProvider$1.write(TeiidRSProvider.java:72)
    at org.jboss.resteasy.plugins.providers.StreamingOutputProvider.writeTo(StreamingOutputProvider.java:32)
    at org.jboss.resteasy.plugins.providers.StreamingOutputProvider.writeTo(StreamingOutputProvider.java:17)
    at org.jboss.resteasy.core.interception.AbstractWriterInterceptorContext.writeTo(AbstractWriterInterceptorContext.java:131)
    at org.jboss.resteasy.core.interception.ServerWriterInterceptorContext.writeTo(ServerWriterInterceptorContext.java:60)
    at org.jboss.resteasy.core.interception.AbstractWriterInterceptorContext.proceed(AbstractWriterInterceptorContext.java:120)
    at org.jboss.resteasy.security.doseta.DigitalSigningInterceptor.aroundWriteTo(DigitalSigningInterceptor.java:145)
    at org.jboss.resteasy.core.interception.AbstractWriterInterceptorContext.proceed(AbstractWriterInterceptorContext.java:124)
    at org.jboss.resteasy.plugins.interceptors.encoding.GZIPEncodingInterceptor.aroundWriteTo(GZIPEncodingInterceptor.java:100)
    at org.jboss.resteasy.core.interception.AbstractWriterInterceptorContext.proceed(AbstractWriterInterceptorContext.java:124)
    at org.jboss.resteasy.core.ServerResponseWriter.writeNomapResponse(ServerResponseWriter.java:98)
    at org.jboss.resteasy.core.SynchronousDispatcher.writeResponse(SynchronousDispatcher.java:466)
    ... 33 more   
桑杰瓦·拉纳辛哈

我能够找到解决方案。我像@ramesh 提到的那样尝试了 Jdbc cliet。但问题依然存在。对于我们从 REST API 检索的 XML 和 JSON 格式响应,此问题仍然存在。这仅在响应大小大于 4000 个字符时发生,这是 teiid 的默认限制。我使用管理控制台从系统属性中增加了这个限制并重新启动了 teiid 集群。

property                     value    boot-time
org.teiid.maxStringLength    200000   true

这解决了这个空缓存响应问题。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Activiti Rest API:提交用户任务时捕获所有请求

来自分类Dev

尝试在Java SpringBoot中使用REST API时收到错误请求

来自分类Dev

使用Microsoft Speech到文本REST API时,收到400- OGG文件格式的错误请求

来自分类Dev

尝试在Java SpringBoot中使用REST API时收到错误请求

来自分类Dev

使用REST API并发送POST请求

来自分类Dev

WooCommerce REST API请求返回错误

来自分类Dev

WooCommerce REST API请求返回错误

来自分类Dev

无法在Outlook Rest Tasks API中两次删除具有相同名称的TaskFolder

来自分类Dev

Rest Api 异常处理

来自分类Dev

向fluxpoint API发送请求时出错

来自分类Dev

通过Rest API启用配置文件时,通过Rest Api获取活动请求时未提供phaseTimes

来自分类Dev

在节点中创建REST API时,如何将对外部网站的请求中的http响应流式传输到原始api调用?

来自分类Dev

在NodeJS Express框架中处理批处理REST API请求

来自分类Dev

如何解决与 rest api POST 请求相关的异常?

来自分类Dev

在PHP REST API中转换响应和请求

来自分类Dev

对REST API的不同并发请求

来自分类Dev

如何获得向REST API发送请求的页面?

来自分类Dev

Outlook Rest Api发送邮件请求返回状态400

来自分类Dev

如何使用 angular 向 REST api 发送删除请求

来自分类Dev

解析推送REST API错误400“错误请求”

来自分类Dev

提交两次相同的请求时 HTTP 标头错误

来自分类Dev

调用基于 API 网关的 REST API 时的内部错误消息

来自分类Dev

向Google Contacts REST API发出HTTP GET请求时如何使用API密钥

来自分类Dev

OAuth,PHP,Rest API和curl发出400错误请求

来自分类Dev

Ajax请求到Spring REST API 415错误

来自分类Dev

HTTP / 1.1 400错误请求Sabre REST Api

来自分类Dev

Axios对Firebase Auth REST API的发布请求产生400错误

来自分类Dev

Azure Rest API-创建Web应用-错误的请求

来自分类Dev

400 错误请求无效动词 SharePoint Rest Api Java

Related 相关文章

  1. 1

    Activiti Rest API:提交用户任务时捕获所有请求

  2. 2

    尝试在Java SpringBoot中使用REST API时收到错误请求

  3. 3

    使用Microsoft Speech到文本REST API时,收到400- OGG文件格式的错误请求

  4. 4

    尝试在Java SpringBoot中使用REST API时收到错误请求

  5. 5

    使用REST API并发送POST请求

  6. 6

    WooCommerce REST API请求返回错误

  7. 7

    WooCommerce REST API请求返回错误

  8. 8

    无法在Outlook Rest Tasks API中两次删除具有相同名称的TaskFolder

  9. 9

    Rest Api 异常处理

  10. 10

    向fluxpoint API发送请求时出错

  11. 11

    通过Rest API启用配置文件时,通过Rest Api获取活动请求时未提供phaseTimes

  12. 12

    在节点中创建REST API时,如何将对外部网站的请求中的http响应流式传输到原始api调用?

  13. 13

    在NodeJS Express框架中处理批处理REST API请求

  14. 14

    如何解决与 rest api POST 请求相关的异常?

  15. 15

    在PHP REST API中转换响应和请求

  16. 16

    对REST API的不同并发请求

  17. 17

    如何获得向REST API发送请求的页面?

  18. 18

    Outlook Rest Api发送邮件请求返回状态400

  19. 19

    如何使用 angular 向 REST api 发送删除请求

  20. 20

    解析推送REST API错误400“错误请求”

  21. 21

    提交两次相同的请求时 HTTP 标头错误

  22. 22

    调用基于 API 网关的 REST API 时的内部错误消息

  23. 23

    向Google Contacts REST API发出HTTP GET请求时如何使用API密钥

  24. 24

    OAuth,PHP,Rest API和curl发出400错误请求

  25. 25

    Ajax请求到Spring REST API 415错误

  26. 26

    HTTP / 1.1 400错误请求Sabre REST Api

  27. 27

    Axios对Firebase Auth REST API的发布请求产生400错误

  28. 28

    Azure Rest API-创建Web应用-错误的请求

  29. 29

    400 错误请求无效动词 SharePoint Rest Api Java

热门标签

归档