java.io.FileNotFoundException: не найдено во ExternalContext как ресурс

Я пытаюсь создать очень простое веб-приложение, в котором файл шаблона xhtml помещается в банку, помещенную в папку WEB-INF/lib. Структура этой баночки следующая:

META-INF/
  faces-config.xml
  resources
    template.xhtml

Содержание моего index.xhtml выглядит следующим образом

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:h="http://xmlns.jcp.org/jsf/html"
      xmlns:ui="http://xmlns.jcp.org/jsf/facelets"
      xmlns:f="http://xmlns.jcp.org/jsf/core">


<ui:composition template="/template.xhtml">
    <ui:define name="content">
        <h1>Hello World</h1>
    </ui:define>
</ui:composition>
</html>

И, наконец, мой web.xml

<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
         http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
         version="3.1">
    <context-param>
        <description>For Apache MyFaces: need to refresh transient build or an IllegalStateException may occur in visitTree.</description>
        <param-name>org.apache.myfaces.REFRESH_TRANSIENT_BUILD_ON_PSS_PRESERVE_STATE</param-name>
        <param-value>true</param-value>
    </context-param>

    <servlet>
        <servlet-name>FacesServlet</servlet-name>
        <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet>

    <servlet-mapping>
        <servlet-name>FacesServlet</servlet-name>
        <url-pattern>*.xhtml</url-pattern>
    </servlet-mapping>

    <session-config>
        <session-timeout>30</session-timeout>
    </session-config>

    <welcome-file-list>
        <welcome-file>index.xhtml</welcome-file>
    </welcome-file-list>

</web-app>

Я использую сервер TomEE 7.0.2, который использует реализацию MyFaces 2.2.11. Тем не менее, я получаю java.io.FileNotFoundException:

java.io.FileNotFoundException: /template.xhtml Not Found in ExternalContext as a Resource
    at org.apache.myfaces.view.facelets.impl.DefaultFaceletFactory.resolveURL(DefaultFaceletFactory.java:308)
    at org.apache.myfaces.view.facelets.impl.DefaultFacelet.getRelativePath(DefaultFacelet.java:470)
    at org.apache.myfaces.view.facelets.impl.DefaultFacelet.include(DefaultFacelet.java:552)
    at org.apache.myfaces.view.facelets.impl.DefaultFaceletContext.includeFacelet(DefaultFaceletContext.java:240)
    at org.apache.myfaces.view.facelets.tag.ui.CompositionHandler.apply(CompositionHandler.java:151)
    at org.apache.myfaces.view.facelets.compiler.NamespaceHandler.apply(NamespaceHandler.java:59)
    at org.apache.myfaces.view.facelets.compiler.EncodingHandler.apply(EncodingHandler.java:48)
    at org.apache.myfaces.view.facelets.impl.DefaultFacelet.apply(DefaultFacelet.java:189)
    at org.apache.myfaces.view.facelets.FaceletViewDeclarationLanguage.buildView(FaceletViewDeclarationLanguage.java:477)
    at org.apache.myfaces.lifecycle.RenderResponseExecutor.execute(RenderResponseExecutor.java:78)
    at org.apache.myfaces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:267)
    at javax.faces.webapp.FacesServlet.service(FacesServlet.java:200)

Что мне не хватает?


person jessepeng    schedule 25.11.2016    source источник
comment
Прочитайте это: stackoverflow.com/questions/7376115/ ???   -  person Kukeltje    schedule 25.11.2016
comment
@Kukeltje Я не думаю, что это то, что я ищу. Мне нужно поместить шаблон в другую банку, а не в другую папку в основной войне.   -  person jessepeng    schedule 25.11.2016
comment
Извините, пропустил эту часть. Вы уверены, что другая банка находится на пути к классам?   -  person Kukeltje    schedule 25.11.2016
comment
Да, я уверен. Объявление, например, управляемого компонента в зависимом банке и попытка доступа к нему из index.xhtml работает отлично.   -  person jessepeng    schedule 25.11.2016