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 Mon, 27 Aug 2012 20:27:33 GMT
On 27 August 2012 22:13, Konstantin Kolinko <knst.kolinko@gmail.com> wrote:
> 2012/8/27 Ivan Polak <ivan.polak@f4s.sk>:
>> 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
>>
>
> If you configure this web application with
> <Context resourceOnlyServlets="" />
>
> (Or, alternatively, you can add
> org.apache.catalina.STRICT_SERVLET_COMPLIANCE=true
> to catalina.properties or to CATALINA_OPTS),
>
> does it give you the desired behaviour?
>
> Best regards,
> Konstantin Kolinko
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@tomcat.apache.org
> For additional commands, e-mail: users-help@tomcat.apache.org
>



yes, yes, yes, thank You very, very much, after I add
resourceOnlyServlets="" to context in my context.xml file, everything
is OK.

Thank you very, very much!

Ivan

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


Mime
View raw message