On 14/10/2015 05:25, kasturi wrote: > Hi Christopher, > > Apologies for the formatting issue. Hope the below shared details helps > clarify the issue. > > Our application has a customized valve called CiscoSSOValve.java which > extends SingleSignOn.java of catalina.jar. > SingleSignOn.java of catalina.jar has gone in some changes in 7.0.64. PFB the > list of changes for which we are facing issues. > > 1. sessionEvent() method which existed in earlier releases is not present any > more. We are overriding this method in our customized valve, hence facing > compilation error where it tries to do a super.sessionEvent(event) call. > 2. A new class SingleSignOnListener.java has been introduced in 7.0.64 having > the same sessionEvent() method mentioned in issue 1. We tried using this > method but unable to do so as its constructor requires a valid 'SSOId' to be > passed. > 3. 'SSOId' was earlier retrievable from 'reverse' map of SingleSignOn.java > class. This map is not present in the 7.0.64 release, so we are unable to > fetch the 'SSOId' here and pass it in the call to constructor of > SingleSignOnListener.java as a workaround for issue1.
Looks like you need to do the following: Write a custom class that extends SingleSignOnListener and over-ride the sessionEvent() as necessary. In CiscoSSOValve, over-ride getSessionListener(String) and return your custom listener instead. Mark > > Compilation errors we are facing are: > > [javac] > /data/shared_ws/jasper/kneogy_stashNew/un_CUSA/Projects/cisco-unity-valve/src/com/cisco/unity/tomcat/valve/CiscoSSOValve.java:91: > error: cannot find symbol > [javac] synchronized (reverse) { > [javac] ^ > [javac] symbol: variable reverse > [javac] location: class CiscoSSOValve > [javac] > /data/shared_ws/jasper/kneogy_stashNew/un_CUSA/Projects/cisco-unity-valve/src/com/cisco/unity/tomcat/valve/CiscoSSOValve.java:92: > error: cannot find symbol > [javac] ssoId = reverse.get(session); > [javac] ^ > [javac] symbol: variable reverse > [javac] location: class CiscoSSOValve > [javac] > /auto/ipcbu-ucxn-cache/CORES/BLD-cc_mainline_16-cct-ccm-d/unityconnection/CLNX_11.5.0.98/source/un_CUSA/Projects/cisco-unity-valve/src/com/cisco/unity/tomcat/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/CLNX_11.5.0.98/source/un_CUSA/Projects/cisco-unity-valve/src/com/cisco/unity/tomcat/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/CLNX_11.5.0.98/source/un_CUSA/Projects/cisco-unity-valve/src/com/cisco/unity/tomcat/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 > > > Thanks and regards, > Kasturi > > > > -----Original Message----- > From: Christopher Schultz [mailto:ch...@christopherschultz.net] > Sent: Wednesday, October 14, 2015 1:50 AM > To: Tomcat Users List > Subject: Re: Issue with Tomcat Version 7.0.64 > > Kasturi, > > On 10/13/15 9:59 AM, kasturi wrote: >> 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 > > The list has ruined your formatting. Can you post with a text-only message? > >> //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 > > That doesn't look like a compiler message. > >> sessionEvent() Method does not exist > > Nor does this. Can you post actual compiler output? > >> This new class has been introduced, but we cannot extend this class as >> we are already extending "SingleSignOn" class. > > What new 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. > > Which class requires SSOID to instantiate it? This class has a no-arg > constructor in 7.0.64: > > http://svn.apache.org/viewvc/tomcat/tc7.0.x/tags/TOMCAT_7_0_64/java/org/ > apache/catalina/authenticator/SingleSignOn.java?view=markup > >> //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/unityconnect > ion/CL > > > NX_11.5.0.98/source/un_CUSA/Projects/cisco-unity-valve/src/com/cisco/uni > ty/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/unityconnect > ion/CL > > > NX_11.5.0.98/source/un_CUSA/Projects/cisco-unity-valve/src/com/cisco/uni > ty/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/unityconnect > ion/CL > > > NX_11.5.0.98/source/un_CUSA/Projects/cisco-unity-valve/src/com/cisco/uni > ty/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 > > There are no deprecated methods in SingleSignOn.java. If you want to know > what happened to SingleSignOn.java, follow the revision history which you can > see here: > http://svn.apache.org/viewvc/tomcat/tc7.0.x/tags/TOMCAT_7_0_64/java/org/ > apache/catalina/authenticator/SingleSignOn.java?view=log > >> We need assistance on below points: > >> 1. How to fetch the SSOId corresponding to a session as >> 'reverse' map does not exists any more. > > See r1675282. > >> 2. How does the call flow happen of SingleSignOn methods? > > Sorry, I can't help there. :/ > > -chris > > --------------------------------------------------------------------- > To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org > For additional commands, e-mail: users-h...@tomcat.apache.org > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org > For additional commands, e-mail: users-h...@tomcat.apache.org > --------------------------------------------------------------------- To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org For additional commands, e-mail: users-h...@tomcat.apache.org