Spring Boot 3.4.1, Java 21 < /p>
Я записал фильтр, который делает не более, чем проверить размер запроса на настраиваемый максимум и вернуть 413, если запрос слишком большой . < /p>
@Component
@Order(Ordered.HIGHEST_PRECEDENCE)
@Slf4j
public class RequestSizeFilter implements Filter {
@Value("${fam.max_request_size:10485760}")
private int maxContentBytes;
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException {
try {
if (request.getContentLength() > maxContentBytes) {
throw new RuntimeException();
} else {
chain.doFilter(request, response);
}
} catch (Exception e) {
log.error("Detected overlarge request of %s bytes. Rejecting.".formatted(request.getContentLength()));
HttpServletResponse httpResponse = (HttpServletResponse) response;
httpResponse.setStatus(HttpServletResponse.SC_REQUEST_ENTITY_TOO_LARGE);
httpResponse.getWriter().println("Request exceeds maximum size of %s bytes".formatted(maxContentBytes));
}
}
}
< /code>
Когда я запускаю свои автоматизированные тесты по конечной точке. Похоже, что проблема заключается в том, что после этого отклонения любой другой тест, который пытается попасть в эту конечную точку, не удается с < /p>
org.springframework.web.reactive.function.client.WebClientRequestException: Connection refused: localhost/[0:0:0:0:0:0:0:1]:8080
at app//org.springframework.web.reactive.function.client.ExchangeFunctions$DefaultExchangeFunction.lambda$wrapException$9(ExchangeFunctions.java:137)
Caused by:
io.netty.channel.AbstractChannel$AnnotatedConnectException: Connection refused: localhost/[0:0:0:0:0:0:0:1]:8080
Caused by:
java.net.ConnectException: Connection refused
at java.base/sun.nio.ch.Net.pollConnect(Native Method)
at java.base/sun.nio.ch.Net.pollConnectNow(Net.java:682)
at java.base/sun.nio.ch.SocketChannelImpl.finishConnect(SocketChannelImpl.java:973)
at io.netty.channel.socket.nio.NioSocketChannel.doFinishConnect(NioSocketChannel.java:336)
at io.netty.channel.nio.AbstractNioChannel$AbstractNioUnsafe.finishConnect(AbstractNioChannel.java:339)
at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:776)
at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:724)
at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:650)
at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:562)
at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:997)
at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)
at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
at java.base/java.lang.Thread.run(Thread.java:1583)
< /code>
Это полные тесты интеграции, поэтому контекст, в котором работает приложение, такой же, как и в производстве. Клиент, который мы используем для достижения этих конечных точек, является пользовательским расширением встроенного класса Spring WebTestClient с базовым URL-адресом и заголовка авторизации по умолчанию для всех запросов. < /P>
Интересный интересный Дело в том, что если я отключаю тест, который запускает этот фильтр, все мои другие тесты пройдут. Кроме того, поскольку упорядочение тестирования не гарантируется, я знаю, что тот же тест, который пройдет перед тестом, который запускает этот фильтр, не удастся, если он работает после. Фильтр должен покинуть сервер в каком -то нестабильном состоянии, но я не могу определить, как и почему. Есть ли мне звонок, чтобы сбросить услугу в состояние, где он готов снова принять входящие соединения?
Подробнее здесь: https://stackoverflow.com/questions/793 ... ng-connect
После сбоя фильтра все дальнейшие запросы на эту конечную точку возвращают «соединение отказано» ⇐ JAVA
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Как правильно подготовить объект JSON для отправки в конечную конечную точку? [закрыто]
Anonymous » » в форуме Php - 0 Ответы
- 64 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Как сохранить токен и сделать дальнейшие запросы при использовании AFXAuthClient?
Anonymous » » в форуме IOS - 0 Ответы
- 8 Просмотры
-
Последнее сообщение Anonymous
-