Não consigo acessar o java.util.HashMap $ Entry com modificadores “public final”

Meu problema é que meu aplicativo funciona bem executado localmente no servidor Tomcat, mas gera erros no servidor com glassfish instalado. Todo o problema é que eu estou olhando iterativo através de HashMap no JSTL. Servidor lança uma pilha como abaixo:

Servlet.service() for servlet jsp threw exception java.lang.IllegalAccessException: Class javax.el.BeanELResolver can not access a member of class java.util.HashMap$Entry with modifiers "public final" at sun.reflect.Reflection.ensureMemberAccess(Reflection.java:95) at java.lang.reflect.AccessibleObject.slowCheckMemberAccess(AccessibleObject.java:261) at java.lang.reflect.AccessibleObject.checkAccess(AccessibleObject.java:253) 

problema é causado por código:

  documents["${i.index}"]["param"]=new Array(); documents["${i.index}"]["param"]["key"] = "${parametr.getKey()}"; documents["${i.index}"]["param"]["value"] = "${parametr.getValue()}";  

Onde element.getPreparedParameters() retorna HashMap .

Como posso fazer isso funcionar?

Confira este bug de décadas relatado à Sun contra o Java 1.2. Lembro-me de ver esse erro antes e a mensagem é enganosa: o problema não está nos modificadores de método, mas nos modificadores da class proprietária. Ou seja, Map.Entry é uma interface pública, mas a class de implementação no HashMap é privada. O Reflection não permite que você acesse os methods da class, embora esteja acessando methods que implementam uma interface pública.

Eu sugiro ir para uma solução alternativa: não iterar sobre o entrySet , mas sobre o keySet e use map.get(key) vez de entry.getValue() .