You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cxf.apache.org by dk...@apache.org on 2017/03/08 18:42:04 UTC
cxf git commit: Update jetty session handling to support 9.4 (don't
update to 9.4 due to atmosphere)
Repository: cxf
Updated Branches:
refs/heads/master bfa7a22c9 -> 3088952a6
Update jetty session handling to support 9.4 (don't update to 9.4 due to atmosphere)
Project: http://git-wip-us.apache.org/repos/asf/cxf/repo
Commit: http://git-wip-us.apache.org/repos/asf/cxf/commit/3088952a
Tree: http://git-wip-us.apache.org/repos/asf/cxf/tree/3088952a
Diff: http://git-wip-us.apache.org/repos/asf/cxf/diff/3088952a
Branch: refs/heads/master
Commit: 3088952a6e3385ee628cf8c91340908ed3a67aa3
Parents: bfa7a22
Author: Daniel Kulp <dk...@apache.org>
Authored: Wed Mar 8 13:32:36 2017 -0500
Committer: Daniel Kulp <dk...@apache.org>
Committed: Wed Mar 8 13:32:36 2017 -0500
----------------------------------------------------------------------
parent/pom.xml | 2 +-
.../http_jetty/JettyHTTPServerEngine.java | 38 +++++++++++++-------
2 files changed, 27 insertions(+), 13 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cxf/blob/3088952a/parent/pom.xml
----------------------------------------------------------------------
diff --git a/parent/pom.xml b/parent/pom.xml
index 972ee86..98fc58d 100644
--- a/parent/pom.xml
+++ b/parent/pom.xml
@@ -119,7 +119,7 @@
<cxf.jdom.version>1.0</cxf.jdom.version>
<cxf.jettison.version>1.3.8</cxf.jettison.version>
<cxf.jetty9.version>9.3.14.v20161028</cxf.jetty9.version>
- <!-- Jetty 9.3.15 breaks atmosphere, don't upgrade until new version of
+ <!-- Jetty 9.3.15+ and 9.4.x break atmosphere, don't upgrade until new version of
atmosphere is available -->
<!--cxf.jetty9.version>9.3.16.v20170120</cxf.jetty9.version-->
<cxf.jetty.version>${cxf.jetty9.version}</cxf.jetty.version>
http://git-wip-us.apache.org/repos/asf/cxf/blob/3088952a/rt/transports/http-jetty/src/main/java/org/apache/cxf/transport/http_jetty/JettyHTTPServerEngine.java
----------------------------------------------------------------------
diff --git a/rt/transports/http-jetty/src/main/java/org/apache/cxf/transport/http_jetty/JettyHTTPServerEngine.java b/rt/transports/http-jetty/src/main/java/org/apache/cxf/transport/http_jetty/JettyHTTPServerEngine.java
index e7def27..5bbfdcf 100644
--- a/rt/transports/http-jetty/src/main/java/org/apache/cxf/transport/http_jetty/JettyHTTPServerEngine.java
+++ b/rt/transports/http-jetty/src/main/java/org/apache/cxf/transport/http_jetty/JettyHTTPServerEngine.java
@@ -22,6 +22,7 @@ package org.apache.cxf.transport.http_jetty;
import java.io.Closeable;
import java.io.IOException;
import java.io.Writer;
+import java.lang.reflect.Method;
import java.net.URL;
import java.security.GeneralSecurityException;
import java.util.ArrayList;
@@ -43,6 +44,7 @@ import org.apache.cxf.Bus;
import org.apache.cxf.common.i18n.Message;
import org.apache.cxf.common.logging.LogUtils;
import org.apache.cxf.common.util.PropertyUtils;
+import org.apache.cxf.common.util.ReflectionUtil;
import org.apache.cxf.common.util.StringUtils;
import org.apache.cxf.common.util.SystemPropertyAction;
import org.apache.cxf.configuration.jsse.SSLUtils;
@@ -62,15 +64,12 @@ import org.eclipse.jetty.server.Request;
import org.eclipse.jetty.server.Response;
import org.eclipse.jetty.server.Server;
import org.eclipse.jetty.server.ServerConnector;
-import org.eclipse.jetty.server.SessionManager;
import org.eclipse.jetty.server.SslConnectionFactory;
import org.eclipse.jetty.server.handler.ContextHandler;
import org.eclipse.jetty.server.handler.ContextHandlerCollection;
import org.eclipse.jetty.server.handler.DefaultHandler;
import org.eclipse.jetty.server.handler.ErrorHandler;
import org.eclipse.jetty.server.handler.HandlerCollection;
-import org.eclipse.jetty.server.session.HashSessionIdManager;
-import org.eclipse.jetty.server.session.HashSessionManager;
import org.eclipse.jetty.server.session.SessionHandler;
import org.eclipse.jetty.util.component.Container;
import org.eclipse.jetty.util.ssl.SslContextFactory;
@@ -116,7 +115,7 @@ public class JettyHTTPServerEngine implements ServerEngine {
private List<Handler> handlers;
private ContextHandlerCollection contexts;
private Container.Listener mBeanContainer;
- private SessionManager sessionManager;
+ private SessionHandler sessionHandler;
private ThreadPool threadPool;
@@ -491,19 +490,34 @@ public class JettyHTTPServerEngine implements ServerEngine {
// bind the jetty http handler with the context handler
if (isSessionSupport) {
// If we have sessions, we need two handlers.
- if (sessionManager == null) {
- sessionManager = new HashSessionManager();
- HashSessionIdManager idManager = new HashSessionIdManager();
- sessionManager.setSessionIdManager(idManager);
+ SessionHandler sh = null;
+ if (Server.getVersion().startsWith("9.2")
+ || Server.getVersion().startsWith("9.3")) {
+ if (sessionHandler == null) {
+ sessionHandler = new SessionHandler();
+ }
+ sh = new SessionHandler();
+ try {
+ Method get = ReflectionUtil.getDeclaredMethod(SessionHandler.class, "getSessionManager");
+ Method set = ReflectionUtil.getDeclaredMethod(SessionHandler.class,
+ "setSessionManager",
+ get.getReturnType());
+ ReflectionUtil.setAccessible(set)
+ .invoke(sh, ReflectionUtil.setAccessible(get).invoke(sessionHandler));
+ } catch (Throwable t) {
+ //ignore, just use the new session manager
+ }
+ } else {
+ //9.4+ stores the session id handling and cache and everything on the server, just need the handler
+ sh = new SessionHandler();
}
- SessionHandler sessionHandler = new SessionHandler(sessionManager);
if (securityHandler != null) {
//use the securityHander which already wrap the jetty http handler
- sessionHandler.setHandler(securityHandler);
+ sh.setHandler(securityHandler);
} else {
- sessionHandler.setHandler(handler);
+ sh.setHandler(handler);
}
- context.setHandler(sessionHandler);
+ context.setHandler(sh);
} else {
// otherwise, just the one.
if (securityHandler != null) {