我需要从 Tomcat 中的 servlet(或过滤器)访问管理器以通过自定义 session ID 加载自定义 session 。
回答您的下一个问题:我为什么需要它。 Flash 中有一个旧错误导致它从 IE 而不是从当前浏览器发送 cookie。因此,如果我在 FF 中并尝试使用 SWFUpload 上传文件,我最终会遇到错误的 session 和错误。
我想将魔术参数添加到 POST,它应该覆盖默认(错误的) session ID,然后加载自定义 session 而不是 Tomcat 加载的 session 。我不能使用 URL 重写,因为首先解析 cookie,并且当 flash 从 IE 发送错误的 cookie 时,Tomcat 不会尝试从 url 重写的地址加载 session 。
对于如何从上下文或原始问题的解决方案访问管理器的任何其他提示,我将不胜感激。
提前致谢, 陪审团
最佳答案
对于 Tomcat:
ApplicationContextFacade appContextFacadeObj = (ApplicationContextFacade) request.getSession().getServletContext();
try
{
Field applicationContextField = appContextFacadeObj.getClass().getDeclaredField("context");
applicationContextField.setAccessible(true);
ApplicationContext appContextObj = (ApplicationContext) applicationContextField.get(appContextFacadeObj);
Field standardContextField = appContextObj.getClass().getDeclaredField("context");
standardContextField.setAccessible(true);
StandardContext standardContextObj = (StandardContext) standardContextField.get(appContextObj);
Manager persistenceManager = standardContextObj.getManager();
}
catch(SecurityException e)
{
logger.error(e);
}
catch(NoSuchFieldException e)
{
logger.error(e);
}
catch(IllegalArgumentException e)
{
logger.error(e);
}
catch(IllegalAccessException e)
{
logger.error(e);
}
关于session - Tomcat:如何从 servlet 访问( session )管理器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5807664/