我需要在可用时传输记录。因此我有
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.io.Writer;
import javax.ws.rs.core.StreamingOutput;
import org.apache.log4j.Logger;
public class StreamingOutputImpl extends RetrieverResource implements StreamingOutput {
private static final Logger LOGGER = Logger.getLogger(StreamingOutputImpl.class);
private OutputStream os;
public StreamingOutputImpl(final RequestParameters parameters, final String basePath) {
super(parameters, basePath);
}
@Override
public void write(final OutputStream os) throws IOException {
this.os = os;
read();
}
@Override
public void writeRecord(final GenericRecord record) {
try {
Writer writer = new BufferedWriter(new OutputStreamWriter(os));
writer.write(record.toString());
writer.flush();
} catch (final IOException e) {
LOGGER.error("Error while write record " + record, e);
}
}
}
假设我有100条记录,并且writeRecord()被调用100次。我只在第100条记录之后才看到浏览器中的输出(@GET和@POST),而不是在每条记录之后。
有什么建议吗?
答案 0 :(得分:0)
检查浏览器和之间正在交换的数据。使用firebug的服务器。
这可能是浏览器特定的行为,只有在服务器关闭输出流以将其呈现给GUI时才呈现数据。
答案 1 :(得分:0)
代码是正确的。它只有浏览器(FF和Chrome)一次呈现所有数据。卷曲时,我看到以流媒体方式呈现的数据。