如何在 WildFly 26.0.1 中提供静态内容?

How to serve static contents in WildFly 26.0.1?

我使用以下 web.xml 配置来使用 tomcat 和码头中的默认 servlet 提供静态文件。

<web-app xmlns="https://jakarta.ee/xml/ns/jakartaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee https://jakarta.ee/xml/ns/jakartaee/web-app_5_0.xsd"
         version="5.0">
    <servlet-mapping>
        <servlet-name>default</servlet-name>
        <url-pattern>/favicon.ico</url-pattern>
        <url-pattern>/css/*</url-pattern>
        <url-pattern>/img/*</url-pattern>
        <url-pattern>/js/*</url-pattern>
    </servlet-mapping>
</web-app>

但是在WildFly中,所有的静态文件都无法被服务器找到。那么,我应该如何配置 WildFly 来提供静态文件?

好的,看来 wildfly 服务器没有为您注册“默认 servlet”。要使用它,您需要自己注册 servlet class。由于 wildfly 使用 undertow,class 是 io.undertow.servlet.handlers.DefaultServlet.

完成web.xml:

<web-app xmlns="https://jakarta.ee/xml/ns/jakartaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee https://jakarta.ee/xml/ns/jakartaee/web-app_5_0.xsd"
         version="5.0">
    <servlet>
        <servlet-name>default</servlet-name>
        <servlet-class>io.undertow.servlet.handlers.DefaultServlet</servlet-class>
        <init-param>
            <param-name>resolve-against-context-root</param-name>
            <param-value>true</param-value>
        </init-param>
    </servlet>

    <servlet-mapping>
        <servlet-name>default</servlet-name>
        <url-pattern>/favicon.ico</url-pattern>
        <url-pattern>/css/*</url-pattern>
        <url-pattern>/img/*</url-pattern>
        <url-pattern>/js/*</url-pattern>
    </servlet-mapping>
</web-app>