所以我有一个非常简单的问题。我有一个相当简单的 .war 文件,它可以轻松地托管我扔给它的任何类型的文件 - 除了 .jar 文件。

这是我的 .war 文件:

WEB-INF/web.xml:

<?xml version="1.0" encoding="UTF-8" ?> 
  <web-app id="WebApp_ID" version="2.5" 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_2_5.xsd" />

元信息/清单.MF:

Manifest-Version: 1.0
Ant-Version: Apache Ant 1.9.2
Created-By: 1.8.0_05-b13 (Oracle Corporation)

以及以下四个文件:

index.html
folder/jar.jar
folder/jar.zip
folder/index.html

我正在将我的战争部署到 wildfly-8.1.0 服务器上,名称为“testwar.war”。当我这样做时,我可以通过完全正常的 URL 访问除folder/jar.jar 之外的所有文件:

http://localhost:8080/testwar/
http://localhost:8080/testwar/folder/
http://localhost:8080/testwar/folder/jar.zip

所有这些都有效。但

http://localhost:8080/testwar/folder/jar.jar

返回 404。

我一生都无法弄清楚为什么 jar 文件不会显示,或者如何修复它。有什么想法吗?

有帮助吗?

解决方案

Wildfly/Undertow 的默认 servlet 有一个允许和不允许的扩展列表,可以在 web.xml 通过初始化参数。 jar 默认情况下是不允许的。

将以下内容添加到您的 web.xml 以启用 jar 扩大:

<servlet>
    <servlet-name>default</servlet-name>
    <servlet-class>io.undertow.servlet.handlers.DefaultServlet</servlet-class>
    <init-param>
        <param-name>default-allowed</param-name>
        <param-value>true</param-value>
    </init-param>
    <init-param>
         <param-name>allowed-extensions</param-name>
         <param-value>jar</param-value>
    </init-param>
    <init-param>
         <param-name>disallowed-extensions</param-name>
         <param-value>exe,bat,sh</param-value>
    </init-param>
</servlet>

其他提示

在这里找到答案: jboss社区线程

默认拒绝拒绝避难所的8.1.0 .jar文件;您必须通过将以下块添加到Web.xml(默认情况下,“jar”是一个不允许的扩展名):

<servlet>
      <servlet-name>default</servlet-name>
      <servlet-class>io.undertow.servlet.handlers.DefaultServlet</servlet-class>
       <init-param>
          <param-name>allowed-extensions</param-name>
          <param-value>jar, js, css, png, jpg, gif, html, htm, txt, pdf, jpeg, xml, zip</param-value>
      </init-param>
       <init-param>
          <param-name>disallowed-extensions</param-name>
          <param-value>class, war</param-value>
      </init-param>      
</servlet>
.

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top