Hi,

 

We have recently upgraded Tomcat to 7.0.64 from 7.0.59. Our application
extends SingleSignOn.java of catalina.jar to create a wrapper around it.
Some methods in the SingleSignOn.java class has been deprecated because of
which the compilation is failing. Details shared below.

 

 


Catalina 7.0.59

Catalina 7.0.64


 

//SingleSingOn Class

 

 

protected Map<Session, String> reverse = new HashMap();

 

 

public void sessionEvent(SessionEvent event)

  {

    if (!getState().isAvailable()) {

      return;

    }

    if ((!"destroySession".equals(event.getType())) &&
(!"passivateSession".equals(event.getType()))) {

      return;

    }

    Session session = event.getSession();

    if (this.containerLog.isDebugEnabled()) {

      this.containerLog.debug("Process session destroyed on " + session);

    }

    String ssoId = null;

    synchronized (this.reverse)

    {

      ssoId = (String)this.reverse.get(session);

    }

    if (ssoId == null) {

      return;

    }

    if (((session.getMaxInactiveInterval() > 0) &&
(System.currentTimeMillis() - session.getThisAccessedTimeInternal() >=
session.getMaxInactiveInterval() * 1000)) ||
("passivateSession".equals(event.getType())) ||
(!session.getManager().getContainer().getState().isAvailable())) {

      removeSession(ssoId, session);

    } else {

      deregister(ssoId);

    }

  }

 

 

 

 

//SingleSingOn Class

 

Reverse Map does not exist

 

sessionEvent() Method does not exist

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

This new class has been introduced, but we cannot extend this class as we
are already extending "SingleSignOn" class. 

 

Also, to instantiate this class "SSOID" is required, as its constructor
expects it. We are not sure what to pass here to instantiate it.

 

 

//SingleSignOnListener

 

public void sessionEvent(SessionEvent event)

  {

    if (!"destroySession".equals(event.getType())) {

      return;

    }

    Session session = event.getSession();

    Manager manager = session.getManager();

    if (manager == null) {

      return;

    }

    Context context = (Context)manager.getContainer();

    if (context == null) {

      return;

    }

    Authenticator authenticator = context.getAuthenticator();

    if (!(authenticator instanceof AuthenticatorBase)) {

      return;

    }

    SingleSignOn sso = ((AuthenticatorBase)authenticator).sso;

    if (sso == null) {

      return;

    }

    sso.sessionDestroyed(this.ssoId, session);

  }

}

 

 

 

 

 

//Our Code

 

public class CiscoSSOValve extends SingleSignOn       >> Extending Catalina
Class

{

 

public void sessionEvent(SessionEvent event) {

 

        if(sNumTokens == 0) {

            super.sessionEvent(event);                                >>
Overloading sessionEvent which does not exists in new Jar.

            return;

        }

 

        // We only care about session destroyed events

        if (!Session.SESSION_DESTROYED_EVENT.equals(event.getType())

                &&
(!Session.SESSION_PASSIVATED_EVENT.equals(event.getType()))){

            super.sessionEvent(event);

            return;

        }

 

 

Compilation Error

 

@

"ucxn_build_stash.pl.log" [noeol] 20853L, 2963854C
1,1           Top

    [javac]   symbol:   variable reverse

    [javac]   location: class CiscoSSOValve

    [javac]
/auto/ipcbu-ucxn-cache/CORES/BLD-cc_mainline_16-cct-ccm-d/unityconnection/CL
NX_11.5.0.98/source/un_CUSA/Projects/cisco-unity-valve/src/com/cisco/unity/t
omcat/valve/CiscoSSOValve.java:98: error: cannot find symbol

    [javac]         super.sessionEvent(event); 

    [javac]              ^

    [javac]   symbol: method sessionEvent(SessionEvent)

    [javac]
/auto/ipcbu-ucxn-cache/CORES/BLD-cc_mainline_16-cct-ccm-d/unityconnection/CL
NX_11.5.0.98/source/un_CUSA/Projects/cisco-unity-valve/src/com/cisco/unity/t
omcat/valve/CiscoSSOValve.java:100: error: cannot find symbol

    [javac]         if(null != lookup(ssoId)) { 

    [javac]                    ^

    [javac]   symbol:   method lookup(String)

    [javac]   location: class CiscoSSOValve

    [javac]
/auto/ipcbu-ucxn-cache/CORES/BLD-cc_mainline_16-cct-ccm-d/unityconnection/CL
NX_11.5.0.98/source/un_CUSA/Projects/cisco-unity-valve/src/com/cisco/unity/t
omcat/valve/CiscoSSOValve.java:149: error: associate(String,Session) in
CiscoSSOValve cannot override associate(String,Session) in SingleSignOn

    [javac]     protected void associate(String ssoId, Session session) {

    [javac]                    ^

    [javac]   return type void is not compatible with boolean

    [javac] 7 errors

 

 

 

We need assistance on below points:

1.       How to fetch the SSOId corresponding to a session as 'reverse' map
does not exists any more.

2.       How does the call flow happen of SingleSignOn methods? 

 

 

Thanks and regards,

Kasturi.

Reply via email to