[seam-issues] [JBoss JIRA] (JBSEAM-4146) "no file extension in servlet path" exception whenever a servlet throws an exception

Tiago Peruzzo (Commented) (JIRA) jira-events at lists.jboss.org
Thu Nov 3 09:49:45 EDT 2011


    [ https://issues.jboss.org/browse/JBSEAM-4146?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12639698#comment-12639698 ] 

Tiago Peruzzo commented on JBSEAM-4146:
---------------------------------------

I had a problem very similar to this, only in my case gave an exception "Caused by: java.lang.StringIndexOutOfBoundsException: String index out of range: -1" ... because I have configured in pages.xml to give an error when redirect to same page, but the class RedirectHandler trying to resolve the viewId by servletPath not only takes into account the rewritten URL and gave this exception because it took a value type "/manager" and tried to find a point and put the suffix default page.

<exception log="true" log-level="debug" class="java.lang.Exception">
	<redirect>
            <message severity="error">#{org.jboss.seam.handledException.message}</message>
        </redirect>
</exception>


I did an analysis on the code of Seam and found that when an exception occurred in the fall and he does not know ExceptionFilter resolve because the rewritten URL is executed after the RewriteFilter ExceptionFilter, but RewriteFilter should be run after it because he is in charge of making forward to the page so it will always be the last.


I solved my problem by changing the web.xml, causing Seam Filter was also performed for the dispatcher FORWARD making my  ExceptionFilter second came after the first RewriteFilter, so ExceptionFilter can solve my current URL and redirect to the correct rewrite.


<filter-mapping>
	<filter-name>Seam Filter</filter-name>
	<url-pattern>/*</url-pattern>
 	<dispatcher>REQUEST</dispatcher>
	<dispatcher>FORWARD</dispatcher>		
</filter-mapping>


I found one Issue (https://jira.jboss.org/jira/browse/JBSEAM-3883) like it was given as a suggestion of the problem by putting a move on ExceptionFilter RewritingResponse to learn to solve rewritten url, except that in this case he know not redirect correctly and get the URL correctly through servletPath.

Sorry for my English is not very good.






                
> "no file extension in servlet path" exception whenever a servlet throws an exception
> ------------------------------------------------------------------------------------
>
>                 Key: JBSEAM-4146
>                 URL: https://issues.jboss.org/browse/JBSEAM-4146
>             Project: Seam 2
>          Issue Type: Bug
>          Components: Core
>    Affects Versions: 2.1.1.GA
>         Environment: Java 6, Tomcat 6
>            Reporter: Matthew Lieder
>            Assignee: Marek Novotny
>              Labels: testcase
>             Fix For: 2.3.0.BETA1
>
>         Attachments: SeamTestcase1.zip
>
>
> Pretty easy to reproduce: call a servlet from a Seam webapp that throws an exception, which will result in a Tomcat HTTP 500 error page that ,instead of displaying the servlet's exception, displays a "no file extension in servlet path" exception.
> See the attached testcase.
> I have yet to find a good workaround; only way seems to be to hack Seam's codebase myself. The problem definitely seems to be in org.jboss.seam.mock.MockViewHandler.getActionURL(...), as indicated by JBSEAM-2921.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.jboss.org/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

        


More information about the seam-issues mailing list