带有Websockets的Java Spring Boot项目返回状态500错误

时间:2017-12-13 23:06:07

标签: java spring-boot websocket spring-websocket java-websocket

我是一名学生,学习如何使用Spring Boot构建webapps。我有一个项目,我正在试验websockets。

尝试连接已部署应用程序上的聊天时遇到500状态错误。

我已经部署了我的项目here。 要测试,请使用登录:gohan@gohan.com / password

当我通过Spring Tool Suite在我自己的计算机上托管应用程序时,聊天功能完美无瑕。仅在我的EC2 Ubuntu Server 16.04 LTS(HVM)实例上,我在尝试连接聊天时遇到此500级错误。

我已按照以下教程了解聊天应用: https://www.callicoder.com/spring-boot-websocket-chat-example/

这是我的websocket配置文件:

package com.web.config;

import org.springframework.context.annotation.Configuration;
import org.springframework.messaging.simp.config.MessageBrokerRegistry;
import org.springframework.web.socket.config.annotation.*;

@Configuration
@EnableWebSocketMessageBroker
public class WebSocketConfig extends AbstractWebSocketMessageBrokerConfigurer {

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

@Override
public void configureMessageBroker(MessageBrokerRegistry registry) {
    registry.setApplicationDestinationPrefixes("/app");
    registry.enableSimpleBroker("/channel");
}
}

有人可以向我解释为什么使用websockets的应用程序在本地托管时功能完美,但在部署时却没有?

此外,有人可以提供解决方案,我可以理解为什么会出现这个问题吗?

1 个答案:

答案 0 :(得分:0)

我能够使用以下配置部署和运行您的应用程序(在Tomcat服务器上):

public class Project1Application extends SpringBootServletInitializer {

    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
        return application.sources(Project1Application.class);
    }

    public static void main(String[] args) {
        SpringApplication.run(Project1Application.class, args);
    }
    /*@Bean
    public EmbeddedServletContainerFactory servletContainer() {
        TomcatEmbeddedServletContainerFactory tomcat = new TomcatEmbeddedServletContainerFactory();
        Connector ajpConnector = new Connector("AJP/1.3");
        ajpConnector.setPort(9090);
        ajpConnector.setSecure(false);
        ajpConnector.setAllowTrace(false);
        ajpConnector.setScheme("http");
        tomcat.addAdditionalTomcatConnectors(ajpConnector);
        return tomcat;
    }*/
}

为了测试它,我只是将它打包到ROOT.war并将其扔到webapps文件夹中。 Websockets按预期工作。

希望这有帮助。

PS。事实证明This article对我非常有用。祝你好运!