【发布时间】:2014-01-07 04:27:32
【问题描述】:
我使用 Apache CXF 2.5.1 编写了一个 java REST(流)servlet,并将其部署到 Tomcat 7.0.42 容器中。 REST 端点本质上是 StreamingOutput 的实现,将其包装成一个 Response 对象,该对象在客户端请求时传递给容器。
服务的本质是将传感器数据流返回给客户端。该流理论上可以无限长,因为它仅在客户端断开连接时终止。当传感器生成的数据量很小时,就会出现问题。
该服务“有效”,但在客户端收到的数据响应的大小方面遇到了问题。客户端仅在服务突破 8192 字节阈值后接收数据。然后客户端收到 800 字节,然后是 8192 字节,然后是 800 字节……
我希望在容器移交给我的 StreamingOutput 实现的 OutputStream 上调用 flush 后立即将数据发送到客户端。但是,我给出的 OutputStream 的实现(在 org.apache.cxf.transport.http.AbstractHTTPDestination 中定义的 WrappedOutputStream)有一个什么都不做的 flush 方法。
有什么方法可以更好地控制 CXF 使用的 OutputStream,以便我可以按需“刷新”到客户端?
【问题讨论】:
标签: java cxf chunked-encoding