You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Weblogic 12.1.3/12.2.1.3建立websocket连接报404错误问题咨询

Weblogic 12.1.3/12.2.1.3 下Spring STOMP + SockJS WebSocket 404 排查解决方案

Tyrus是Weblogic内置的JSR-356标准WebSocket实现,Upgrade状态返回NOT_AVAILABLE本质是容器的WebSocket引擎未识别到端点请求,未执行升级逻辑,可按以下步骤排查修复:

排查修复步骤

  • 校验Weblogic域WebSocket开关
    登录Weblogic域控制台,依次进入「配置」-「Web应用程序」,确认启用WebSocket复选框已勾选,修改后需重启域生效。Weblogic 12.1.3版本存在已知开关失效bug,需额外在域启动参数中添加-Dweblogic.websocket.server.enabled=true强制开启引擎。
  • 排查WebSocket实现依赖冲突
    Spring默认传递引入Tomcat的WebSocket实现包,会和Weblogic内置的Tyrus实现冲突,导致端点注册失效。Maven项目需在spring-boot-starter-websocket依赖中排除Tomcat WebSocket包:
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-websocket</artifactId>
        <exclusions>
            <exclusion>
                <groupId>org.apache.tomcat.embed</groupId>
                <artifactId>tomcat-embed-websocket</artifactId>
            </exclusion>
        </exclusions>
    </dependency>
    
  • 修正weblogic.xml类加载优先级配置
    在项目WEB-INF/weblogic.xml中添加以下配置,让容器优先加载自带的WebSocket相关类,避免应用内依赖覆盖容器实现:
    <weblogic-web-app xmlns="http://xmlns.oracle.com/weblogic/weblogic-web-app" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.oracle.com/weblogic/weblogic-web-app http://xmlns.oracle.com/weblogic/weblogic-web-app/1.7/weblogic-web-app.xsd">
        <container-descriptor>
            <prefer-application-packages>
                <package-name>javax.websocket.*</package-name>
                <package-name>org.glassfish.tyrus.*</package-name>
            </prefer-application-packages>
        </container-descriptor>
    </weblogic-web-app>
    
  • 校验Spring STOMP端点配置
    请勿为STOMP端点添加@ServerEndpoint注解(该注解会让Tyrus直接接管,和Spring的STOMP代理逻辑冲突),正确配置示例如下:
    @Configuration
    @EnableWebSocketMessageBroker
    public class WebSocketConfig implements WebSocketMessageBrokerConfigurer {
        @Override
        public void registerStompEndpoints(StompEndpointRegistry registry) {
            // 端点路径需和前端SockJS连接路径完全匹配
            registry.addEndpoint("/ws-stomp")
                    .setAllowedOriginPatterns("*")
                    .withSockJS();
        }
    
        @Override
        public void configureMessageBroker(MessageBrokerRegistry config) {
            config.enableSimpleBroker("/topic", "/queue");
            config.setApplicationDestinationPrefixes("/app");
        }
    }
    

验证方法

部署修改后的应用,直接访问SockJS信息端点http://<服务地址>/<应用上下文路径>/ws-stomp/info,若返回如下格式JSON则说明端点注册成功,可正常发起WebSocket连接:

{"entropy":123456,"origins":["*:*"],"cookie_needed":true,"websocket":true}

内容的提问来源于stack exchange,提问作者user4768793

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 01:57:02