如何在Wildfly / JBoss的战争中直接托管.jar文件?

时间:2014-07-30 22:52:39

标签: java jar jboss wildfly

所以我有一个非常简单的问题。我有一个相当简单的.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" />

META-INF / MANIFEST.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服务器上作为&#34; testwar.war&#34;。当我这样做时,我可以通过完全正常的URL访问除文件夹/ 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文件不会出现,或者如何修复它。有什么想法吗?

2 个答案:

答案 0 :(得分:2)

Wildfly / Undertow的默认servlet有一个允许和不允许的扩展列表,可以通过init参数在web.xml中配置。

将以下内容添加到jar以启用web.xml扩展程序:

jar

答案 1 :(得分:0)

在这里找到答案:JBoss community thread

默认情况下,版本8.1.0的WildFly拒绝提供.jar文件;你必须通过将以下块添加到web.xml来覆盖它(默认情况下,&#34; jar&#34;是不允许的扩展名):

<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>