Недопустимое исключение Java (объект запроса был переработан), запускаемое в асинхронном процессеJAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Недопустимое исключение Java (объект запроса был переработан), запускаемое в асинхронном процессе

Сообщение Anonymous »

В моей кодовой базе есть центральное событие, которое внезапно регистрирует ошибки. Все они одинаковы, за исключением класса, показанного в качестве аргумента метода run().

Код: Выделить всё

2024-11-06 22:32:12,435 AuditService ERROR accounts.service.audit.AuditService run(ProfileChangeRequestDenied): java.lang.IllegalStateException: The request object has been recycled and is no longer associated with this facade
Этот код не менялся в течение нескольких лет, но эти ошибки выдает только сейчас после нашего недавнего обновления до Tomcat 9. Согласно моим исследованиям, Tomcat 9 изменил настройки по умолчанию для org. .apache.catalina.connector.RECYCLE_FACADES с false на true. Я понимаю проблему: наш код пытается получить доступ к запросу, которого больше не существует. Но этот базовый класс используется повсюду, а записи в журнале только начали появляться. В идеале я мог бы внедрить исправление, чтобы дать нам время поработать над более масштабным исправлением.
Вот дистиллированная версия класса ServiceAccount, которая, похоже, и есть то, что есть вызывая ошибку. С помощью пошаговой отладки я отследил его до вызова servletRequest.getHeader в методе getUserAgent, после чего появляется запись журнала.

Код: Выделить всё

import javax.servlet.http.HttpServletRequest;

public abstract class ServiceEvent {
private final HttpServletRequest servletRequest;

public ServiceEvent(HttpServletRequest servletRequest) {
this.servletRequest = servletRequest;
}

public String getUserAgent() {
String userAgent = null;
if (null != servletRequest) {
userAgent = servletRequest.getHeader(USER_AGENT);
}
return (userAgent == null) ? UNKNOWN : userAgent;
}

public abstract String getDetails();
}
У нас есть сценарий, который устанавливает переменные среды для Tomcat, и я попытался установить следующую строку, но это не дало никакого эффекта.

Код: Выделить всё

CATALINA_OPTS="-D-Dorg.apache.catalina.connector.RECYCLE_FACADES=true ${CATALINA_OPTS}"
Итак, мои вопросы:

[*]Правильна ли моя гипотеза, и обновление значения RECYCLE_FACADES должно изменить это поведение?
[*]Правильно ли я выполняю настройку?
[*]Есть ли что-то еще, что я упускаю?

Обратите внимание: хотя я уже довольно давно работаю инженером-программистом, Я использую Java всего около года.

Подробнее здесь: https://stackoverflow.com/questions/791 ... ered-in-as
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «JAVA»