有没有一种方法可以从定制Javaservlet内部的JSESSIONID中提取Maximo用户名?

有没有一种方法可以从定制Javaservlet内部的JSESSIONID中提取Maximo用户名?,java,maximo,Java,Maximo,我正在Maximo内部创建一个自定义Java servlet。我想借助Maximo的身份验证,作为其中的一部分,我需要某种方法从HttpServletRequest对象检索用户信息(用户名、显示名等)。我能够从请求cookie访问JSESSIONID(据我所知,这是Maximo/WebSphere跟踪用户会话的方式),但我无法找到使用它检索UserInfo对象的方法 我搜遍了Javadocs,试图找出一些问题,但运气不好。现在,Maximo中的Java定制似乎非常罕见,因此没有太多的资源来解决这

我正在Maximo内部创建一个自定义Java servlet。我想借助Maximo的身份验证,作为其中的一部分,我需要某种方法从
HttpServletRequest
对象检索用户信息(用户名、显示名等)。我能够从请求cookie访问
JSESSIONID
(据我所知,这是Maximo/WebSphere跟踪用户会话的方式),但我无法找到使用它检索
UserInfo
对象的方法


我搜遍了Javadocs,试图找出一些问题,但运气不好。现在,Maximo中的Java定制似乎非常罕见,因此没有太多的资源来解决这个问题。

您是否尝试过
psdi.webclient.system.session.WebClientSessionManager.getWebClientSessionManager(javax.servlet.http.HttpSession session).getWebClientSession(javax.servlet.http.HttpServletRequest)

在对Javadocs进行了一些挖掘之后,发现了这个问题。事实证明,我可以按如下方式从请求会话对象中拉出MXSession:

Enumeration e = req.getSession().getAttributeNames();
String username = null;
while (e.hasMoreElements()) {
String attrName = (String) e.nextElement();
if (attrName.equals("MXSession")) {
  MXSession session = (MXSession) req
    .getSession()
    .getAttribute("MXSession");
  UserInfo user = session.getUserInfo();
  if (user != null) {
    username = user.getUserName().toLowerCase();
  }
}

布道尔的例子也有效,但只有当有一个活动的
WebclientSession
时,对于我的特定用例,我希望它在只有一个
OslcSession
时也有效,它并不总是有一个关联的
WebclientSession
。此解决方案在任何一种情况下都有效,因为
MXSession
始终可用。

谢谢,这很有效,但只有在存在活动的WebClient会话时才有效。我为我的用例找到了答案,请参见下面的答案。