Spring4会话

时间:2014-12-04 07:25:59

标签: spring session websocket stomp

对不起!我在这里有一个问题。哪个版本的Spring是“org.springframework.session。*”?我在Spring4.0 jar中找不到它。 这是班级:

public abstract class AbstractSessionWebSocketMessageBrokerConfigurer<S extends ExpiringSession>
            extends AbstractWebSocketMessageBrokerConfigurer {
    @Autowired
    @SuppressWarnings("rawtypes")
    private SessionRepository sessionRepository;
    @Autowired
    private ApplicationEventPublisher eventPublisher;

    @Override
    public void configureClientInboundChannel(ChannelRegistration registration) {
        registration.setInterceptors(sessionRepositoryInterceptor());
    }

    @Override
    public final void registerStompEndpoints(StompEndpointRegistry registry) {
        configureStompEndpoints(new SessionStompEndpointRegistry(registry,sessionRepositoryInterceptor()));
    }

    /**
     * Register STOMP endpoints mapping each to a specific URL and (optionally)
     * enabling and configuring SockJS fallback options with a
     * {@link SessionRepositoryMessageInterceptor} automatically added as an
     * interceptor.
     *
     * @param registry
     *            the {@link StompEndpointRegistry} which automatically has a
     *            {@link SessionRepositoryMessageInterceptor} added to it.
     */
    protected abstract void configureStompEndpoints(StompEndpointRegistry registry);

    @Override
    public void configureWebSocketTransport(
            WebSocketTransportRegistration registration) {
        registration.addDecoratorFactory(wsConnectHandlerDecoratorFactory());
    }

    @Bean
    public WebSocketRegistryListener webSocketRegistryListener() {
        return new WebSocketRegistryListener();
    }

    @Bean
    public WebSocketConnectHandlerDecoratorFactory wsConnectHandlerDecoratorFactory() {
        return new WebSocketConnectHandlerDecoratorFactory(eventPublisher);
    }

    @Bean
    @SuppressWarnings("unchecked")
    public SessionRepositoryMessageInterceptor<S> sessionRepositoryInterceptor() {
        return new SessionRepositoryMessageInterceptor<S>(sessionRepository);
    }

    static class SessionStompEndpointRegistry implements StompEndpointRegistry {
        private final StompEndpointRegistry registry;
        private final HandshakeInterceptor interceptor;

        public SessionStompEndpointRegistry(StompEndpointRegistry registry,HandshakeInterceptor interceptor) {
            this.registry = registry;
            this.interceptor = interceptor;
        }

        public StompWebSocketEndpointRegistration addEndpoint(String... paths) {
            StompWebSocketEndpointRegistration endpoints = registry.addEndpoint(paths);
            endpoints.addInterceptors(interceptor);
            return endpoints;
        }
    }
}

1 个答案:

答案 0 :(得分:0)

Spring Session是一个单独的项目:https://github.com/spring-projects/spring-session

您应该使用一些依赖关系管理工具(Gradle或Maven)来控制应用程序的工件。

请参阅那里的WebScoket示例:https://github.com/spring-projects/spring-session/tree/master/samples/websocket

Spring Session工件是:

compile "org.springframework.session:spring-session:1.0.0.RC1"