Это связано с тем, что любые атрибуты, установленные с помощью mod_jk, доступны с getAttribute()
, но не с помощью getAttributeNames()
. Согласно документации
Вы можете получить переменные в Tomcat как атрибуты запроса через
request.getAttribute (имя_атрибут). Обратите внимание, что переменные отправляются через
JkEnvVar не будет указан в request.getAttributeNames ().
Я отлаживал все RequestWrappers (согласно предложению BalusC), а базовый запрос имеет внутреннюю карту атрибутов, которые используются для getAttributeNames()
. Однако у getAttribute()
есть провал к другому объекту, когда значение внутренней карты равно нулю. Из Javadoc и документации, это работает как задумано.
Это поведение ранее сообщалось как ошибка , но исправление не проходит тест TCK:
Я рассмотрел только включение всех внутренних атрибутов Tomcat в ответ
из getAttributeNames (), но это вызывает проблемы с сервлетом 2.5 TCK
тесты, которые ожидают, что getAttributeNames () возвращает только те атрибуты, которые
были установлены через setAttribute ().
Короче говоря, getAttributeNames()
вернет атрибуты, установленные с помощью setAttribute()
, тогда как getAttribute()
может вернуть атрибуты, установленные с помощью различных других (внутренних) средств.