Descarga de archivos desde el servidor remoto Java

Estoy buscando sugerencias para implementar este requisito:

El requisito es que los usuarios de un sitio web público puedan descargar archivos de cualquier tipo. El servidor web del sitio web reside en una DMZ, el servidor que almacena los archivos es interno a nuestra red corporativa. El servidor web tendría que comunicarse con el servidor de almacenamiento de archivos para obtener los archivos. ¿Cuál sería la mejor manera de implementar esto?

preguntado el 08 de noviembre de 11 a las 18:11

¿Implementar cuál, descargar o hablar con el servidor de archivos? La descarga es tan simple como transmitir el archivo en la respuesta. -

2 Respuestas

Asigne ese servidor de archivos como una unidad de red en el sistema de archivos de disco del servidor web y luego agregue otro contexto de aplicación web a la configuración del servletcontainer que hace referencia a la ruta asignada a la red.

No está claro qué servletcontainer y plataforma está ejecutando / apuntando, por lo que no puedo dar una respuesta más detallada. Pero si fuera Tomcat, entonces es cuestión de agregar lo siguiente <Context> elemento a Tomcat's /conf/server.xml, asumiendo que ha mapeado el servidor de archivos en /path/to/mount/share:

<Context path="/share" docBase="/path/to/mount/share" />

De esta manera está disponible por http://localhost:8080/share/

respondido 08 nov., 11:23

BalusC, probé su solución. Primero usé la ruta UNC de la unidad de red como docbase. Cuando inicio Tomcat (startup.bat) puedo obtener el error "La base del documento no existe o no es un directorio legible". Luego intenté usar la unidad mapeada que es la unidad I: en el servidor web. Esto no me dio el error anterior, pero cuando accedo a la ruta localhost: 8080 / compartir Recibo un error de recurso no encontrado. - sotn

Debería especificar un nombre de archivo :) La lista de directorios está desactivada por defecto. Por ejemplo, si tienes un foo.ext en el objeto /share carpeta, entonces necesitas abrir localhost: 8080 / share / foo.ext O si desea activar la lista de directorios, configure listings atributo de JspServlet en Tomcat's /conf/web.xml a true. ¡Solo debe tener en cuenta que esto afecta a todas las aplicaciones web implementadas en este servidor Tomcat! - BalusC

Parece que desea un componente similar a un proxy para servir archivos de backend ... Personalmente, no usaría un servidor de aplicaciones para tal tarea, en su lugar usaría simplemente un servidor web. Algunas opciones:

  • Recurso compartido de red: cree un recurso compartido de red tal como propuso BalusC y configure su servidor web para usar ese recurso compartido.
  • Proxy inverso: implemente otro servidor web en su servidor de archivos y configure su interfaz para que actúe como un proxy inverso (es decir, para enviar solicitudes de descarga al servidor web interno)

Es decir, prefiero usar un enfoque basado en servidor web (Apache, Nginx, etc.) en lugar de uno basado en Java / J2EE. Para mí parece que encaja mejor ... Por lo tanto, consultaría a mi administrador de sistemas :)

respondido 09 nov., 11:00

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.