You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

寻求适用于Java的JSON-RPC客户端库替代方案(json-rpc4j不兼容流)

适用于进程间通信的Java JSON-RPC客户端替代库

以下几个库在处理InputStream/OutputStream适配上表现更灵活,能解决你遇到的json-rpc4j流兼容问题,适合进程间通信场景:

1. Jackson JSON-RPC

基于Jackson生态,原生支持流式JSON处理,无需额外封装就能直接在InputStream/OutputStream上读写JSON-RPC请求与响应,流适配逻辑完全复用Jackson成熟的流处理能力,兼容性拉满。

简单使用示例:

import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.module.jsonrpc.JsonRpcClient;

// 绑定进程间通信的流初始化客户端
JsonRpcClient client = new JsonRpcClient(new ObjectMapper());
OutputStream out = ...; // 目标进程的输出流
InputStream in = ...; // 目标进程的输入流

// 直接通过流发送请求并读取响应
String processStatus = client.invoke(in, out, "getProcessStatus", String.class, new Object[]{123});

2. Vert.x JSON-RPC

Vertx的JSON-RPC组件天生为异步、流式场景设计,对InputStream/OutputStream的适配友好度极高,还支持异步回调模式,适合高并发的进程间通信场景。如果是本地IPC,还能直接绑定本地套接字流,跳过网络层提升性能。

简单使用示例:

import io.vertx.core.Vertx;
import io.vertx.jsonrpc.JsonRpcClient;
import io.vertx.ext.web.client.WebClient;

Vertx vertx = Vertx.vertx();
// 基于自定义流创建客户端(可直接绑定IPC流)
JsonRpcClient client = JsonRpcClient.create(vertx, WebClient.create(vertx)
  .postLocal("/ipc-rpc") // 本地IPC路径
  .putHeader("Content-Type", "application/json"));

// 异步调用,底层自动处理流的序列化与反序列化
client.invoke("fetchProcessData", new JsonArray().add(456))
  .onSuccess(result -> System.out.println("返回结果:" + result))
  .onFailure(err -> err.printStackTrace());

3. Simple JSON-RPC

轻量级的JSON-RPC 2.0实现,核心逻辑围绕流设计,提供了直接基于InputStream/OutputStream的API,无多余依赖,代码简洁,适合对体积有要求的IPC场景。

简单使用示例:

import org.simpleframework.json.rpc.Client;
import org.simpleframework.json.rpc.Proxy;

// 直接绑定IPC流创建客户端
Client client = new Client(in, out);
// 生成接口代理,调用方式贴近Java原生RPC习惯
ProcessService service = Proxy.create(ProcessService.class, client);

// 调用方法,底层自动处理流的读写
ProcessStatus status = service.getProcessStatus(789);

内容的提问来源于stack exchange,提问作者Maliha Hossain

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.15 00:17:02