Author: remm
Date: Wed Nov 4 16:09:17 2015
New Revision: 1712575
URL: http://svn.apache.org/viewvc?rev=1712575&view=rev
Log:
Use InstanceManager for server endpoint instances. For client instances, it
sounds more complex if it is required since it is static stuff independent of
the Servlet container.
Modified:
tomcat/trunk/java/org/apache/tomcat/websocket/LocalStrings.properties
tomcat/trunk/java/org/apache/tomcat/websocket/WsSession.java
tomcat/trunk/java/org/apache/tomcat/websocket/WsWebSocketContainer.java
tomcat/trunk/java/org/apache/tomcat/websocket/server/WsServerContainer.java
Modified: tomcat/trunk/java/org/apache/tomcat/websocket/LocalStrings.properties
URL:
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/tomcat/websocket/LocalStrings.properties?rev=1712575&r1=1712574&r2=1712575&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/tomcat/websocket/LocalStrings.properties
(original)
+++ tomcat/trunk/java/org/apache/tomcat/websocket/LocalStrings.properties Wed
Nov 4 16:09:17 2015
@@ -99,6 +99,8 @@ wsSession.sendCloseFail=Failed to send c
wsSession.removeHandlerFailed=Unable to remove the handler [{0}] as it was not
registered with this session
wsSession.unknownHandler=Unable to add the message handler [{0}] as it was for
the unrecognised type [{1}]
wsSession.unknownHandlerType=Unable to add the message handler [{0}] as it was
wrapped as the unrecognised type [{1}]
+wsSession.instanceNew=Endpoint instance registration failed
+wsSession.instanceDestroy=Endpoint instance unregistration failed
# Note the following message is used as a close reason in a WebSocket control
# frame and therefore must be 123 bytes (not characters) or less in length.
Modified: tomcat/trunk/java/org/apache/tomcat/websocket/WsSession.java
URL:
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/tomcat/websocket/WsSession.java?rev=1712575&r1=1712574&r2=1712575&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/tomcat/websocket/WsSession.java (original)
+++ tomcat/trunk/java/org/apache/tomcat/websocket/WsSession.java Wed Nov 4
16:09:17 2015
@@ -47,6 +47,7 @@ import javax.websocket.WebSocketContaine
import org.apache.juli.logging.Log;
import org.apache.juli.logging.LogFactory;
+import org.apache.tomcat.InstanceManager;
import org.apache.tomcat.util.ExceptionUtils;
import org.apache.tomcat.util.res.StringManager;
@@ -179,6 +180,15 @@ public class WsSession implements Sessio
this.userProperties.putAll(endpointConfig.getUserProperties());
this.id = Long.toHexString(ids.getAndIncrement());
+ InstanceManager instanceManager =
webSocketContainer.getInstanceManager();
+ if (instanceManager != null) {
+ try {
+ instanceManager.newInstance(localEndpoint);
+ } catch (Exception e) {
+ throw new
DeploymentException(sm.getString("wsSession.instanceNew"), e);
+ }
+ }
+
if (log.isDebugEnabled()) {
log.debug(sm.getString("wsSession.created", id));
}
@@ -519,11 +529,15 @@ public class WsSession implements Sessio
private void fireEndpointOnClose(CloseReason closeReason) {
// Fire the onClose event
+ InstanceManager instanceManager =
webSocketContainer.getInstanceManager();
Thread t = Thread.currentThread();
ClassLoader cl = t.getContextClassLoader();
t.setContextClassLoader(applicationClassLoader);
try {
localEndpoint.onClose(this, closeReason);
+ if (instanceManager != null) {
+ instanceManager.destroyInstance(localEndpoint);
+ }
} catch (Throwable throwable) {
ExceptionUtils.handleThrowable(throwable);
localEndpoint.onError(this, throwable);
Modified:
tomcat/trunk/java/org/apache/tomcat/websocket/WsWebSocketContainer.java
URL:
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/tomcat/websocket/WsWebSocketContainer.java?rev=1712575&r1=1712574&r2=1712575&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/tomcat/websocket/WsWebSocketContainer.java
(original)
+++ tomcat/trunk/java/org/apache/tomcat/websocket/WsWebSocketContainer.java Wed
Nov 4 16:09:17 2015
@@ -64,6 +64,7 @@ import javax.websocket.WebSocketContaine
import org.apache.juli.logging.Log;
import org.apache.juli.logging.LogFactory;
+import org.apache.tomcat.InstanceManager;
import org.apache.tomcat.util.codec.binary.Base64;
import org.apache.tomcat.util.collections.CaseInsensitiveKeyMap;
import org.apache.tomcat.util.res.StringManager;
@@ -96,6 +97,15 @@ public class WsWebSocketContainer implem
private int backgroundProcessCount = 0;
private int processPeriod = Constants.DEFAULT_PROCESS_PERIOD;
+ private InstanceManager instanceManager;
+
+ InstanceManager getInstanceManager() {
+ return instanceManager;
+ }
+
+ protected void setInstanceManager(InstanceManager instanceManager) {
+ this.instanceManager = instanceManager;
+ }
@Override
public Session connectToServer(Object pojo, URI path)
Modified:
tomcat/trunk/java/org/apache/tomcat/websocket/server/WsServerContainer.java
URL:
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/tomcat/websocket/server/WsServerContainer.java?rev=1712575&r1=1712574&r2=1712575&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/tomcat/websocket/server/WsServerContainer.java
(original)
+++ tomcat/trunk/java/org/apache/tomcat/websocket/server/WsServerContainer.java
Wed Nov 4 16:09:17 2015
@@ -51,6 +51,7 @@ import javax.websocket.server.ServerEndp
import org.apache.juli.logging.Log;
import org.apache.juli.logging.LogFactory;
+import org.apache.tomcat.InstanceManager;
import org.apache.tomcat.util.res.StringManager;
import org.apache.tomcat.websocket.WsSession;
import org.apache.tomcat.websocket.WsWebSocketContainer;
@@ -96,6 +97,7 @@ public class WsServerContainer extends W
WsServerContainer(ServletContext servletContext) {
this.servletContext = servletContext;
+ setInstanceManager((InstanceManager)
servletContext.getAttribute(InstanceManager.class.getName()));
// Configure servlet context wide defaults
String value = servletContext.getInitParameter(
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]