You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by ma...@apache.org on 2021/05/05 11:52:54 UTC
[tomcat] branch master updated: Refactor InstanceManager lookup
This is an automated email from the ASF dual-hosted git repository.
markt pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/tomcat.git
The following commit(s) were added to refs/heads/master by this push:
new 7883e3d Refactor InstanceManager lookup
7883e3d is described below
commit 7883e3dec71c27b2d14eb4a41c1beae9ff726aa5
Author: Mark Thomas <ma...@apache.org>
AuthorDate: Wed May 5 12:08:50 2021 +0100
Refactor InstanceManager lookup
---
java/org/apache/tomcat/websocket/WsSession.java | 29 +++++++---------------
.../tomcat/websocket/WsWebSocketContainer.java | 8 ++++--
2 files changed, 15 insertions(+), 22 deletions(-)
diff --git a/java/org/apache/tomcat/websocket/WsSession.java b/java/org/apache/tomcat/websocket/WsSession.java
index 4c71d84..c91a0f2 100644
--- a/java/org/apache/tomcat/websocket/WsSession.java
+++ b/java/org/apache/tomcat/websocket/WsSession.java
@@ -54,7 +54,6 @@ import jakarta.websocket.server.ServerEndpointConfig.Configurator;
import org.apache.juli.logging.Log;
import org.apache.juli.logging.LogFactory;
import org.apache.tomcat.InstanceManager;
-import org.apache.tomcat.InstanceManagerBindings;
import org.apache.tomcat.util.ExceptionUtils;
import org.apache.tomcat.util.res.StringManager;
import org.apache.tomcat.websocket.pojo.PojoEndpointServer;
@@ -173,12 +172,7 @@ public class WsSession implements Session {
this.userProperties.putAll(endpointConfig.getUserProperties());
this.id = Long.toHexString(ids.getAndIncrement());
- InstanceManager instanceManager = webSocketContainer.getInstanceManager();
- if (instanceManager == null) {
- instanceManager = InstanceManagerBindings.get(applicationClassLoader);
- }
-
- this.localEndpoint = clientEndpointHolder.getInstance(instanceManager);
+ this.localEndpoint = clientEndpointHolder.getInstance(getInstanceManager());
if (log.isDebugEnabled()) {
log.debug(sm.getString("wsSession.created", id));
@@ -261,11 +255,7 @@ public class WsSession implements Session {
this.userProperties.putAll(endpointConfig.getUserProperties());
this.id = Long.toHexString(ids.getAndIncrement());
- InstanceManager instanceManager = webSocketContainer.getInstanceManager();
- if (instanceManager == null) {
- instanceManager = InstanceManagerBindings.get(applicationClassLoader);
- }
-
+ InstanceManager instanceManager = getInstanceManager();
Configurator configurator = serverEndpointConfig.getConfigurator();
Class<?> clazz = serverEndpointConfig.getEndpointClass();
@@ -390,10 +380,7 @@ public class WsSession implements Session {
this.userProperties.putAll(endpointConfig.getUserProperties());
this.id = Long.toHexString(ids.getAndIncrement());
- InstanceManager instanceManager = webSocketContainer.getInstanceManager();
- if (instanceManager == null) {
- instanceManager = InstanceManagerBindings.get(applicationClassLoader);
- }
+ InstanceManager instanceManager = getInstanceManager();
if (instanceManager != null) {
try {
instanceManager.newInstance(localEndpoint);
@@ -408,6 +395,11 @@ public class WsSession implements Session {
}
+ public InstanceManager getInstanceManager() {
+ return webSocketContainer.getInstanceManager(applicationClassLoader);
+ }
+
+
@Override
public WebSocketContainer getContainer() {
checkState();
@@ -758,10 +750,7 @@ public class WsSession implements Session {
// Fire the onClose event
Throwable throwable = null;
- InstanceManager instanceManager = webSocketContainer.getInstanceManager();
- if (instanceManager == null) {
- instanceManager = InstanceManagerBindings.get(applicationClassLoader);
- }
+ InstanceManager instanceManager = webSocketContainer.getInstanceManager(applicationClassLoader);
Thread t = Thread.currentThread();
ClassLoader cl = t.getContextClassLoader();
t.setContextClassLoader(applicationClassLoader);
diff --git a/java/org/apache/tomcat/websocket/WsWebSocketContainer.java b/java/org/apache/tomcat/websocket/WsWebSocketContainer.java
index aee1994..52d7837 100644
--- a/java/org/apache/tomcat/websocket/WsWebSocketContainer.java
+++ b/java/org/apache/tomcat/websocket/WsWebSocketContainer.java
@@ -69,6 +69,7 @@ import jakarta.websocket.WebSocketContainer;
import org.apache.juli.logging.Log;
import org.apache.juli.logging.LogFactory;
import org.apache.tomcat.InstanceManager;
+import org.apache.tomcat.InstanceManagerBindings;
import org.apache.tomcat.util.buf.StringUtils;
import org.apache.tomcat.util.codec.binary.Base64;
import org.apache.tomcat.util.collections.CaseInsensitiveKeyMap;
@@ -105,8 +106,11 @@ public class WsWebSocketContainer implements WebSocketContainer, BackgroundProce
private InstanceManager instanceManager;
- InstanceManager getInstanceManager() {
- return instanceManager;
+ protected InstanceManager getInstanceManager(ClassLoader classLoader) {
+ if (instanceManager != null) {
+ return instanceManager;
+ }
+ return InstanceManagerBindings.get(classLoader);
}
protected void setInstanceManager(InstanceManager instanceManager) {
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org