2011-11-24 3 views
5

Sto cercando di creare un progetto Web di base chiamato "web" utilizzando MyEclipse e JBoss 5 come server applicazioni. Ho creato un pacchetto chiamato "pagine" e al suo interno un servlet chiamato "UserInterface". Il problema è quando distribuisco il progetto ed eseguo il server. Ricevo sempre il rapporto di errore: HTTP Status 404 - Servlet non è disponibile.Rapporto errori JBoss: Stato HTTP 404 - Servlet non disponibile

Questa è una parte del mio web.xml:

<servlet> 
    <servlet-name>UserInterface</servlet-name> 
    <servlet-class>pages.UserInterface</servlet-class> 
    </servlet> 

    <servlet-mapping> 
    <servlet-name>UserInterface</servlet-name> 
    <url-pattern>/UserInterface</url-pattern> 
    </servlet-mapping> 

e sto navigando nel browser per: http://localhost:8080/web/UserInterface

che cosa sto facendo male qui?

Grazie

+0

Un elenco dei file nell'applicazione Web implementata sarebbe utile. Lo stai distribuendo come .war? –

+1

è anche il progetto distribuito con il contesto path = web? puoi accedere al root localhost: 8080/web? –

+0

Quando il server si avvia o viene distribuita un'applicazione, si notano problemi nei registri o nell'output della console? – Santosh

risposta

2

Ancora non so cosa fosse sbagliato, ma ho creato un altro servlet chiamato utente e nel web.xml ho aggiunto/servlet prima della classe e navigato nel browser (http: // localhost : 8080/web/servlet/Utente) e ha funzionato.

<servlet> 
    <servlet-name>User</servlet-name> 
    <servlet-class>pages.User</servlet-class> 
    </servlet> 

    <servlet-mapping> 
    <servlet-name>User</servlet-name> 
    <url-pattern>/servlet/User</url-pattern> 
    </servlet-mapping> 

Grazie a tutti per il vostro aiuto!

2

stato HTTP 404 - Servlet non è disponibile.

Il caricamento del servlet ha fallito (se il servlet non è stato correttamente dichiarato nel web.xml oppure l'URL è stato sbagliato, allora si dovrebbe invece avere visto "404 - Risorsa non trovata"). In poche parole, <servlet-class> è errato o il file di classe concreto non è presente in /WEB-INF/classes.

+0

Un'errore di servlet avrebbe causato un errore 500? –

+0

@Andrei: solo quando viene lanciato da 'service()', 'doGet()' e così via. Ma in questo caso il servlet non è affatto disponibile. Il contenitore è a conoscenza della mappatura dell'URL servlet, ma non ha un'istanza di lavoro valida alle mani, perché l'istanziazione/inizializzazione ha avuto esito negativo. – BalusC

+0

Hm, sì, ma sono abbastanza sicuro dal mio codice di merda che se io, per esempio, ho un servlet con un metodo sovrascritto init() che lancia un NPE, allora l'accesso a quel servlet (nel Jetty per esempio) restituirà un HTTP 500. –

4

404 indica che l'URL a cui stai tentando di accedere non punta a una risorsa esistente sul tuo server. Controlla di nuovo l'indirizzo, forse la parte "web" (da http://localhost:8080/web/UserInterface) non è corretta perché forse l'app non è distribuita con quel nome. Per impostazione predefinita, il nome del contesto applicazione è derrived dal nome del file ".war", come se il file è 'myApp.war', la vostra applicazione dovrebbe essere disponibile a http://localhost:8080/myApp

Inoltre, se si sta effettivamente distribuzione tua guerra all'interno di un file .ear che quel file ear conterrà un descrittore application.xml aplpication che può mappare il file app per un contesto specifico, non-importa quale sia il nome del file .war è, qualcosa come:

<module> 
    <web> 
     <web-uri>myApp.war</web-uri> 
     <context-root>theApp</context-root> 
    </web> 
    </module> 

Infine , se si sta eseguendo il trasferimento automatico da Eclipse con il connettore JBoss Eclipse, a volte la cosa si blocca e in realtà non distribuisce l'app correttamente (anche se l'app stessa va bene). In tal caso, provare a distribuire manualmente .war su un server delle applicazioni e controllarlo in questo modo.

+1

Legge il messaggio 404. L'URL non è sicuramente sbagliato. – BalusC