问题描述
我开发了一个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>
谢谢。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)