Repository: wicket
Updated Branches:
  refs/heads/master 16db42d16 -> 5fc86bdd8


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/5fc86bdd
Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/5fc86bdd
Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/5fc86bdd

Branch: refs/heads/master
Commit: 5fc86bdd8628686ffcd124849750f327dccc0c77
Parents: 16db42d
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 17:17:11 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/5fc86bdd/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/5fc86bdd/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)

Reply via email to