0

プロジェクトの 1 つで OmniFaces ExtensionlessURL FacesViews 機能を使用していますが、Web アプリケーションがスキニー WAR アーカイブとして EAR アーカイブ内にパッケージ化され、Wildfly コンテナーまたは WebSphere Liberty にデプロイされている場合、この機能が機能しないように見えることがわかりました。プロファイル コンテナー。.xhtml サフィックスのないページにアクセスしようとすると、両方のコンテナーで 404 エラーが発生します。

スキニー WAR アーカイブを含む同じ EAR アーカイブを GlassFish コンテナーまたは WebLogic コンテナーにデプロイすると、ExtensionlessURL 機能が期待どおりに機能し、.xhtml サフィックスなしでページにアクセスできます。

通常の WAR アーカイブを含む EAR アーカイブをデプロイすると (つまり、OmniFaces jar は WAR アーカイブの WEB-INF/lib フォルダーに格納されます)、ExtensionlessURL は WildFly コンテナーと WebSphere Liberty Profile コンテナーで期待どおりに機能します。 GlassFish および WebLogic コンテナー。

私が使用している WildFly のバージョンは 9.0.2 で、WebSphere Liberty Profile のバージョンは 8.5.5.7 です。私が使用している OmniFaces のバージョンは 2.2 です

OmniFaces Extensionless URL 機能を Wildfly および WebSphere Liberty プロファイル コンテナーのスキニー WAR アーカイブで使用できるようにするために、構成内で変更できるものはありますか?それともバグですか?

この問題のトラブルシューティングを行うために、問題を再現するために最低限必要なものを含む自己完結型の例を作成しました。

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>
        <param-name>org.omnifaces.FACES_VIEWS_SCAN_PATHS</param-name>
        <param-value>/*.xhtml</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>
        <async-supported>true</async-supported>
    </servlet>
    <servlet-mapping>
        <servlet-name>facesServlet</servlet-name>
        <url-pattern>*.xhtml</url-pattern>
    </servlet-mapping>

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

</web-app>

Maven WAR プラグインの構成は次のとおりです。

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-war-plugin</artifactId>
    <version>2.6</version>
    <configuration>
        <failOnMissingWebXml>false</failOnMissingWebXml>
        <packagingExcludes>WEB-INF/lib/*.jar</packagingExcludes>
        <archive>
            <manifest>
                <addClasspath>true</addClasspath>
                <classpathPrefix>lib/</classpathPrefix>
            </manifest>
        </archive>
    </configuration>
</plugin>

Maven EAR プラグインの構成は次のとおりです。

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-ear-plugin</artifactId>
    <version>2.10.1</version>
    <configuration>
        <version>7</version>
        <defaultLibBundleDir>lib</defaultLibBundleDir>
        <skinnyWars>true</skinnyWars>
        <modules>
            <webModule>
                <groupId>${project.groupId}</groupId>
                <artifactId>extensionless-web</artifactId>
                <context-root>/extensionless-web</context-root>
            </webModule>
        </modules>
    </configuration>
</plugin>

Maven EAR プロジェクトには、WAR プロジェクトから依存関係を取り込むための次の依存関係も含まれています。

<dependency>
    <groupId>${project.groupId}</groupId>
    <artifactId>extensionless-web</artifactId>
    <version>${project.version}</version>
    <type>pom</type>
</dependency>
4

0 に答える 0