Salve a tutti.
Premetto che sono un nabbo per quanto riguarda java e servlet quindi mi scuso se le domande potranno sembrare stupide e banali.
SITUAZIONE
- Su piattaforma Linux ho installato Java, Tomcat 7.0.14 e Netbeans come IDE di sviluppo;
- Ho configurato Tomcat e tutto funziona correttamente (i vari Hello World ecc...);
- Ho scaricato un semplice .WAR chiamato Sample che contiene una versione "evoluta" di Hello World che fa vedere come fare una webapps su tomcat visualizzando qualcosa tramite semplice index.html oppure index.jsp o ancora tramite una servlet chiamata appunto Hello;
ANALISI
- Tomcat si aspetta le webapps nella directory omonima e deploya in automatico (tramite il parametro) i .war presenti;
- Il file sample.war è stato deployato correttamente ed infatti funziona perfettamente andando su http://localhost:8080/sample
PROCEDURA
- La parte su JSP mi sembra abbastanza facile provenendo io da PHP. Volevo quindi provare a fare una servlet stupida per poter impratichirmi. Come IDE mi hanno detto di usare Netbeans;
PROBLEMA 01 - NetBeans
- Avendo già un progetto dentro webapps, ho cercato la procedura per "importare" un progetto web già esistente seguendo il wizard. Ecco i primi dubbi:
Netbeans chiede all'inizio 3 diversi PATH:
1. Location, Project Folder e Project Name: Ovviamente l'IDE si incavola se i primi due sono uguali quindi ho ipotizzato che Location fosse la root di webapps di Tomcat mentre Project Folder fosse la dir sample al suo interno. Così impostato la IDE sembra aver "capito" la struttura del progetto ed infatti riconosce la struttura interna con i vari WEB-INF ecc..
La cosa sembra andare tutto bene. Se infatti creo una nuova servlet (oggetto del problema 2 di cui sotto), automaticamente edita il file web.xml per aggiungere tutte le informazioni necessarie.
Il problema arriva all'atto dell'avvio dell'applicazione.
Ho creato una mia versione di Hello World come servlet (in realtà il codice base che netbeans crea selezionando New -> Servelt) a cui ho associato l'URL /MyHello. Il file l'ho creato dentro web-inf/classes/mypackages/ dove è già presente Hello.class
Ottengo così al suo interno MyHello.java. Ovviamente se vado sull'url relativo (http://localhost:8080/sample/MyHello ottengo un sonoro
HTTP Status 404 - Servlet MyHello is not available
Questo perché ho un java e non un .class
Ho quindi cercato su Netbeams il modo di compilare il .java per ottenere il .class ma facendo F9 nonostante l'elaborazione, non ottengo niente.
Allora ho pensato di usare l'opzione RUN di Netbeans nella speranza che buildasse lui tutto il progetto. L'operazione ha dato il via ad una serie di operazioni che hanno sparso file dentro webapps di tomcat.
Netbeans infatti ha creato al suo interno una dir: nbproject ed una nuova dir build al cui interno c'è web al cui interno ha praticamente ricopiato tutta la struttura che era contenuta in webapps/sample.
L'esecuzione inoltre non funziona perché ritorna il seguente errore:
FAIL - Deployed application at context path / but context failed to start
/usr/programs/apache-tomcat-7.0.14/webapps/nbproject/build-impl.xml:713: ...
Quindi ho questi 2 problemi:
PROBLEMA 01: E' possibile fare in modo che Netbeans usi un progetto esistente senza dover spostare tutto dove pare a lui?
PROBLEMA 02: So che è banale ma come faccio da un .java ad ottenere il .class da dentro la IDE? Se provo a lanciare javac da linea di comando da ottomila errori di mancanza di package che probabilmente sono dovuti all'errara configurazione dello stesso dato che la classe java è in realtà quella di esempio della IDE e già completa di tutti gli import minimi necessari.
Grazie infinite per chi è arrivato a leggere fino a qua e a chi sarà così paziente da darmi una mano.
Ciao.