【发布时间】:2016-10-28 09:00:26
【问题描述】:
如标题所示,GlassFish 4.1 服务器决定对我的 Web 应用程序进行一些随机重新部署,这会删除我在会话中的所有属性,但以某种方式保持会话 ID 完好无损。
这个问题主要发生在我试图选择一个组合框来触发表单提交时,它将被发送到一个 Servlet 以从数据库中收集必要的信息以填充相同表单中的必要文本字段(完成通过 JSP),我无法解决问题的原因是因为它发生在第三次或第四次选择尝试时,有时甚至根本不会发生。
服务器日志根本没有多大帮助,因为这些是它决定重新部署时弹出的唯一消息。
服务器日志:
Info: visiting unvisited references
Info: visiting unvisited references
Info: visiting unvisited references
Info: WebModule[null] ServletContext.log():filter_user:Initializing filter
Info: Loading application [IMS_Test] at [/IMS_Test]
Info: IMS_Test was successfully deployed in 558 milliseconds.
Servlet 代码:
List<String> list = new ArrayList<String>();
rs = stmt.executeQuery("SELECT scp_id FROM ims_db.ims_scp_list WHERE scp_name = '" + t_scp_name + "'");
if (rs.next()) {
scp_id = rs.getString("scp_id");
}
rs = stmt.executeQuery("SELECT epicor_id FROM ims_db.ims_parts_plan "
+ "WHERE scp_id = '" + scp_id + "'");
while (rs.next()) {
list.add(rs.getString("epicor_id"));
}
RequestDispatcher rd = request.getRequestDispatcher("new_entryform.jsp");
session.setAttribute("epicor_list", list);
session.removeAttribute("scp_name");
session.setAttribute("scp_name", t_scp_name);
rd.forward(request, response);
那么问题来了,我做错了什么最终迫使 GlassFish 在运行过程中重新部署我的网络应用程序?请帮帮我:(
更新 1: 出于绝望,我创建了一个 SessionListener 来查看问题所在。在调试过程中,它显示所有代码都按预期执行,但有时它会立即跳转到“attributeRemoved”,这真的没有意义。
更新 2: 最后一招,将原始表单拆分为两个单独的表单,其中一个使用 GET 方法,而主表单使用 POST 方法。它现在解决了这个问题。
更新 3: 每当我尝试将表单提交到服务器时,这些问题仍然困扰着我,但它只发生在 POST 方法中。尝试升级到 GlassFish 5.0(每晚构建),但问题似乎没有解决。任何指导/建议将不胜感激。 :(
【问题讨论】:
标签: java jsp session servlets glassfish