springboot热部署重启后报错容器有问题
我在run方法了,是用的SpringUtils.getBean(XXX.class);网上有说,容器关闭重启,SpringUtils.getBean还是获取以前的容器,所以报错,我真不太懂,希望大神们指点一下。//业务处理异步线程池,线程池参数可以根据您的业务特点调整,或者您也可以用其他异步方式处理接收到的消息。手动重启,一切正常。然后我写了个类,专门监听其它服务器推送过来的消息,进行数据库更新操
先说下我的情况:
若依的不分离版springboot项目,有热部署。
然后我写了个类,专门监听其它服务器推送过来的消息,进行数据库更新操作。
手动重启,一切正常。但是当我修改某个类文件保存后热部署生效,直接自动重启
这个时候就有问题了,当再监听到有消息来的时候,就报错了。。。。
nested exception is java.lang.IllegalStateException: org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@602ec673 has been closed already
这个是我写的类,系统一启动就自动运行
@Component
public class WarnlampAliiotAmqp implements CommandLineRunner{
private final static Logger logger = LoggerFactory.getLogger(WarnlampAliiotAmqp.class);
//业务处理异步线程池,线程池参数可以根据您的业务特点调整,或者您也可以用其他异步方式处理接收到的消息。
private final static ExecutorService executorService = new ThreadPoolExecutor(
Runtime.getRuntime().availableProcessors(),
Runtime.getRuntime().availableProcessors() * 2, 60, TimeUnit.SECONDS,
new LinkedBlockingQueue<>(50000));
@Override
public void run(String... args) throws Exception {
我在run方法了,是用的SpringUtils.getBean(XXX.class);得到业务对象,进行操作
}
}
网上有说,容器关闭重启,SpringUtils.getBean还是获取以前的容器,所以报错,我真不太懂,希望大神们指点一下
更多推荐
所有评论(0)