Repository: wicket Updated Branches: refs/heads/wicket-8.x d334b9a84 -> 122ddac9d
WICKET-6588 Under Tomcat (ver. >= 8.5) BaseWebSocketBehavior can't find session id cookie Project: http://git-wip-us.apache.org/repos/asf/wicket/repo Commit: http://git-wip-us.apache.org/repos/asf/wicket/commit/122ddac9 Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/122ddac9 Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/122ddac9 Branch: refs/heads/wicket-8.x Commit: 122ddac9dfba6f4fb223ceee94101665fe2ec73d Parents: d334b9a Author: Andrea Del Bene <[email protected]> Authored: Thu Sep 20 16:05:31 2018 +0200 Committer: Andrea Del Bene <[email protected]> Committed: Thu Sep 20 16:05:31 2018 +0200 ---------------------------------------------------------------------- .../apache/wicket/util/cookies/CookieUtils.java | 20 +++++++++++++++++++- .../protocol/ws/api/BaseWebSocketBehavior.java | 15 ++++++--------- 2 files changed, 25 insertions(+), 10 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/wicket/blob/122ddac9/wicket-core/src/main/java/org/apache/wicket/util/cookies/CookieUtils.java ---------------------------------------------------------------------- diff --git a/wicket-core/src/main/java/org/apache/wicket/util/cookies/CookieUtils.java b/wicket-core/src/main/java/org/apache/wicket/util/cookies/CookieUtils.java index a3cfcf6..fc7a639 100644 --- a/wicket-core/src/main/java/org/apache/wicket/util/cookies/CookieUtils.java +++ b/wicket-core/src/main/java/org/apache/wicket/util/cookies/CookieUtils.java @@ -17,8 +17,8 @@ package org.apache.wicket.util.cookies; import javax.servlet.http.Cookie; - import org.apache.wicket.markup.html.form.FormComponent; +import org.apache.wicket.protocol.http.WebApplication; import org.apache.wicket.protocol.http.servlet.ServletWebRequest; import org.apache.wicket.request.Response; import org.apache.wicket.request.cycle.RequestCycle; @@ -40,6 +40,8 @@ public class CookieUtils { private final static Logger log = LoggerFactory.getLogger(CookieUtils.class); + private static final String DEFAULT_SESSIONID_COOKIE_NAME = "JSESSIONID"; + private final CookieDefaults settings; /** @@ -258,6 +260,22 @@ public class CookieUtils return null; } + + + /** + * Gets the name of the cookie where the session id is stored. + * + * @param application + * The current we application holding the {@link javax.servlet.ServletContext}. + * + * @return The name set in {@link javax.servlet.SessionCookieConfig} or the default value 'JSESSIONID' if not set + */ + public String getSessionIdCookieName(WebApplication application) + { + String jsessionCookieName = application.getServletContext().getSessionCookieConfig().getName(); + + return jsessionCookieName == null ? DEFAULT_SESSIONID_COOKIE_NAME : jsessionCookieName; + } /** * Persist/save the data using Cookies. http://git-wip-us.apache.org/repos/asf/wicket/blob/122ddac9/wicket-native-websocket/wicket-native-websocket-core/src/main/java/org/apache/wicket/protocol/ws/api/BaseWebSocketBehavior.java ---------------------------------------------------------------------- diff --git a/wicket-native-websocket/wicket-native-websocket-core/src/main/java/org/apache/wicket/protocol/ws/api/BaseWebSocketBehavior.java b/wicket-native-websocket/wicket-native-websocket-core/src/main/java/org/apache/wicket/protocol/ws/api/BaseWebSocketBehavior.java index 6dca08f..f8a6372 100644 --- a/wicket-native-websocket/wicket-native-websocket-core/src/main/java/org/apache/wicket/protocol/ws/api/BaseWebSocketBehavior.java +++ b/wicket-native-websocket/wicket-native-websocket-core/src/main/java/org/apache/wicket/protocol/ws/api/BaseWebSocketBehavior.java @@ -16,7 +16,11 @@ */ package org.apache.wicket.protocol.ws.api; -import org.apache.wicket.Application; +import java.util.Map; +import java.util.Set; +import javax.servlet.SessionTrackingMode; +import javax.servlet.http.Cookie; +import javax.servlet.http.HttpServletRequest; import org.apache.wicket.Component; import org.apache.wicket.behavior.Behavior; import org.apache.wicket.markup.head.IHeaderResponse; @@ -30,13 +34,6 @@ import org.apache.wicket.util.lang.Generics; import org.apache.wicket.util.string.Strings; import org.apache.wicket.util.template.PackageTextTemplate; -import java.util.Map; -import java.util.Set; - -import javax.servlet.SessionTrackingMode; -import javax.servlet.http.Cookie; -import javax.servlet.http.HttpServletRequest; - /** * A behavior that contributes {@link WicketWebSocketJQueryResourceReference} */ @@ -173,7 +170,7 @@ public class BaseWebSocketBehavior extends Behavior else if (containerRequest instanceof HttpServletRequest) { CookieUtils cookieUtils = new CookieUtils(); - final String jsessionCookieName = application.getServletContext().getSessionCookieConfig().getName(); + final String jsessionCookieName = cookieUtils.getSessionIdCookieName(application); final Cookie jsessionid = cookieUtils.getCookie(jsessionCookieName); HttpServletRequest httpServletRequest = (HttpServletRequest) containerRequest; if (jsessionid == null || httpServletRequest.isRequestedSessionIdValid() == false)
