We're having great difficulty figuring out why a Struts (1.2) application that runs fine on Tomcat (5.5) fails with an Error 400 -Bad Request on Sun Web Server (6.1SP8).
How do we capture debugging information for this kind of error? We set loglevel to "finest," and while that was interesting, it didn't spew any error messages of value.
The Struts application does do one slightly unusual thing. It is configured so that normal looking URLs, without a query string, can be used. So, /content/do/display/news/index.html works (in Tomcat!) just like /content/display.do?file=/news/index.html
But in Sun One, we get a bad request before our Struts Action is even called, which suggests that something in the Web server config is barfing. But how can we find that? With loglevel at "finest" we get log output like what's listed below, but I'm lost as to what to make of that.
Also, the Struts Action that recieves a 'pretty' URL, transforms it (pulls the query info from the URL) and forwards to a jsp that does an jsp:include, like this:
<%@ page session="false" %>
<jsp:include page="displayTransform.do" />
But again, the server is returning the Bad Request error before it gets to this point.
Any suggestions?
Dave
Log file output:
[05/Nov/2007:09:27:29] fine (15767): for host 128.101.76.196 trying to GET /content/do/display/briefing
/bart/060707_10_mto.html, ntrans-j2ee reports: mapped uri "/do/display/briefing/bart/060707_10_mto.html
" in context "/content" to resource "action"
[05/Nov/2007:09:27:29] fine (15767): for host 128.101.76.196 trying to GET /content/do/display/briefing
/bart/060707_10_mto.html, service-j2ee reports: context = StandardEngine[null].StandardHost[https-test.
cidrapsource.com].StandardContext[/content]
[05/Nov/2007:09:27:29] fine (15767): for host 128.101.76.196 trying to GET /content/do/display/briefing
/bart/060707_10_mto.html, service-j2ee reports: contextPath = /content
[05/Nov/2007:09:27:29] fine (15767): for host 128.101.76.196 trying to GET /content/do/display/briefing
/bart/060707_10_mto.html, service-j2ee reports: wrapper = StandardEngine[null].StandardHost[https-test.
cidrapsource.com].StandardContext[/content].StandardWrapper[action]
[05/Nov/2007:09:27:29] fine (15767): for host 128.101.76.196 trying to GET /content/do/display/briefing
/bart/060707_10_mto.html, service-j2ee reports: servletPath = /do
[05/Nov/2007:09:27:29] fine (15767): for host 128.101.76.196 trying to GET /content/do/display/briefing
/bart/060707_10_mto.html, service-j2ee reports: pathInfo = /display/briefing/bart/060707_10_mto.html
[05/Nov/2007:09:27:29] finest (15767): for host 128.101.76.196 trying to GET /content/do/display/briefi
ng/bart/060707_10_mto.html, service-j2ee reports: PRINCIPAL : dbender@umn.edu hasRole?: subscribed
[05/Nov/2007:09:27:29] finest (15767): for host 128.101.76.196 trying to GET /content/do/display/briefi
ng/bart/060707_10_mto.html, service-j2ee reports: PRINCIPAL TABLE: {}
[05/Nov/2007:09:27:29] finest (15767): for host 128.101.76.196 trying to GET /content/do/display/briefi
ng/bart/060707_10_mto.html, service-j2ee reports: RoleMapper
[05/Nov/2007:09:27:29] finest (15767): for host 128.101.76.196 trying to GET /content/do/display/briefi
ng/bart/060707_10_mto.html, service-j2ee reports: Principal: dbender@umn.edu directly maps to roles: nu
ll
[05/Nov/2007:09:27:29] finest (15767): for host 128.101.76.196 trying to GET /content/do/display/briefi
ng/bart/060707_10_mto.html, service-j2ee reports: Realm: getInstance returning realm :source
[05/Nov/2007:09:27:29] finest (15767): for host 128.101.76.196 trying to GET /content/do/display/briefi
ng/bart/060707_10_mto.html, service-j2ee reports: Principal [dbender@umn.edu] belongs to a group named
after role [subscribed]
[05/Nov/2007:09:27:29] info (15767): for host 128.101.76.196 trying to GET /content/do/display/briefing
/bart/060707_10_mto.html, service-j2ee reports: SEC1123: Audit: principal=dbender@umn.edu GET /content/
do/display/briefing/bart/060707_10_mto.html session=E28E5E0F1C857C12638A4647739F0EF7 OK