session - 如何在 Apache Tomcat 服务器和 Glassfish 服务器中列出所有具有事件 session 的事件用户名

标签 session tomcat glassfish

根据我的要求,我需要在 Apache Tomcat 服务器和 Glassfish 服务器中列出所有具有事件 session 的事件用户名。

最佳答案

我不确定 GlassFish,但您可以编写 Tomcat 脚本来执行此操作,尤其是当您在用户 session 中有一个包含其用户名的对象时。在我的 session 中,我有一个可用于此目的的“用户”对象。

这是食谱:

  1. 安装 Tomcat 的 manager 网络应用程序并配置它以进行正确的身份验证
  2. 使用如下脚本:
for sessionid in `wget -qO - 'http://username:password@host:port/manager/jmxproxy?invoke=Catalina:type=Manager,context=/contextName,host=localhost&op=listSessionIds' \
  | sed -e "s/ /\n/g" -e 's/.*returned://'`
do
    response=`wget -qO - "http://username:password@host:port/manager/jmxproxy?invoke=Catalina:type=Manager,context=/contextName,host=localhost&op=getSessionAttribute&ps=$sessionid,user" 2>/dev/null`

    #echo "$response"

    if [ `expr "$response" : "^OK"` ] ; then
      user=`expr "$response" : ".*\(User.*\)"`
      if [ "$user" ] ; then
        echo "$sessionid: $user"
      else if [ "$VERBOSE" ] ; then
        echo "$sessionid: [ no authenticated user ]"
      fi fi
    else
      echo "[error]: $response"
    fi
done

嗯...反引号在上面看起来不太好。让我阅读一些有关如何使该代码片段可读的内容,然后我将更新此答案。这两个 wget 命令都应该有反引号,第一个命令应该在 returned://' 字符串之后有关闭反引号。

关于session - 如何在 Apache Tomcat 服务器和 Glassfish 服务器中列出所有具有事件 session 的事件用户名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30341185/

相关文章:

tomcat - 为什么netstat显示Tomcat进程监听多个端口?

java - 未找到预期的 CSRF token 。您的 session 已过期吗?

java - session 值未存储在使用 Chrome 的 wicket 应用程序中

c# - 如何检测当前 session 是否通过 RDP 启动?

java - 多个 jersey-clients 与来自单个 tomcat 服务器的冲突响应

tomcat中的javaagent错误

transactions - EJB 3.1 TransactionAttributeType.REQUIRES_NEW 和 setRollbackOnly

glassfish 3.x 上的 Spring 启动

java - 如何让我的 webdav 客户端/服务器运行得更快?

java - 如何使用 jsoup 维护变量 cookie 和 session ?