tomcat-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Ivan Polak <ivan.po...@f4s.sk>
Subject Re: problem with filters on Tomcat 7.0.16 and above
Date Sun, 26 Aug 2012 23:00:29 GMT
On 26 August 2012 23:05, Konstantin Kolinko <knst.kolinko@gmail.com> wrote:
> 2012/8/27 Ivan Polak <ivan.polak@f4s.sk>:
>> I have found, where is the problem.
>>
>> problem is in StandardContextValve.java in
>>
>> @Override
>>     public final void invoke(Request request, Response response)
>>         throws IOException, ServletException {
>>
>> ....
>>
>> // Select the Wrapper to be used for this Request
>>         Wrapper wrapper = request.getWrapper();
>>         if (wrapper == null || wrapper.isUnavailable()) {
>>             response.sendError(HttpServletResponse.SC_NOT_FOUND);
>>             return;
>>         }
>> .....
>>
>> if request is : http://localhost:8080/app/index.html (direct link to
>> Spring MVC controller), object wrapper is not null,
>>
>> and if request is : http://localhost:8080/app/invitations/ (served by
>> UrlRewrite filter), object wrapper is NULL!
>>
>> in CoyoteAdapter.java on line 649:
>>
>> request.setWrapper((Wrapper) request.getMappingData().wrapper);
>>
>> is set NULL.
>>
>
> Can you stop top-posting?
> http://en.wikipedia.org/wiki/Posting_style#Choosing_the_proper_posting_style
>
> What is your list of welcome files?
>
> How a wrapper can be null?
> 1) For a directory path like yours,
> the welcome files come into play and the servlet that serves them is
> selected as the wrapper.
> 2) There is always DefaultServlet (servlet mapped to "/") that is
> selected when nothing else matches the request.
>
> When your breakpoint is on "if (wrapper == null ||
> wrapper.isUnavailable()) {" line,
> what is the value of the local variable "requestPathMB" ?
>
>
>> request.setWrapper((Wrapper) request.getMappingData().wrapper);
>
> Mapping is performed in
> org.apache.tomcat.util.http.mapper.Mapper#map(..) (there are two
> public map() methods)
>
> Best regards,
> Konstantin Kolinko
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@tomcat.apache.org
> For additional commands, e-mail: users-help@tomcat.apache.org
>


Hi,

1.
local variable requestPathMB = null (in Tomcat 7.0.14 requestPathMB =
"/invitations")

2. <welcome-file-list>
		<welcome-file>index.jsp</welcome-file>
	</welcome-file-list>

3.
As I wrote on the last mail, the problem is in
StandardContextValve.java in method:

public final void invoke(Request request, Response response)
        throws IOException, ServletException {

...
Wrapper wrapper = request.getWrapper();
...

in Mapper class on line 988

// Rule 7 -- Default servlet
        if (mappingData.wrapper == null && !checkJspWelcomeFiles) {
            if (contextVersion.defaultWrapper != null) {

contextVersion.defaultWrapper is NULL.

in Tomcat 7.0.14 (where everything is OK) is not null.

in Mapper.java, on line 708, method:

private final void internalMap(CharChunk host, CharChunk uri,
            String version, MappingData mappingData) throws Exception {

on line 725: contexts = hosts[pos].contextList.contexts;

there are 2 contexts:

1. [0]:name="", versions.MapperContextVersion.defaultWrapper not null
2. [1]:name="app", versions.MapperContextVersion.defaultWrapper is null

[in Tomcat 7.0.14, there are 2 contexts, too, but all have
defaultWrapper not null]

variable pos=1, context = contexts[pos];

selected context has defaultWrapper null, variable
contextVersion.defaultWrapper is null.

Ivan

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@tomcat.apache.org
For additional commands, e-mail: users-help@tomcat.apache.org


Mime
View raw message