Using the following code sample, it is possible to delete a user connection based on how long the connection has existed:
Package customclasses.misc;
import com.Strategy.web.objects.WebIServerSession;
import com.Strategy.web.objects.WebObjectsException;
import com.Strategy.web.objects.WebObjectsFactory;
import com.Strategy.web.objects.admin.WebObjectsAdminException;
import com.Strategy.web.objects.admin.monitors.EnumWebMonitorType;
import com.Strategy.web.objects.admin.monitors.MonitorManipulationException;
import com.Strategy.web.objects.admin.monitors.MonitorSort;
import com.Strategy.web.objects.admin.monitors.UserConnection;
import com.Strategy.web.objects.admin.monitors.UserConnectionManipulator;
import com.Strategy.web.objects.admin.monitors.UserConnectionResults;
import com.Strategy.web.objects.admin.monitors.UserConnectionSource;
import com.Strategy.webapi.EnumDSSXMLAuthModes;
import com.Strategy.webapi.EnumDSSXMLLevelFlags;
import com.Strategy.webapi.EnumDSSXMLOrder;
import com.Strategy.webapi.EnumDSSXMLUserConnectionInfo;
public class DeleteUserConnections {
public static void main(String[] args) {
WebObjectsFactory objectFactory = WebObjectsFactory.getInstance();
WebIServerSession serverSession = objectFactory.getIServerSession();
serverSession.setServerPort(0);
serverSession.setAuthMode(EnumDSSXMLAuthModes.DssXmlAuthStandard);
serverSession.setProjectName("PROJECTNAME");
serverSession.setLogin("USER_ID");
serverSession.setPassword("");
serverSession.setServerName("SERVER_NAME");
try {
//Create a session on the I-server
String SessionID = serverSession.getSessionID();
System.out.println("Welcome " + serverSession.getLogin());
System.out.println("SessionID: " + SessionID);
// create a WebObjectsFactory instance
WebObjectsFactory factory = serverSession.getFactory();
// Get the User Connection source object
UserConnectionSource source = (UserConnectionSource) factory.getMonitorSource(EnumWebMonitorType.WebMonitorTypeUserConnection);
// Obtain the User manipulator object
UserConnectionManipulator userManipulator = source.getManipulator();
// Set up the sort condition to sort on the open jobs field in descending order
MonitorSort msort = source.getSortCriteria();
msort.add(EnumDSSXMLUserConnectionInfo.DssXmlUserConnDuration, EnumDSSXMLOrder.DssXmlDescending);
// Set up the flag to obtain browsing information
source.setLevel(EnumDSSXMLLevelFlags.DssXmlBrowsingLevel);
try {
// Sends the request to Intelligence Server to retrieve user connection information
UserConnectionResults results = source.getUserConnections();
// Loop through the results to print out user connection information, such as
// the user name, project name, session ID
UserConnection singleConn = null;
for (int i=0; i < results.getCount(); i++) {
singleConn = results.get(i);
System.out.print("User: " + singleConn.getUserName());
System.out.print(", project: " + singleConn.getProjectName());
System.out.print(", sessionID: " + singleConn.getSessionID());
System.out.print(", Session duration: " + singleConn.getDuration());
if(singleConn.getDuration()> 300 ){ //12 hours: 43200
System.out.println(singleConn.getSessionID()+"session added to disconnect task list");
//add session to the task list to be disconnected later in batch
userManipulator.addDisconnectionTask(singleConn.getSessionID());
}
}
// Sends the request to Intelligence Server to disconnect the user sessions specified above
userManipulator.submit();
} catch (WebObjectsAdminException woae) {
woae.printStackTrace();
} catch (MonitorManipulationException mme) {
}
}catch (WebObjectsException ex) {
System.out.println(ex.getMessage());
ex.printStackTrace();
}
}
}