Исключение нулевого указателя генерируется, когда приложение пытается использовать null в случае, когда требуется объект. К ним относятся:
null
. null
. null
, как если бы это был массив. null
, как если бы это был массив. null
как будто это было значение Throwable. Приложения должны бросать экземпляры этого класса, чтобы указать на другие незаконные использования объекта null
.
Ссылка: http://docs.oracle.com/javase/8/docs/api/java/lang/NullPointerException.html
Вы можете сделать это, сначала создав ClientConfig и предоставив его в качестве аргумента при создании нового клиента.
import org.glassfish.jersey.client.ClientProperties;
ClientConfig configuration = new ClientConfig();
configuration.property(ClientProperties.CONNECT_TIMEOUT, 1000);
configuration.property(ClientProperties.READ_TIMEOUT, 1000);
Client client = ClientBuilder.newClient(configuration);
С помощью Resteasy это может быть достигнуто путем создания вашего Клиента как такового.
Client client = new ResteasyClientBuilder()
.establishConnectionTimeout(2, TimeUnit.SECONDS)
.socketTimeout(2, TimeUnit.SECONDS)
.build();
Я не видел список стандартных свойств конфигурации, которые вы могли бы установить через ClientBuilder.newClient(Configuration configuration)
, которые необходимы, чтобы сделать это портативный.
Во-первых, вы должны добавить соответствующие зависимости (здесь для WildFly 10.1):
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>4.5</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-client</artifactId>
<version>3.0.14.Final</version>
<scope>provided</scope>
</dependency>
Далее - создать нормальный Apache HttpClient и нажать на него RestEasy Enginge с переопределением одного метода, который вызывает проблема:
// create here a normal Apache HttpClient with all parameters, that you need
HttpClient httpClient = createHttpClient(connectTimeout,
socketTimeout,
connectionRequestTimeout,
maxTotalHTTPConnections);
// Deprecated Apache classes cleanup https://issues.jboss.org/browse/RESTEASY-1357
// Client Framework not honoring connection timeouts Apache Client 4.3 https://issues.jboss.org/browse/RESTEASY-975
ApacheHttpClient4Engine engine = new ApacheHttpClient4Engine(httpClient) {
@Override
protected void loadHttpMethod(ClientInvocation request, HttpRequestBase httpMethod) throws Exception {
super.loadHttpMethod(request, httpMethod);
httpMethod.setParams(new BasicHttpParams());
}
};
return new ResteasyClientBuilder().httpEngine(engine).build();
Взгляните на https://issues.jboss.org/browse/RESTEASY-975 Кажется, проблема была решена только в версии 3.1.0.Final.
Примечание: это новый метод, доступный на JAX-RS 2.1
Это очень старшая запись, но приведенный ниже код будет работать как для трикотажа, так и для отдыха
ClientBuilder clientBuilder=null;
clientBuilder=clientBuilder.newBuilder();
clientBuilder.connectTimeout(10,TimeUnit.SECONDS);
clientBuilder.readTimeout(12, TimeUnit.SECONDS);