如何使用spring boot在不同的端口启动web containter和netty server?

时间:2016-06-28 19:12:46

标签: java spring sockets spring-boot netty

我想在端口9061上创建一个Web,并在同一个应用程序中启动一个带有netty的套接字服务器在其他端口(例如1066)上,以便从其他系统中侦听我需要的一些信息。 我尝试了一些东西,但是我用servty服务器端口绑定了servlet端口,这是我不知道的。

以下是代码:

@Component
public class TCPServer {

    @Autowired
    @Qualifier("serverBootstrap")
    private ServerBootstrap serverBootstrap;

    @Autowired
    @Qualifier("tcpSocketAddress")
    private InetSocketAddress tcpPort;

    private Channel serverChannel;

    @PostConstruct
    public void start() throws Exception {
        serverChannel =  serverBootstrap.bind(tcpPort).sync().channel().closeFuture().sync().channel();
    }

    @PreDestroy
    public void stop() throws Exception {
        serverChannel.close();
        serverChannel.parent().close();
    }

    public ServerBootstrap getServerBootstrap() {
        return serverBootstrap;
    }

    public void setServerBootstrap(ServerBootstrap serverBootstrap) {
        this.serverBootstrap = serverBootstrap;
    }

    public InetSocketAddress getTcpPort() {
        return tcpPort;
    }

    public void setTcpPort(InetSocketAddress tcpPort) {
        this.tcpPort = tcpPort;
    }
}

配置:

spring:
  application:
    name: MyServer
  main:
    banner-mode: off    

server:
  port: 9061

nettytcp:
  puerto: 1066

我从未见过9061端口。

1 个答案:

答案 0 :(得分:1)

这是因为你致电.closeFuture().sync()将阻止ServerChannel关闭,这将永远不会在这里。我想你只想打电话给serverBootstrap.bind(tcpPort).sync().channel()