微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

启用websocket时,为什么weblogic中的会话不过期?

如何解决启用websocket时,为什么weblogic中的会话不过期?

我开发了一个Spring Boot 2.1.0 Web应用程序,并使用Weblogic 12.2.1.4作为Web服务器。 当我启用WebSocket时,会话不会在Weblogic中失效,但是在嵌入的Tomcat中它可以正常工作,并且会话也失效了。

使用Weblogic时的某些配置如下所示:

pom.xml

<dependency>
    <groupId>org.webjars</groupId>
    <artifactId>sockjs-client</artifactId>
    <version>1.0.2</version>
</dependency>
<dependency>
    <groupId>org.webjars</groupId>
    <artifactId>stomp-websocket</artifactId>
    <version>2.3.3</version>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-amqp</artifactId>
</dependency>

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-websocket</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-tomcat</artifactId>
    <scope>provided</scope>
    <exclusions>
        <exclusion>
            <groupId>org.apache.tomcat.embed</groupId>
            <artifactId>tomcat-embed-websocket</artifactId>
        </exclusion>
    </exclusions>
</dependency>

weblogic.xml

<wls:context-root>/</wls:context-root>
<wls:charset-params>
    <wls:input-charset>
        <wls:resource-path>/*</wls:resource-path>
        <wls:java-charset-name>UTF-8</wls:java-charset-name>
    </wls:input-charset>
</wls:charset-params>

<wls:jsp-descriptor>
    <wls:page-check-seconds>8</wls:page-check-seconds>
</wls:jsp-descriptor>

<wls:container-descriptor>
    <wls:prefer-application-packages>
        <wls:package-name>org.slf4j.*</wls:package-name>
        <wls:package-name>com.fasterxml.jackson.*</wls:package-name>
        <wls:package-name>oracle.*</wls:package-name>
        <wls:package-name>org.springframework.*</wls:package-name>
        <wls:package-name>org.apache.cxf.*</wls:package-name>
    </wls:prefer-application-packages>
</wls:container-descriptor>

<wls:session-descriptor>
    <wls:timeout-secs>1800</wls:timeout-secs>
</wls:session-descriptor>

WebSocektConfig.java

@Configuration
@EnableScheduling
@EnableWebSocketMessagebroker
public class WebSocketConfig implements WebSocketMessagebrokerConfigurer {

    @Override
    public void configureMessagebroker(MessagebrokerRegistry config) {
        config.enableSimplebroker("/topic","/queue");
        config.setApplicationDestinationPrefixes("/app");
    }

    @Override
    public void registerStompEndpoints(StompEndpointRegistry registry) {
        registry.addEndpoint("/websocket").withSockJS();
    }
}

Index.jsp

<script src="<c:url value='/View/header/assets/websocketJs/js/sockjs.min.js'/>"></script>
<script src="<c:url value='/View/header/assets/websocketJs/js/stomp.min.js'/>"></script>
<script>
    var stompClient = null;
    function connectWebsocket() {
        var socket = new SockJS('/websocket');
        stompClient = Stomp.over(socket);
        stompClient.connect({},function (frame) {
            console.log('Connected: ' + frame);
            stompClient.subscribe('/user/queue/msg',function (res) {
                showMessagetoUser(JSON.parse(res.body));
            });
        });
    }
</script>

是否有解决此问题的解决方案或Weblogic配置?

如果您有任何可以帮助我的建议,请添加评论或答案。

谢谢。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。