我们有一个系统,客户端发出HTTP GET请求,系统对后端进行一些处理,压缩结果,然后将其发送给客户端.由于处理可能需要一些时间,我们将其作为ZipOutputStream包装发送response.getOutputStream().
但是,当我们在第一个中有非常少量的数据ZipEntry,而第二个条目需要很长时间时,客户端使用的浏览器会超时.我们已经尝试刷新流缓冲区,但是在向流写入至少1000个字节之前,似乎没有响应发送到浏览器.奇怪的是,一旦发送了前1000个字节,后续的刷新似乎工作正常.
我尝试将代码拆解为裸露的示例:
protected void doGet(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
try {
ZipOutputStream _zos = new ZipOutputStream( response.getOutputStream());
ZipEntry _ze = null;
long startTime = System.currentTimeMillis();
long _lByteCount = 0;
response.setContentType("application/zip");
while (_lByteCount < 2000) {
_ze = new ZipEntry("foo");
_zos.putNextEntry( _ze );
//writes 100 bytes and then waits 10 seconds
_lByteCount += StreamWriter.write(
new ByteArrayInputStream(DataGenerator.getOutput().toByteArray()),
_zos );
System.out.println("Zip: " + _lByteCount + " Time: " + ((System.currentTimeMillis() - startTime) …Run Code Online (Sandbox Code Playgroud) 我正在尝试为void方法创建一些单元测试.基本上,该方法旨在显示系统用户的角色并在软件中实现它.
这是方法:
public void setPersonObj(Person typeObj)
{
this.typeObj = typeObj;
createMain();
}
Run Code Online (Sandbox Code Playgroud)
如何在单独的类中创建一个断言案例,该类使用单元测试来检查此方法?
非常感谢
我们有一个webapp,它使用hibernate将数据持久化到sql server 2005实例.
偶尔我们得到一个 com.microsoft.sqlserver.jdbc.SQLServerException: String or binary data would be truncated.
虽然我们可以获取插入查询,然后手动比较数据库中的列定义以查看哪个列太小,但这很慢并且容易出错.有没有办法自动从这个异常中获取有问题的表/列?
我已经浏览了Google和SO以寻求解决方案,所以我会理解答案是"不,你不能得到那些信息",但我认为这并没有伤害.