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();
    }
}



4
2
华山小叮当
老哥厉害啊 这个问题卡了好几天了
2025-01-10
共2条回复

dae丶

2023-11-22

请问有解决的办法吗  我也是起不来

0
6
慕运维6519169
问题下引入spring-boot-starter或者spring-boot-starter-web都无效,毕竟已经设置了WebApplicationType.NONE
2023-12-04
共6条回复

小鲍2652183

2023-09-26

我也是这个问题,请问解决了吗?

0
0

w3n9

2023-08-09

这里是不是只引入spring-boot-starter更好,感觉不需要引入spring-boot-starter-web

0
3
Danny_Idea
回复
w3n9
👍👍👍👍👍
2023-08-10
共3条回复

Danny_Idea

2023-07-28

是不是因为你没有设置enabledubbo注解 或者服务上下文没有dubbo接口要暴露
0
1
三尺357159
我也是这个问题,请问视频中有展示暴露dubbo接口的服务上下文吗
2023-11-05
共1条回复

SpringCloudAlibaba高并发仿斗鱼直播平台实战

SpringCloudAlibaba高并发仿斗鱼直播平台实战

421 学习 · 344 问题

查看课程