use of com.iplanet.dpro.session.share.SessionRequest in project OpenAM by OpenRock.
the class RemoteOperations method setProperty.
/**
* Perform a remote setProperty on the Session using the remote Service URL.
*
* {@inheritDoc}
*/
public void setProperty(Session session, String name, String value) throws SessionException {
if (debug.messageEnabled()) {
debug.message(MessageFormat.format("Remote setProperty {0} {1}={2}", session, name, value));
}
SessionID sessionID = session.getID();
SessionRequest sreq = new SessionRequest(SessionRequest.SetProperty, sessionID.toString(), false);
sreq.setPropertyName(name);
sreq.setPropertyValue(value);
if (SystemProperties.isServerMode() && InternalSession.isProtectedProperty(name)) {
try {
SSOToken admSSOToken = SessionUtils.getAdminToken();
sreq.setRequester(RestrictedTokenContext.marshal(admSSOToken));
} catch (SSOException e) {
throw new SessionException(e);
} catch (Exception e) {
throw new SessionException(e);
}
if (debug.messageEnabled()) {
debug.message("Session.setProperty: " + "added admSSOToken in sreq to set " + "externalProtectedProperty in remote server");
}
}
requests.sendRequestWithRetry(session.getSessionServiceURL(), sreq, session);
}
use of com.iplanet.dpro.session.share.SessionRequest in project OpenAM by OpenRock.
the class SessionPLLSender method sendPLLRequest.
/**
* Returns a Session Response object based on the XML document received from
* remote Session Server. This is in response to a request that we send to
* the session server.
*
* @param svcurl The URL of the Session Service.
* @param sreq The Session Request XML document.
* @return a Vector of responses from the remote server
* @exception com.iplanet.dpro.session.SessionException if there was an error in sending the XML
* document or if the response has multiple components.
*/
public SessionResponse sendPLLRequest(URL svcurl, SessionRequest sreq) throws SessionException {
try {
String cookies = sessionCookies.getCookieName() + "=" + sreq.getSessionID();
if (!SystemProperties.isServerMode()) {
SessionID sessionID = new SessionID(sreq.getSessionID());
cookies = cookies + ";" + sessionCookies.getLBCookie(sessionID);
}
final Request req = new Request(sreq.toXMLString());
final RequestSet set = new RequestSet(SESSION_SERVICE);
set.addRequest(req);
final Vector responses = PLLClient.send(svcurl, cookies, set);
if (responses.size() != 1) {
throw new SessionException(SessionBundle.rbName, "unexpectedResponse", null);
}
final Response res = (Response) responses.elementAt(0);
return SessionResponse.parseXML(res.getContent());
} catch (Exception e) {
throw new SessionException(e);
}
}
use of com.iplanet.dpro.session.share.SessionRequest in project OpenAM by OpenRock.
the class SessionPollerSender method run.
public void run() {
try {
SessionRequest sreq = new SessionRequest(SessionRequest.GetSession, sid.toString(), false);
SessionResponse sres = pllSender.sendPLLRequest(session.getSessionServiceURL(), sreq);
if (sres.getException() != null) {
sessionCache.removeSID(sid);
return;
}
List<SessionInfo> infos = sres.getSessionInfo();
if (infos.size() == 1) {
info = infos.get(0);
}
} catch (Exception ex) {
sessionCache.removeSID(sid);
if (debug.messageEnabled())
debug.message("Could not connect to the session server" + ex.getMessage());
}
if (info != null) {
if (debug.messageEnabled()) {
debug.message("Updating" + info.toXMLString());
}
try {
if (info.getState().equals("invalid") || info.getState().equals("destroyed")) {
sessionCache.removeSID(sid);
} else {
long oldMaxCachingTime = session.getMaxCachingTime();
long oldMaxIdleTime = session.getMaxIdleTime();
long oldMaxSessionTime = session.getMaxSessionTime();
session.update(info);
if ((!session.isScheduled()) || (oldMaxCachingTime > session.getMaxCachingTime()) || (oldMaxIdleTime > session.getMaxIdleTime()) || (oldMaxSessionTime > session.getMaxSessionTime())) {
session.scheduleToTimerPool();
}
}
} catch (SessionException se) {
sessionCache.removeSID(sid);
debug.error("Exception encountered while update in polling", se);
}
} else {
sessionCache.removeSID(sid);
}
session.setIsPolling(false);
}
use of com.iplanet.dpro.session.share.SessionRequest in project OpenAM by OpenRock.
the class SessionCount method getSessionsFromPeerServers.
/*
* Get user sessions from session repository
*/
private static Map getSessionsFromPeerServers(String uuid) {
Map sessions = getSessionsFromLocalServer(uuid);
String localServerID = serverConfig.getLocalServerID();
Set serverIDs = null;
try {
serverIDs = WebtopNaming.getSiteNodes(localServerID);
} catch (Exception e) {
debug.error("Failed to get the serverIDs from " + "WebtopNaming.", e);
return sessions;
}
for (Iterator m = serverIDs.iterator(); m.hasNext(); ) {
String serverID = (String) m.next();
if (serverID.equals(localServerID)) {
continue;
}
try {
URL svcurl = SESSION_SERVICE_URL_SERVICE.getSessionServiceURL(serverID);
SessionRequest sreq = new SessionRequest(SessionRequest.GetSessionCount, getAdminToken().getTokenID().toString(), false);
sreq.setUUID(uuid);
SessionResponse sres = getSessionResponse(svcurl, sreq);
sessions.putAll(sres.getSessionsForGivenUUID());
} catch (SessionException se) {
if (debug.messageEnabled()) {
debug.message("SessionConstraint: " + "peer AM server is down...");
}
}
}
return sessions;
}
use of com.iplanet.dpro.session.share.SessionRequest in project OpenAM by OpenRock.
the class Session method getValidSessions.
/**
* Returns all the valid sessions for a particular Session Service URL. If a
* user is not allowed to access the Sessions of the input Session Server,
* it will return null.
*
* @param svcurl Session Service URL.
* @exception SessionException
*/
private SearchResults getValidSessions(URL svcurl, String pattern) throws SessionException {
try {
int[] status = { 0 };
List<SessionInfo> infos = null;
boolean isLocal = false;
if (sessionService != null && sessionService.isLocalSessionService(svcurl)) {
infos = sessionService.getValidSessions(this, pattern, status);
isLocal = true;
} else {
SessionRequest sreq = new SessionRequest(SessionRequest.GetValidSessions, sessionID.toString(), false);
if (pattern != null) {
sreq.setPattern(pattern);
}
SessionResponse sres = requests.getSessionResponseWithRetry(svcurl, sreq, this);
infos = sres.getSessionInfo();
status[0] = sres.getStatus();
}
Map<String, Session> sessions = new HashMap<String, Session>();
Session session = null;
for (SessionInfo info : infos) {
SessionID sid = new SessionID(info.getSessionID());
session = new Session(sid, isLocal);
session.sessionServiceURL = svcurl;
session.update(info);
sessions.put(info.getSessionID(), session);
}
return new SearchResults(sessions.size(), sessions.keySet(), status[0], sessions);
} catch (Exception ex) {
sessionDebug.error("Session:getValidSession : ", ex);
throw new SessionException(SessionBundle.rbName, "getValidSessionsError", null);
}
}
Aggregations