2012-03-04 113 views
6

He creado una aplicación web usando Netbeans. Antes, cuando ejecutaba la aplicación web a través de netbeans y el servidor tomcat (que era un zip), todos mis archivos externos (archivos cargados y otros archivos auxiliares que uso para mi aplicación) se almacenan en el directorio bin.donde guarda tomcat mis archivos?

Ahora, traté de instalar un servicio de apache tomcat usando el instalador de Windows porque quería saber cómo implementar el proyecto en un servidor dedicado. Implementé exitosamente el archivo war usando la herramienta de despliegue de tomcat. Sin embargo, cuando ejecuto el proyecto a través del servicio apache tomcat windows, no guarda los archivos en bin dir y tampoco puede leer mis archivos que pegué en bin dir.

¿Dónde crees que debería colocar mis archivos?

EDIT: Al observar el directorio de servicio de tomcat, descubrí que está almacenado en la raíz. Si tengo mi tomcat instalado en 'E: \ Apache \ services \ tomcat \', se almacena en el directorio 'tomcat'.

Respuesta

4

Al instalar Apache, el proyecto debe estar dentro de la carpeta webapp:

C:\Apache\tomcat\webapps 

Al igual que mi proyecto es gaganisonline por lo que la estructura de directorios es algo como esto:

Path: C:\Apache\tomcat\webapps\gaganisonline

      gaganisonline 
          |   | 
         WEB-INF  index.html 
          | 
       --------------------------- 
       |   |  |  | 
      web.xml src lib classes 
+0

Sí, sé que mi proyecto está en el directorio webapps. Sin embargo, quería saber dónde podría el servidor Tomcat escribir y almacenar los archivos mientras se está ejecutando mi aplicación web. Gracias de cualquier manera. – braindead

+0

Aquí la carpeta ROOT es la raíz de su Tomcat. La primera página index.jsp que ve reside en esa carpeta. ¿Qué tipo de archivos está escribiendo Tomcat y supuestamente almacenar? –

5

En última instancia, es lo que hace su aplicación lo que determina dónde se almacenan los archivos.

Por lo que parece, su aplicación está almacenando archivos en el directorio actual de la JVM, que resulta ser el directorio "bin" cuando inicia el servidor web a través de NetBeans. Si es así, los encontrará, en cualquier directorio actual, cuando se inicie Tomcat como un servicio de Windows.

Francamente, creo que lo has entendido mal. Debería tomar una decisión consciente en cuanto a que los archivos cargados deberían estar almacenados en, y luego asegurarse de que el mecanismo de carga que está utilizando los coloque allí.

Obviamente, ponerlos en el directorio actual es una mala idea. No desea que se almacenen en lugares diferentes según cómo se inicie el contenedor web. Y obviamente el directorio "bin" es un lugar inapropiado. (¿Qué pasa si el usuario intenta cargar un archivo cuyo nombre coincide con uno de los guiones que viven en "bin"?)


Entonces, ¿dónde debería que puede colocar los archivos?

En mi opinión, usted tiene tres opciones:

  • En un subdirectorio del directorio work ... que es donde Tomcat convencionalmente pone archivos transitorios tales como JSP compilado.

  • En un subdirectorio personalizado del directorio de instalación de Tomcat.

  • En un directorio separado en otro lugar en el sistema de archivos.

Usted no debería estar disminuyendo luego en el directorio webapp, ya que los archivos no están normalmente impresionados cuando se vuelve a desplegar la aplicación web, y porque hay un mayor riesgo de que los archivos subidos va a interferir con su aplicación web.

No debería dejarlos caer en el contenedor o registros o lib o configurar directorios debido al riesgo de interferencia ... y porque simplemente no son el lugar lógico.


Si desea escribir archivos relativos a la raíz del directorio de instalación de Tomcat, se puede averiguar lo que es llamando System.getProperty("catalina.base").

Pero sea lo que sea que haga, debe asegurarse de que un usuario no pueda cargar accidental o deliberadamente archivos en el lugar equivocado; por ejemplo, proporcionando un nombre de ruta absoluto, o un nombre de ruta que usa "../../...." para escapar de su área de carga.

+0

En el caso de "nombre coincide con uno de los scripts que viven en' bin' ", estoy un poco seguro para eso ya que lo almaceno en un directorio dentro del' bin'. De todos modos, quiero tomar su consejo sobre el almacenamiento en otro directorio aparte del contenedor. Mi problema ahora es cómo hacerlo? No me gusta usar rutas de archivos exactas como 'C: \ Apache \ tomcat \ file.txt'. Usualmente uso la ruta relativa. ¿Hay alguna solución en esto o debería usar rutas de archivos exactas? ¿Cuál es mi directorio raíz por cierto si tengo acceso a archivos de mi aplicación web? – braindead

+0

Ver respuesta actualizada ... –

Cuestiones relacionadas