tongweb部署微服务遇到的问题
一、nacos服务无法注册
解决方案:我们可以借助SpringBoot提供的ApplicationRunner接口,这个接口的作用就是在应用启动完成之后执行一些定义好的初始化操作。所以我们可以在服务启动成功之后,通过这个接口将我们的项目注册到Nacos中,下面看代码
@Component
public class NacosConfig implements ApplicationRunner {
@Autowired(required = false)
private NacosAutoServiceRegistration registration;
@Value("${server.port}")
Integer port;
@Override
public void run(ApplicationArguments args) {
if (registration != null && port != null) {
//如果getTomcatPort()端口获取异常,就采用配置文件中配置的端口
Integer tomcatPort = port;
try {
tomcatPort = new Integer(getTomcatPort());
} catch (Exception e) {
e.printStackTrace();
}
registration.setPort(tomcatPort);
registration.start();
}
}
/**
* 获取外置tomcat端口
*/
public String getTomcatPort() throws Exception {
MBeanServer beanServer = ManagementFactory.getPlatformMBeanServer();
Set<ObjectName> objectNames = beanServer.queryNames(new ObjectName("*:type=Connector,*"), Query.match(Query.attr("protocol"), Query.value("HTTP/1.1")));
String port = objectNames.iterator().next().getKeyProperty("port");
return port;
}
}
二、网关模块路由失效
我对gateway网关模块以war包的形式在tongweb中进行部署,部署是成功了,不过启动后,发现它的路由失效,这让我百思不得其解,甚至怀疑自己部署的流程是否错误,最后在springcloud的官方文档中看到了一段话,如下图:
最后我的解决方案是:将gateway网关模块以jar包的形式进行部署,其他的子模块以war包的形式部署。(对于这个解决方案,我也不知道这样对不对,希望有大佬对你进行改正)