账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    springboot集成netty部署在weblogic上停止再启动时端口占用
    62
    0

    最近手头上出现了一个问题,将springboot集成netty编写的项目打成war包部署在weblogic11g上时,使用weblogic启动一次项目再关闭项目,再次启动的时候netty就发生了端口占用问题,经检查发现是weblogic关闭项目的时候netty并没有关闭,使得项目再次启动初始化netty的时候报错,请问有什么好的解决办法吗?

    @Component
    //@DependsOn("fieldChangeListener")
    public class NettyInital implements ApplicationListener<ContextRefreshedEvent>{
        
        private Logger logger = LoggerFactory.getLogger(this.getClass().getName());
        
        @Autowired
        private MessageController messageControllerImpl;
         
        public void start() {
            EventLoopGroup parentGroup = new NioEventLoopGroup();
            EventLoopGroup childGroup = new NioEventLoopGroup();
            try {
                ServerBootstrap bootstrap = new ServerBootstrap();
                bootstrap.group(parentGroup, childGroup);
                //指定通道排队数量
                bootstrap.option(ChannelOption.SO_BACKLOG, 128)
                //心跳包,设置成false,自己写心跳包
                         .childOption(ChannelOption.SO_KEEPALIVE, false)
                         .channel(NioServerSocketChannel.class)
                         .childHandler(new ChannelInitializer<SocketChannel>() {
                             @Override
                             public void initChannel(SocketChannel ch) throws Exception {
                                 logger.info("has a request....");
                                 ch.pipeline().addLast(new DelimiterBasedFrameDecoder(Integer.MAX_VALUE, Delimiters.lineDelimiter()[0]));
                                 ch.pipeline().addLast(new StringDecoder());
                                 ch.pipeline().addLast(new ServerHandler(messageControllerImpl));
                                 //中介者handler
                                 ch.pipeline().addLast(new StringEncoder());
                             }
                         });
                ChannelFuture f = bootstrap.bind(ConfigUtil.getNettyPort()).sync();
                InetAddress netAddress = InetAddress.getLocalHost();
                logger.info(">>>>>>>>>>netty statrt successfully!");
    //            f.channel().closeFuture().sync();//获取channel的CloseFuture,阻塞当前线程直到关闭操作完成
                
                
            } catch (Exception e) {
                e.printStackTrace();
                parentGroup.shutdownGracefully();
                childGroup.shutdownGracefully();
            }
            
        }
    
        //程序启动初始化该类
        @Override
        public void onApplicationEvent(ContextRefreshedEvent event) {
            this.start();
        }
    
    1
    打赏
    收藏
    点击回答
        全部回答
    • 0
    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部