gpt4 book ai didi

java - 在liferay portlet和servlet之间共享Session

转载 作者:行者123 更新时间:2023-11-30 03:34:13 25 4
gpt4 key购买 nike

我正在尝试在同一 WAR 中运行的 liferay portlet 和 servlet 之间共享 session 。

我在 LoginPostAction(Hook)中设置如下属性:

@Override
public void run(HttpServletRequest request, HttpServletResponse response) throws ActionException {

Gebruiker g = new Gebruiker();
request.getSession().setAttribute("gebruiker", gebruiker);

}

尝试通过 AJAX 请求在我的 servlet 中获取此 Gebruiker 对象:

@RequestMapping(value="/haalContactGegevens", method = RequestMethod.POST)
public @ResponseBody ContactGegevensMessage getContactGegevens(HttpServletRequest request, HttpServletResponse response) {

Gebruiker gebruiker = (Gebruiker)request.getSession(true).getAttribute("gebruiker");
}

但这里我的“Gebruiker-object”保持为空。

我做错了什么?

谢谢

最佳答案

简单:LoginPostAction 由 Liferay 处理(尽管技术上是在您的 web 应用程序的上下文/类加载器中实现的。但是,如果您查看 httpServletRequest 的上下文路径,它是 Liferay 的。

当您在自己的 web 应用程序中实现 servlet 时,它将有自己的 session ,与 Liferay 的 session 无关。

您应该实现一个 portlet 并利用其 serveResource 生命周期方法来处理 Ajax 请求 - 这将使您成为整个门户环境的一部分。但是,您还应该尽量减少使用 Http 级 session :它迟早会成为内存泄漏的根源。

注意:虽然实现 portlet 将使您能够访问 HttpServletRequest(通过 PortalUtil),但由于上述原因,不鼓励这样做。但由于我不知道您想要实现什么目标,这将是您在问题中提供的代码的快速修复的一部分。

关于java - 在liferay portlet和servlet之间共享Session,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28361187/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com