在 Java 中运行基于 gRPC 的 Java 客户端服务器应用程序。我能够为服务器生成 stub ,但是当涉及服务内通信时,我无法为恰好是在 Wildfly 中运行的 war 文件的客户端应用程序生成 stub 。这是概述。
服务器 -> 产品(在容器中运行的 Jar)
客户端 -> 在 Wildfly 上运行的 War 文件
客户端正在公开一个休息端点,该端点依次调用服务器。
我的理解是我应该在1和2之间共享proto文件。以下proto被复制到src/main/proto下的1和2
service ProductService {
rpc findAll(google.protobuf.Empty) returns (Product);
}
message Product {
string id = 1;
string name = 2;
}
问题。我的理解是否正确:在两个独立的应用程序之间共享协议(protocol)文件,然后通过生成的 stub 在两个应用程序之间进行通信。
最佳答案
共享 .proto
就可以了。您还可以将生成的代码放入客户端和服务器共享的库中。您还可以将 .proto
放入客户端和服务器构建进程都使用的共享位置(例如存储库)。
复制原型(prototype)既简单又有效。您只想确保您知道原型(prototype)的“规范”版本是什么;您想知道应该首先更新哪个版本,以便您知道原型(prototype)的最新版本。您不希望客户端维护者和服务器维护者都对原型(prototype)进行更改,然后需要弄清楚如何合并更改。
关于Java docker 与 jar 加载 main,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58689254/