@ -17,6 +17,8 @@
@@ -17,6 +17,8 @@
package org.springframework.web.socket.config ;
import org.springframework.scheduling.concurrent.ThreadPoolTaskScheduler ;
import org.springframework.util.ClassUtils ;
import org.springframework.web.socket.config.annotation.WebSocketConfigurationSupport ;
import org.w3c.dom.Element ;
import org.springframework.beans.factory.config.BeanDefinition ;
@ -40,6 +42,11 @@ import org.springframework.web.socket.sockjs.transport.handler.WebSocketTranspor
@@ -40,6 +42,11 @@ import org.springframework.web.socket.sockjs.transport.handler.WebSocketTranspor
* /
class WebSocketNamespaceUtils {
// Check for setRemoveOnCancelPolicy method - available on JDK 7 and higher
private static boolean hasRemoveOnCancelPolicyMethod = ClassUtils . hasMethod (
WebSocketConfigurationSupport . class , "setRemoveOnCancelPolicy" , boolean . class ) ;
public static RuntimeBeanReference registerHandshakeHandler ( Element element , ParserContext parserContext , Object source ) {
RuntimeBeanReference handlerRef ;
Element handlerElem = DomUtils . getChildElementByTagName ( element , "handshake-handler" ) ;
@ -140,7 +147,9 @@ class WebSocketNamespaceUtils {
@@ -140,7 +147,9 @@ class WebSocketNamespaceUtils {
taskSchedulerDef . setRole ( BeanDefinition . ROLE_INFRASTRUCTURE ) ;
taskSchedulerDef . getPropertyValues ( ) . add ( "poolSize" , Runtime . getRuntime ( ) . availableProcessors ( ) ) ;
taskSchedulerDef . getPropertyValues ( ) . add ( "threadNamePrefix" , schedulerName + "-" ) ;
taskSchedulerDef . getPropertyValues ( ) . add ( "removeOnCancelPolicy" , true ) ;
if ( hasRemoveOnCancelPolicyMethod ) {
taskSchedulerDef . getPropertyValues ( ) . add ( "removeOnCancelPolicy" , true ) ;
}
parserContext . getRegistry ( ) . registerBeanDefinition ( schedulerName , taskSchedulerDef ) ;
parserContext . registerComponent ( new BeanComponentDefinition ( taskSchedulerDef , schedulerName ) ) ;
}