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

Jersey 2.25中Client.property()返回null问题求助

解决Jersey 2.25中Client设置超时返回null的问题

这个问题的核心是你搞混了ClientBuilder和Client两个类中property()方法的返回值设计:

  • ClientBuilder的property()方法是链式调用设计,调用后会返回ClientBuilder实例本身,支持连续调用;
  • 而Client接口中的property()方法是void返回类型,它没有返回值,所以你把这个方法的结果赋值给client变量时,自然会得到null。

正确的解决方式

最稳妥的做法是在构建Client实例之前,通过ClientBuilder来设置这些超时属性,这样属性会被正确应用到后续创建的Client中:

ClientBuilder builder = ClientBuilder.newBuilder();
builder.sslContext(createSSLContext())
       // 在Builder阶段设置超时属性,支持链式调用
       .property("jersey.config.client.connectTimeout", 100)
       .property("jersey.config.client.readTimeout", 100);
Client client = builder.build();

如果你确实需要在Client实例创建后设置属性(不推荐,因为部分属性在实例化后修改可能不生效),那么不要对client变量进行重新赋值,直接调用方法即可:

ClientBuilder builder = ClientBuilder.newBuilder();
builder.sslContext(createSSLContext());
Client client = builder.build();
// 直接调用property方法,不要赋值
client.property("jersey.config.client.connectTimeout", 100);
client.property("jersey.config.client.readTimeout", 100);

额外提示

建议优先使用ClientBuilder阶段设置属性,因为Jersey的Client实例在构建完成后,部分配置是不可变的,后续修改可能不会生效。另外,你也可以使用更类型安全的配置方式,比如ClientProperties类中的常量来替代硬编码的字符串:

import org.glassfish.jersey.client.ClientProperties;

// ...

builder.property(ClientProperties.CONNECT_TIMEOUT, 100)
       .property(ClientProperties.READ_TIMEOUT, 100);

这样可以避免拼写错误,代码可读性也更好。

内容的提问来源于stack exchange,提问作者Rafael Dias da Silva

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 08:31:33