При использовании страницы ошибок Facelets 404 Websphere создает исключение FileNotFoundException вместо отправки на страницу ошибок 404

Я пытаюсь определить страницу Facelets как пользовательскую страницу ошибки 404 в моем файле web.xml следующим образом:

<?xml version="1.0" encoding="UTF-8"?>

<web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
         version="3.0">
...
 <welcome-file-list>
        <welcome-file>/index.xhtml</welcome-file>
    </welcome-file-list>
<error-page>
      <error-code>404</error-code>
      <location>/pageNotFound.xhtml</location>
</error-page>
<servlet>
    <servlet-name>Faces Servlet</servlet-name>
    <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
    <servlet-name>Faces Servlet</servlet-name>
    <url-pattern>*.xhtml</url-pattern>
</servlet-mapping>
...
</web-app>

Server.xml

<?xml version="1.0" encoding="UTF-8"?>
<server description="new server">

    <!-- Enable features -->

<featureManager>
        <feature>jsp-2.2</feature> 
            <feature>ejbLite-3.1</feature> 
                <feature>jpa-2.0</feature> 
                <feature>jsf-2.0</feature> 
                <feature>cdi-1.0</feature> 
                <feature>localConnector-1.0</feature> 
                <feature>jaxws-2.2</feature> 
                <feature>jaxrs-1.1</feature> 
        </featureManager> 


    <httpEndpoint host="*" httpPort="9080" httpsPort="9443" id="defaultHttpEndpoint"/> 

<applicationMonitor updateTrigger="mbean"/> 
    ...

</server>

Теперь, если я развернусь в профиле Websphere liberty 8.5.5.4 и зайду, например, в [app_root]/abc, я не увижу свою страницу ошибок. Вместо этого я вижу страницу ошибки сервера по умолчанию:

Error Message: java.io.FileNotFoundException: SRVE0190E: File not found: /abc
Error Code: 404
Target Servlet: com.ibm.ws.webcontainer.extension.DefaultExtensionProcessor
Error Stack: 
java.io.FileNotFoundException: SRVE0190E: File not found: /abc 
     at com.ibm.ws.webcontainer.extension.DefaultExtensionProcessor.handleRequest(DefaultExtensionProcessor.java:528) 
     at com.ibm.ws.webcontainer.filter.WebAppFilterManager.invokeFilters(WebAppFilterManager.java:1101) 
     at com.ibm.ws.webcontainer.webapp.WebApp.handleRequest(WebApp.java:4797) 
     at com.ibm.ws.webcontainer.osgi.DynamicVirtualHost$2.handleRequest(DynamicVirtualHost.java:297) 
     at com.ibm.ws.webcontainer.WebContainer.handleRequest(WebContainer.java:981) 
     at com.ibm.ws.webcontainer.osgi.DynamicVirtualHost$2.run(DynamicVirtualHost.java:262) 
     at com.ibm.ws.http.dispatcher.internal.channel.HttpDispatcherLink$TaskWrapper.run(HttpDispatcherLink.java:938) 
     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) 
     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) 
     at java.lang.Thread.run(Thread.java:745) 

Это работало в моем предыдущем проекте, где мы использовали сервер WildFly 8.2.0.final. Когда я пробую это с JSP вместо страницы Facelets, тогда это работает.

Можно ли использовать страницу Facelets в качестве пользовательской страницы ошибок в профиле свободы Websphere 8.5.5.4? Нужно ли больше конфигурации на Websphere? Или я просто что-то здесь упускаю?

0 ответов

Другие вопросы по тегам