Я пробовал использовать @ClientExceptionMapper, но для этого исключения это не сработало. Насколько я понимаю, этот ClientExceptionMapper обрабатывает RuntimeExceptions, а исключение, с которым я сталкиваюсь, - это ProcessException, как видно в выводе отладчика:
Код: Выделить всё
2024-04-19 11:49:21,649 ERROR [io.qua.run.Application] (Quarkus Main Thread) Failed to start application (with profile [dev]): jakarta.ws.rs.ProcessingException: io.netty.channel.AbstractChannel$AnnotatedConnectException: Connection refused: no further information: localhost/127.0.0.1:8081Итак, вместо: testClient.makePost(someDataClass);
он становится: ClientUtilities.handleConnectionRefused(() -> testClient.makePost(someDataClass));
Где ClientUtilities определяется следующим образом:
Код: Выделить всё
package org.acme.rest.client;
import java.net.ConnectException;
import java.util.function.Supplier;
import jakarta.ws.rs.ProcessingException;
import jakarta.ws.rs.core.Response;
public class ClientUtilities {
public static Response handleConnectionRefused(Supplier restClientCall) {
Response response = null;
try {
response = restClientCall.get();
} catch (ProcessingException e) {
if (e.getCause() instanceof ConnectException) {
// Handle connection refused error
System.out.println("Connection refused: " + e.getMessage());
return Response.status(Response.Status.NOT_FOUND).build();
} else {
// Handle other errors
throw e;
}
} finally {
if (response != null) {
response.close();
}
}
return Response.status(Response.Status.OK).build();
}
}
Предупреждение — утечка ресурсов: '' никогда не закрывается заданный в этой строке ClientUtilities.handleConnectionRefused(() -> testClient.makePost(someDataClass));. В частности, часть testClient.makePost(someDataClass)
Поскольку я все еще новичок в Java (студент компьютерных наук) и хочу изучать и исследовать концепции программирования, вероятность того, что я допустил ошибку, высока. Я пытался провести небольшое исследование на эту тему, но не стал мудрее.
Я загрузил на Github пример проекта, который демонстрирует эту проблему.Я хочу знать, почему возникает это предупреждение и, если возможно, как правильно реализовать мое решение, чтобы оно не выдавало предупреждение и, таким образом, становилось менее подверженным утечке ресурсов.
Подробнее здесь: https://stackoverflow.com/questions/783 ... ng-quarkus