【问题标题】:How to obtain Liferay session in custom servlet?如何在自定义 servlet 中获取 Liferay 会话?
【发布时间】:2011-11-11 14:23:03
【问题描述】:

我在 Liferay 中编写了自定义 servlet,想知道哪个用户页面调用了它并知道其他参数,例如主题。但是请求的属性和会话字段都是空的。

如何让自定义 servlet 像 portlet 一样接收请求?

谢谢

附:我不想用这个解决方案https://www.everit.biz/web/guest/blog/-/blogs/getting-current-liferay-user-in-a-standalone-webapp?_33_redirect=/web/guest/blog

手动读取cookies。我想像 Liferay 那样做,即使用它的 API。有可能吗?

更新 1。

我在一个 WAR 中有一个 portlet 和一个 servlet。我可以从 portlet JSP 中知道我是谁(登录用户),如下所示:

HttpServletRequest request = (HttpServletRequest)pageContext.getRequest();

ThemeDisplay themeDisplay = (ThemeDisplay)request.getAttribute(WebKeys.THEME_DISPLAY);

themeDisplay.getUser()

现在我想从一个 servlet 做同样的事情。有可能吗?

我正在使用自动部署的 eclips。

【问题讨论】:

  • “在 Liferay 中”是什么意思?您是否修改了 Liferay 的 web.xml 以加载您的 servlet 或您的 servlet 在 Liferay 旁边运行?
  • 你是如何部署的,直接部署到应用服务器还是使用liferay的热部署功能?
  • 参见上面的更新 1(无法在此处添加代码)。

标签: java session tomcat servlets liferay


【解决方案1】:

您要么必须模仿 Liferay 在 portlet 请求处理中所做的事情(不推荐),要么将您的 servlet 代码放入 portlet - 这可以是 portlet 的“资源处理” - 在这里您可以完全访问http 请求,并且可以自己完成有关流中传输的数据类型的所有操作。

我宁愿推荐这个,因为它会更容易升级。从逻辑的角度来看,Portlet 资源处理程序与 servlet 非常相似。可能还有其他(更可取的)选项,但这是我想到的此类问题。

【讨论】:

  • 恐怕不能将代码放入portlet,因为它是写成servlet(GWT服务)的第三方服务。还是谢谢你。
  • 好的,我明白了。然后你必须走另一条路。有可能,我只是没有现成的信息 - 让我们希望其他人跳进来并指出相关信息。
  • 我想我只是将 unformation 放入 servlet 会话中。这两种请求类型都可以从 portlet 的 JSP 中访问,所以我将从 PortletRequest 中获取 User 并将其放入 HttpServletRequest.session... 可能会发现 2 个会话如何关联...
猜你喜欢
  • 2019-02-12
  • 2013-08-16
  • 1970-01-01
  • 1970-01-01
  • 2013-07-16
  • 2010-09-16
  • 2011-10-15
  • 2020-12-31
  • 1970-01-01
相关资源
最近更新 更多