私は JSF ( JavaSever Faces - Introduction by Example ) に関する本の 1 つを調べていて、次の抜粋を見つけました。
JSF 2.0 より前は、JSF サーブレットが XHTML ページを変換できるようにするために、javax.faces.webapp.FacesServlet クラスとそれに関連付けられたサーブレット マッピング URL を示すサーブレット要素が web.xml ファイルに含まれていることを確認する必要がありました。JSF 2.0 のリリース以降、Servlet 3.x コンテナーを使用する場合、FacesServlet は自動的にマップされるため、web.xml 構成を調整する必要はありません。
試してみることにしましたが、動作せず、404 エラーが発生しました。
web.xml
<!-- Commenting this out in Glassfish server based on the book's guidelines -->
<!--
<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>/faces/*</url-pattern>
</servlet-mapping>
-->
<session-config>
<session-timeout>30</session-timeout>
</session-config>
<welcome-file-list>
<welcome-file>faces/index.xhtml</welcome-file>
</welcome-file-list>
</web-app>
Glassfish 4.x に移行する前に、私は既に Tomcat 8 でこれを動作させていました。奇妙な部分はFacesServlet、展開記述子のマッピングのコメントを外すとすぐに、すべてがうまく機能し、404 が表示されないことです。
Glassfish 4.xa サーブレット 3.x コンテナーですか? 私のやり方が間違っているのでしょうか、それとも書籍のガイドラインが間違っているのでしょうか?