【问题标题】:Servlet release on app server [closed]应用服务器上的 Servlet 发布 [关闭]
【发布时间】:2014-09-28 03:03:25
【问题描述】:

有没有办法检查 servlet 是否已被释放到应用服务器的内存中。 例如,我运行 doPost 方法并成功输出了我从服务器询问的 json 数据。它是否已经被释放到内存中?如果没有,有没有办法调用 servlet 的释放?

谢谢,

好吧,这就是我所做的,基本上我是从 javascript 调用客户端 POST 到

$.ajax({
        type : "POST",
        url : "GetSampleServlet",
        data : "{}",
        contentType : "application/x-www-form-urlencoded",
        dataType : "json",
        success : function(response) {
            $("#employee_per_tm_table_view").html("");
            var resultsArray = (typeof response) == 'string' ? eval('('
                    + response + ')') : response;
}

那么 servlet 上有一个 doPost 方法。 CallableStatement st = conn.prepareCall(sql);

        ResultSet data;
        data = st.executeQuery();

        response.setContentType("application/json");
        response.setCharacterEncoding("utf-8");
        response.getWriter().write(ResultSetConverter.convert(data).toString());

        try {
            st.close();
        } catch (SQLException logOrIgnore) {
        }
        try {
            conn.close();
        } catch (SQLException logOrIgnore) {
        }

    } catch (SQLException e) {
        response.setContentType("application/json");
        response.setCharacterEncoding("utf-8");
        response.getWriter().write((e).toString());
    } catch (JSONException f) {
        response.setContentType("application/json");
        response.setCharacterEncoding("utf-8");
        response.getWriter().write((f).toString());
    } catch (NullPointerException g) {
        response.setContentType("application/json");
        response.setCharacterEncoding("utf-8");
        response.getWriter().write((g).toString());
    } catch (NamingException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
}

【问题讨论】:

  • 你在说什么“释放到内存”。 “发布 servlet”是什么意思?
  • 我的意思是,一旦它输出了我从服务器请求的 json 数据,它是否由 appserver 发布?所以从堆中清除了?
  • 那将是相当低效的,你不觉得吗?不需要垃圾收集 servlet 实例。为什么你认为有?
  • 嗨@Kayaman,我的意思是我希望它从应用服务器/servlet 容器的实例池中释放。这可能吗?
  • 问题是,当我尝试调用 servlet 前 10 次时,它的响应速度非常快,但是当我尝试在 10 次连接后调用它时,它开始变慢,所以我只是问是否在那个服务调用之后它已经被释放了吗?

标签: java rest servlets


【解决方案1】:

好吧,你没有关闭你的ResultSet(虽然关闭语句也应该关闭结果集,但你永远不知道驱动程序)。您忽略了两个可能的异常,这只是在乞求问题(如果关闭语句引发异常告诉您先关闭结果集怎么办?)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-03-20
    • 1970-01-01
    • 2013-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-27
    • 1970-01-01
    相关资源
    最近更新 更多