Возможно, вам следует разместить код, по которому вы звоните HttpServletRequest.setAttribute()
.
В этот момент может показаться, что ваш грубый и плохо обслуживаемый сервлет удаляет атрибуты между вашими двумя вызовами getAttributeNames()
, но без примеров кода трудно сказать.
UPDATE
Ничто в вашем коде не показалось мне ошибочным ... поэтому я создал чрезвычайно простой тестовый пример внутри handleRequest()
и развернул его (используя jboss-eap-4.3 в качестве моего контейнера). Сначала мне пришлось вручную установить атрибут, так как я понимаю, что атрибуты запроса всегда устанавливаются на стороне сервера (то есть, если я его не устанавливал, я не получал никакого вывода, поскольку Enumeration
, возвращаемый getAttributeNames()
, был пусто).
request.setAttribute("muckingwattrs", "Strange");
Enumeration attrs = request.getAttributeNames();
while(attrs.hasMoreElements()) {
System.out.println(attrs.nextElement());
}
System.out.println("----------------------------");
Enumeration attrs2 = request.getAttributeNames();
while(attrs2.hasMoreElements()) {
System.out.println(attrs2.nextElement());
}
выход
INFO [STDOUT] muckingwattrs
INFO [STDOUT] ----------------------------
INFO [STDOUT] muckingwattrs
Так, возможно, ваш контейнер неправильно реализует getAttributeNames()
? Может быть, попробуйте очень простой тестовый пример, такой как мой, прямо в handleRequest()
или doGet()/doPost()
.