一个非常棘手的问题,望大虾来帮忙!有关session的问题
我开发了一个系统,在本地测试都没有问题,但是放到远程数据库上系统就一直崩溃,经测试原因似乎是出在登录后找不到记录登录用户信息的session上,我的源代码是这样的
LoginAction.java:(部分代码)
HttpSession session = request.getSession(false);
if (session != null) {
session.invalidate();
}
UserContainer existingContainer = new UserContainer();
session = request.getSession(true);
existingContainer.setUserView(userView);
synchronized (this) {
session.setAttribute(
IConstants.USER_CONTAINER_KEY,
existingContainer);
}
以上是登录的servlet,主要是将登陆者的信息放到session上,登录的首页显示没有问题,但是一旦访问了带有读取session信息的servlet的时候就开始出错了,比如说这样的servlet,
UserContainer existingContainer = null;
existingContainer = getUserContainer(request);
qryResultContainerHm = existingContainer.getQryResultContainerHm();
UserView userView = existingContainer.getUserView();
long userid = userView.getUser_id();一到 这里系统就崩掉了。
有的时候 到这里 if (request.getSession().getAttribute(IConstants.USER_CONTAINER_KEY)
== null) {
errors.add(
ActionErrors.GLOBAL_ERROR,
new ActionError(IConstants.ERROR_SESSIONINVALIDATION_KEY));
saveErrors(request, errors);
return mapping.findForward(IConstants.AUTHENTICATE_KEY);
} 也报错,有的时候还出现数据库链接失败的提示
所以我怀疑是出在session上面,请各位大虾帮帮忙,帮我看看是什么原因引起的?问题的关键是为什么本地测试都没有问题,到了服务器上就不行了
------解决方案--------------------9494
用try{}catch()详细的错误!
可能服务器的配置不同
------解决方案--------------------错误问题比较多
你做一下try 处理 尽量全面些
然后输出异常~~
------解决方案--------------------这么多错误。。。
从第一个错误开始一步步跟踪代码看看
------解决方案--------------------连不上去。
程序的bug(即在某些上下文中的逻辑问题)造成的。
建议,使用与服务器相同的场景测试。
我觉得可能是服务器或数据不同。
建议,开服务器的远程调试。
然后在eclipse中远程调试。
------解决方案--------------------你服务器配置路径啊之内的有没问题呢?换了机子就不行了。那一般来说是哪个工具没配置好吧..,检查下配置有没不对的端口有没冲突的,你本地访问用的localhost吧?你有试过本地远程饶回来访问你自己的机子没呢?