WebApplicationType.NONE无法启动应用程序
来源:7-14 -1 IM系统的认证接入(上)

__孤独的旅行者
2023-07-28
application.setWebApplicationType(WebApplicationType.SERVLET);
为啥我这边只有设置WebApplicationType.SERVLET才能启动起来,而老师的WebApplicationType.NONE就能启动起来
写回答
5回答
-
慕运维6519169
2023-12-05
网上一通搜索,再加日志分析,确定就是设置WebApplicationType.NONE之后,主线程就关闭了,而之前启动的dubbo服务是daemon线程,不会阻止主线程关闭。主线程关闭之后整个spring容器就关闭了。而且是通过DubboShutdownHook优雅的关闭,所以退出状态是Process finished with exit code 0。
楼下提到的无论是引入spring-boot-starter或者spring-boot-starter-web都只是想阻止主线程关闭而已,而我们的provider并不需要这些依赖。
一种可行的办法是启动一个和主线程生命周期绑定的线程:
@SpringBootApplication @EnableDubbo public class ImProviderApplication { public static void main(String[] args) { SpringApplication springApplication = new SpringApplication(ImProviderApplication.class); springApplication.setWebApplicationType(WebApplicationType.NONE); springApplication.run(args); new Thread( ()->{ synchronized (ImProviderApplication.class){ try { ImProviderApplication.class.wait(); }catch (Exception e){ e.printStackTrace(); } } } ).start(); } }
422025-01-10 -
dae丶
2023-11-22
请问有解决的办法吗 我也是起不来
062023-12-04 -
小鲍2652183
2023-09-26
我也是这个问题,请问解决了吗?
00 -
w3n9
2023-08-09
这里是不是只引入spring-boot-starter更好,感觉不需要引入spring-boot-starter-web
032023-08-10 -
Danny_Idea
2023-07-28
是不是因为你没有设置enabledubbo注解 或者服务上下文没有dubbo接口要暴露012023-11-05
相似问题