2011-11-24 14 views
5

Estoy tratando de crear un proyecto web muy básico llamado "web" usando MyEclipse y JBoss 5 como servidor de aplicaciones. Creé un paquete llamado "páginas" y dentro de él un servlet llamado "UserInterface". El problema es que cuando despliegue el proyecto y ejecuto el servidor siempre obtengo el informe de error: HTTP Status 404 - El servlet no está disponible.Informe de error de JBoss: HTTP Status 404 - El servlet no está disponible

Esta es una parte de mi 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> 

y estoy navegando en el navegador para: http://localhost:8080/web/UserInterface

¿qué estoy haciendo mal aquí?

Gracias

+0

Una lista de los archivos en la aplicación web implementada sería útil. ¿Lo estás implementando como .war? –

+1

también es el proyecto implementado con el contexto path = web? ¿puedes acceder a la raíz localhost: 8080/web? –

+0

Cuando se inicia el servidor o se implementa la aplicación, ¿ve algún problema en los registros o en la salida de la consola? – Santosh

Respuesta

2

Todavía no sé lo que estaba mal, pero he creado otro servlet llamado usuario, y en el web.xml he agregado/servlet antes de la clase y navegué hacia él en el navegador (http: // localhost : 8080/web/servlet/User) y funcionó.

<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> 

¡Gracias a todos por su ayuda!

2

de estado HTTP 404 - servlet no está disponible.

La carga del servlet ha fallado (si el servlet no se declare debidamente en web.xml o la URL que estaba mal, entonces usted debe haber visto en su lugar "404 - recurso no encontrado"). En pocas palabras, el <servlet-class> es incorrecto o el archivo de la clase concreta no está presente en /WEB-INF/classes.

+0

¿Sería una excepción de servlet en un error de 500? –

+0

@Andrei: solo cuando lo lanzan 'service()', 'doGet()', etc. Pero en este caso el servlet simplemente no está disponible en absoluto. El contenedor conoce la asignación de URL de servlet, pero no tiene una instancia de trabajo válida en las manos, porque la creación de instancias/inicialización ha fallado. – BalusC

+0

Hm, sí, pero estoy bastante seguro de que si yo, por ejemplo, tengo un servlet con un método invalidado init() que arroja un NPE, entonces el acceso a ese servlet (en Jetty por ejemplo) devolverá un HTTP 500. –

4

404 significa que la URL a la que intenta acceder no apunta a un recurso existente en su servidor. Verifique la dirección nuevamente, tal vez la parte "web" (desde http://localhost:8080/web/UserInterface) no sea correcta porque tal vez la aplicación no esté implementada con ese nombre. De forma predeterminada, el nombre del contexto de la aplicación se deriva del nombre del archivo ".war", como si tu archivo es "myApp.war", tu aplicación debería estar disponible en http://localhost:8080/myApp

Además, si realmente estás desplegando tu guerra dentro de un archivo .ear que ese archivo del oído contendrá un descriptor aplicacion.xml aplpication que puede asignar el archivo de la aplicación a un contexto específico, sin importar lo que el nombre del archivo .war es, algo así como:

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

último , si se autodesplega desde Eclipse con el conector JBoss Eclipse, a veces la cosa falla y de hecho no implementa su aplicación correctamente (aunque la aplicación en sí misma está bien). Si ese es el caso, intente implementar manualmente .war en un servidor de aplicaciones y verifíquelo de esa manera.

+1

Lee el mensaje 404. La URL definitivamente no es incorrecta. – BalusC

Cuestiones relacionadas