小编Kan*_*ane的帖子

Servlet缓冲响应尽管调用flush()

我们有一个系统,客户端发出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)

java tomcat servlets

9
推荐指数
1
解决办法
9513
查看次数

单元测试和断言void方法的案例

我正在尝试为void方法创建一些单元测试.基本上,该方法旨在显示系统用户的角色并在软件中实现它.

这是方法:

public void setPersonObj(Person typeObj)
{
    this.typeObj = typeObj;
    createMain();
}
Run Code Online (Sandbox Code Playgroud)

如何在单独的类中创建一个断言案例,该类使用单元测试来检查此方法?

非常感谢

java unit-testing

7
推荐指数
1
解决办法
1万
查看次数

获取该列导致com.microsoft.sqlserver.jdbc.SQLServerException的任何方法:字符串或二进制数据将被截断

我们有一个webapp,它使用hibernate将数据持久化到sql server 2005实例.

偶尔我们得到一个 com.microsoft.sqlserver.jdbc.SQLServerException: String or binary data would be truncated.

虽然我们可以获取插入查询,然后手动比较数据库中的列定义以查看哪个列太小,但这很慢并且容易出错.有没有办法自动从这个异常中获取有问题的表/列?

我已经浏览了Google和SO以寻求解决方案,所以我会理解答案是"不,你不能得到那些信息",但我认为这并没有伤害.

java sql hibernate sql-server-2005 jdbc

6
推荐指数
1
解决办法
3742
查看次数

标签 统计

java ×3

hibernate ×1

jdbc ×1

servlets ×1

sql ×1

sql-server-2005 ×1

tomcat ×1

unit-testing ×1