DO NOT REPLY TO THIS EMAIL, BUT PLEASE POST YOUR BUG RELATED COMMENTS THROUGH THE WEB INTERFACE AVAILABLE AT <http://issues.apache.org/bugzilla/show_bug.cgi?id=27514>. ANY REPLY MADE TO THIS MESSAGE WILL NOT BE COLLECTED AND INSERTED IN THE BUG DATABASE.
http://issues.apache.org/bugzilla/show_bug.cgi?id=27514 Environment variables mapped through the JkEnvVar (mod_jk 1.2) are present in the request.getAttribute(xxx) but not in request.getAttributeNames(). Summary: Environment variables mapped through the JkEnvVar (mod_jk 1.2) are present in the request.getAttribute(xxx) but not in request.getAttributeNames(). Product: Tomcat 5 Version: 5.0.19 Platform: All OS/Version: All Status: NEW Severity: Major Priority: Other Component: Connector:Coyote AssignedTo: [EMAIL PROTECTED] ReportedBy: [EMAIL PROTECTED] Environment variables mapped through the JkEnvVar (mod_jk 1.2) are present in the request.getAttribute(xxx) but not in request.getAttributeNames(). As it turns out in jakarta-tomcat-catalina/catalina/src/share/org/apache/coyote/tomcat5/CoyoteRequest.java getAttribute method is properly implemented but in the getAttributeNames the attributes comming from the coyoteRequest are not taken into consideration (the same might happen in Tomcat 4 too, didn't tested) I made a patch to correct the behavior, however not being very familiar with the tomcat sources the patch corrects the above described behavior but might not be in line with your way of doing things so feel free to adjust on it. Best regards, Remus --- CoyoteRequest.java 2004-02-14 12:26:50.000000000 +0200 +++ CoyoteRequest.java 2004-03-08 14:17:13.661831128 +0200 @@ -163,6 +163,7 @@ */ public void setCoyoteRequest(Request coyoteRequest) { this.coyoteRequest = coyoteRequest; + if(coyoteRequest.getAttributes().size() == 0) copyOriginalAttributes = false; inputBuffer.setRequest(coyoteRequest); } @@ -403,6 +404,14 @@ */ protected Log log=null; + + /** + * We can have attributes comming from JK (JkEnvVar) so before serving them + * trough getAttributeNames we have to be sure that the local attributes + * contains the ones from the coyoteRequest. + */ + protected boolean copyOriginalAttributes = true; + // --------------------------------------------------------- Public Methods /** @@ -436,6 +445,7 @@ localName = null; attributes.clear(); + copyOriginalAttributes = true; notes.clear(); cookies = null; @@ -990,6 +1000,7 @@ if (isSecure()) { getAttribute(Globals.CERTIFICATES_ATTR); } + if( copyOriginalAttributes) attributes.putAll(coyoteRequest.getAttributes()); return new Enumerator(attributes.keySet(), true); } --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]