2012-03-04 25 views
6

Ho creato un'applicazione Web utilizzando Netbeans. Prima, quando stavo eseguendo l'app Web tramite netbeans e server tomcat (che era un file zip), tutti i miei file esterni (file caricati e altri file helper che uso per la mia app) sono memorizzati nella directory bin.dove archivia i miei file tomcat?

Ora, ho provato a installare un servizio Apache Tomcat utilizzando Windows Installer perché volevo sapere come distribuire il progetto su un server dedicato. Ho distribuito con successo il file di guerra usando l'utilità di distribuzione di tomcat. Tuttavia, quando eseguo il progetto tramite il servizio Windows Apache Tomcat, non si salvano i file nella directory bin e non è possibile leggere i miei file che ho incollato nella directory bin.

Dove credi dovrei posizionare i miei file?

MODIFICA: Osservando la directory del servizio Tomcat, ho scoperto che si trova nella radice. Se ho il mio tomcat installato su 'E: \ Apache \ services \ tomcat \', è memorizzato nella directory 'tomcat'.

risposta

4

Quando si installa Apache, il progetto dovrebbe essere all'interno della cartella webapp:

C:\Apache\tomcat\webapps 

Come il mio progetto è gaganisonline così la struttura di directory è qualcosa di simile:

Percorso: C:\Apache\tomcat\webapps\gaganisonline

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

Sì, so che il mio progetto è nella directory webapps. Tuttavia, volevo sapere dove poteva scrivere il server tomcat e archiviare i file mentre la mia webapp è in esecuzione. Grazie comunque. – braindead

+0

Qui la cartella ROOT è la radice del tuo Tomcat. La prima pagina index.jsp che vedi risiede in quella cartella. Che tipo di file sta scrivendo Tomcat e supponiamo di archiviare? –

5

In definitiva, è ciò che l'applicazione fa a determinare dove sono archiviati i file.

Di conseguenza, l'applicazione sta memorizzando i file nella directory corrente della JVM, che risulta essere la directory "bin" quando si avvia il server Web tramite NetBeans. In tal caso, li troverai, indipendentemente dalla directory corrente, quando Tomcat viene avviato come servizio Windows.

Francamente, penso che tu abbia sbagliato. Dovresti prendere una decisione consapevole in merito al caricamento dei file deve essere memorizzato e quindi assicurarti che il meccanismo di caricamento che stai utilizzando li collochi lì.

Ovviamente, metterli nella directory corrente è una cattiva idea. Non vuoi che vengano memorizzati in posti diversi a seconda di come viene avviato il contenitore web. E ovviamente la directory "bin" è un luogo inappropriato. (Che cosa succede se l'utente tenta di caricare un file il cui nome corrisponde uno degli script che vivono in "bin"?)


Allora, dove dovrebbe si essere mettere i file?

A mio parere, hai tre scelte:

  • in una sottodirectory della directory work ... che è dove Tomcat mette convenzionalmente file transitori, come compilato JSP.

  • In una sottodirectory personalizzata della directory di installazione di Tomcat.

  • In una directory separata da qualche altra parte nel file system.

non si dovrebbe essere caduta quindi nella directory webapp, perché i file non sono in genere spazzati via quando la webapp viene ridistribuito, e perché c'è un rischio maggiore che ha caricato i file interferirà con il vostro webapp.

Non dovresti lasciarli nel cestino o nei registri o nelle directory lib o config a causa del rischio di interferenze ... e perché semplicemente non sono il luogo logico.


Se si desidera scrivere i file relativi alla radice della directory di installazione di Tomcat, si può scoprire di cosa si tratta chiamando System.getProperty("catalina.base").

Ma qualunque cosa tu faccia, devi assicurarti che un utente non possa caricare accidentalmente o deliberatamente i file nel posto sbagliato; ad esempio, fornendo un percorso assoluto o un percorso che utilizza "../../...." per uscire dall'area di caricamento.

+0

Nel caso di "nome corrisponde a uno degli script che vivono in' bin' ", sono un po 'sicuro per questo poiché lo memorizzo in una directory all'interno di' bin'. Comunque, voglio prendere i tuoi consigli per memorizzarlo su un'altra directory a parte il cestino. Il mio problema ora è come farlo? Non mi piace usare percorsi di file esatti come 'C: \ Apache \ tomcat \ file.txt'. Di solito uso il percorso relativo. C'è qualche soluzione su questo o dovrei usare percorsi di file esatti? Qual è la mia directory di root tra l'altro se accedo ai file dalla mia webapp? – braindead

+0

Vedi risposta aggiornata ... –

Problemi correlati