¿Cómo puedo alojar un archivo .jar directamente dentro de una guerra en Wildfly/JBoss?

StackOverflow https://stackoverflow.com//questions/25048280

  •  21-12-2019
  •  | 
  •  

Pregunta

Entonces tengo una pregunta muy simple.Tengo un archivo .war bastante trivial que alojará felizmente cualquier tipo de archivo que le lance, excepto un archivo .jar.

Aquí está mi archivo .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)

y los siguientes cuatro archivos:

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

Estoy implementando mi guerra en un servidor wildfly-8.1.0 como "testwar.war".Cuando lo hago, puedo acceder a todos los archivos excepto a la carpeta/jar.jar a través de una URL perfectamente normal:

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

Todos esos funcionan.Pero

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

devuelve un 404.

Por mi vida no puedo entender por qué el archivo jar no aparece o cómo solucionarlo.¿Alguna idea?

¿Fue útil?

Solución

El servlet predeterminado de Wildfly/Undertow tiene una lista de extensiones permitidas y no permitidas que se pueden configurar en web.xml a través de parámetros de inicio. jar no está permitido de forma predeterminada.

Añade lo siguiente a tu web.xml para permitir el jar extensión:

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

Otros consejos

Encontré la respuesta aquí: Hilo de la comunidad JBOSS

Versión 8.1.0 de WildFly de forma predeterminada se niega a servir archivos .jar;Debe anular eso agregando el siguiente bloque a su web.xml (de forma predeterminada, "JAR" es una extensión no permitida):

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

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top