Recent Bloggers

Iacopo Colonnelli

2 Publications
17 février 2018

David H Nebinger

66 Publications
15 février 2018

Christian Klein

1 Publications
15 février 2018

Jose M. Navarro

8 Publications
14 février 2018

Sergio González

5 Publications
13 février 2018

Minhchau Dang

15 Publications
31 janvier 2018

Koen Olaerts

3 Publications
30 janvier 2018

Fabian Larroca

1 Publications
25 janvier 2018

Vitaliy Koshelenko

3 Publications
12 janvier 2018

gulnaaz Shaik

4 Publications
9 janvier 2018
« Retour

Show live or logged in users

General Blogs 5 janvier 2018 Par Neha Goyal

This blog is for creating an interface which will show number of live users and some other details.

First of all create a portlet which will provide interface and then create a hook within the portlet.Below link willl help to create hook in portlet.


Add below line of code in portlet view.jsp

<%@page import="com.liferay.portal.service.UserLocalServiceUtil"%>
<%@page import="com.liferay.portal.model.User"%>
<%@page import="java.util.Iterator"%>
<%@page import=""%>
<%@page import="java.util.Set"%>
<%@ taglib uri="" prefix="portlet" %>
<portlet:defineObjects />
table {
    font-family: arial, sans-serif;
    border-collapse: collapse;
    width: 100%;
td, th {
    border: 1px solid #dddddd;
    text-align: left;
    padding: 8px;
th {
background-color: #e1e1e1;
tr:nth-child(even) {
    background-color: #eee;
<div style="border:1px solid #ccc;padding:5pt;">
<b>Total number of Live Users : </b>
Set<Long> users_set = LoggedInUsers.loggedInUsers();
<b><%=users_set.size() %></b><br/>
<tr><th>User Id</th><th>Screen Name</th><th>Full Name</th><th>IP Address</th><th>Login Date</th></tr>
Iterator<Long> it = users_set.iterator();
long user_id =;
User user = UserLocalServiceUtil.getUser(user_id);
String fullName = user.getFullName();
String ipAddress = user.getLastLoginIP();
String screenname = user.getScreenName();
String loginDate = user.getLoginDate().toString();
<td><%=user_id %></td>
<td><%=screenname %></td>
<td><%= fullName%></td>
<td><%=ipAddress %></td>
<td><%=loginDate %></td>
Now it s time to work on hook which we have create and which will tell about live users.
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hook PUBLIC "-//Liferay//DTD Hook 6.2.0//EN" "">
Create LoginPostAction and SessionDestroyAction class.
import com.liferay.portal.util.PortalUtil;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class LoginPostAction extends Action {
public void run(HttpServletRequest request, HttpServletResponse response) {
long userId = PortalUtil.getUserId(request);
System.out.println("Logged in user :"+userId);
import com.liferay.portal.kernel.util.WebKeys;
import javax.servlet.http.HttpSession;
public class SessionDestroyAction extends SessionAction{
public void run(HttpSession session) {
Long userId = (Long) session.getAttribute(WebKeys.USER_ID);
System.out.println("Log out user :"+userId);
Also create one model object for live users.
import java.util.HashSet;
import java.util.Set;
public class LoggedInUsers {
private static Set<Long> users = new HashSet<Long>();
public static void addUser(long userId) {
public static void clearUsers() {
public static void removeUser(long userId) {
public static int countUsers() {
return users.size();
public static boolean isLogged(long userId) {
return users.contains(userId);
public static Set<Long> loggedInUsers(){
return users;
Réponses Auteur Données
It is important to note that the list you get... David H Nebinger 16 février 2018 14:12

It is important to note that the list you get will likely never be 100% accurate. For example, if a user logs in and just closes the browser, they will show as logged in, even when they are not, until their session expires.

Also this code will never work in a cluster since it is based on per-node session creation/destruction. The only list you'll get is the list from the node you happen to connect to.
Publié le 16/02/18 14:12.