Java 在tomcat服务器内为grpc托管多个netty服务器,应用程序重新部署问题

Java 在tomcat服务器内为grpc托管多个netty服务器,应用程序重新部署问题,java,spring,tomcat,netty,grpc,Java,Spring,Tomcat,Netty,Grpc,我正在开发一个微服务应用程序,并将它们部署在单个tomcat服务器中。所以我不使用弹簧靴。我只用弹簧 假设我们有应用程序调用主数据和公共服务,当我在tomcat中部署它们时,我可以通过端口8080访问它们。 但我想让他们转移到grpc通信端点。然后我必须为每个模块安装grpc库和netty。现在我可以在端口6565和7575中访问他们的grpc端点 我使用Springbean@PostConstruct注释,并分别在不同的端口(6565和7575)中运行grpc服务器。现在它工作得很好 但是,当

我正在开发一个微服务应用程序,并将它们部署在单个tomcat服务器中。所以我不使用弹簧靴。我只用弹簧

假设我们有应用程序调用
主数据
公共服务
,当我在tomcat中部署它们时,我可以通过端口
8080
访问它们。 但我想让他们转移到grpc通信端点。然后我必须为每个模块安装grpc库和netty。现在我可以在端口
6565
7575
中访问他们的grpc端点

我使用Springbean
@PostConstruct
注释,并分别在不同的端口
(6565和7575)
中运行grpc服务器。现在它工作得很好

但是,当我向
主数据添加新的更改,并在tomcat中重新部署它而不关闭tomcat时,它将为我提供
java.net.BindException:已在使用的地址
当我在终端中运行
ps-ef | grep netty
时,我可以看到仍有进程在运行

似乎grpc服务器没有正确关闭,因为tomcat没有关闭


有人能给我一个合适的解决方案吗?

gRPC Java服务器需要通过调用其方法来关闭。关于将gRPC Java与Tomcat/Spring集成,我没有太多(任何)知识,但gRPC端没有内置集成,因此您需要确保gRPC服务器以某种方式接收编程的
shutdown()
信号

包含用于使用GRPCJava的其他实用程序,包括Spring。特别是,它听起来可能有助于在Spring环境中管理服务器的生命周期