2011-02-24 21 views
8

Creé un servlet simple "hello world" en Eclipse (helios) + Glassfish v3. Estoy usando el plugin de Glassfish para eclipse Parece que no hay web.xml sino sun-web.xml en la carpeta WEB-INF /. Esta es mi primera vez con glassfish pero era un poco sorprendido por la ausencia de web.xml - así que aquí están algunos de los problemas:No web.xml en Eclipse + Glassfish v3?

  1. ¿Dónde verifico para url-asignaciones para el servlet? Al crear un nuevo Servlet en Eclipse, me pide un mapeo URL pero no puedo encontrarlo en ningún otro archivo .xml donde pueda ajustar la configuración.
  2. Si no hay ningún web.xml, crearlo desde cero será bastante propenso a errores. ¿Que sugieres? Google para una muestra y jugar? ¿No debería uno ser creado automáticamente?
  3. ¿Alguien ha encontrado esto? Intenté buscar la diferencia entre web.xml y sun-web.xml, pero los resultados no fueron del todo esclarecedores. No me gustaría aprender otro xml para propósitos de configuración y eso también es específico para Glassfish.

Tenemos que configurar contextos de servlets, mapeos, etc. especialmente durante el desarrollo/prueba, pero la mera ausencia de web.xml me ha dejado perplejo.

Respuesta

12

Eclipse le permite no crear un archivo web.xml cuando crea Dynamic Web Project para Java EE 6, ya que la especificación Java EE 6 (en general) y la especificación Servlet 3.0 (en particular) intentan quitar énfasis a la implementación descriptores.

Puede usar la anotación para proporcionar todos los datos que se han incluido en el archivo web.xml. El Javadoc for the Servlet 3.0 annotations es bastante obtuso. Deberías leer el Servlet 3.0 spec from the jcp.org site para obtener un poco más de texto explicativo.

Para cambiar la asignación de url para un servlet de Servlet 3.0, el primer lugar para buscar es en el código fuente del servlet. Busque (y cambie) el valor del elemento urlPatterns.

Si está intentando crear una aplicación web basada en Servlet 3.0, intente evitar crear un archivo web.xml.

El archivo sun-web.xml/glassfish-web.xml se utiliza para 'finalizar' la descripción de un archivo war para su despliegue en un contenedor GlassFish.

Otra nota sobre las anotaciones como WebServlet ...no se integran a su clase anotada en la jerarquía de clases, por lo que el uso correcto de @WebServlet se vería como

@WebServlet(
    name = "MyServlet", 
    urlPatterns = {"/path_to_servlet"} 
) 
public class MyServlet extends HttpServlet {} 
+0

¡Eso es exactamente lo que estaba buscando! Lo encontré en partes pero ¡una explicación cohesiva es más bienvenida! ¡Gracias! – PhD

+1

Puede hacer clic con el botón derecho en el proyecto de eclipse y seleccionar "Herramientas de Java EE" -> "Generar descriptor de descriptor de despliegue" para generarlo. De – Pargat

+0

servlet 3 ESPECIFICACIÓN> 10.13 La inclusión de un despliegue web.xml descriptor : aplicación Web no es necesario para contener una Web.xml si no contiene ningún servlet, el filtro o componentes oyente o está utilizando anotaciones para declarar lo mismo. En otras palabras una aplicación que contiene sólo los archivos estáticos o páginas JSP no requiere un web.xml para estar presente. – Vicky

3

Gracias a Glassfish 3.x está totalmente certificado el servidor Java EE 6, es compatible con Servlets 3.0. A partir de Servlets 3.0, es posible especificar la configuración web.xml a través de anotaciones.

Por ejemplo

@WebServlet(
    name = "MyServlet", 
    urlPatterns = {"/path_to_servlet"} 
) 
public class MyServlet {} 
+0

No estaba al tanto de eso ... gracias por el puntero :) – PhD

4

Parece que es un mal hábito que hacer clic en "Finalizar" cuando se crea un '> Dynamic Web Project Nueva' - Debe seguir haciendo clic en 'siguiente' y pasar la última ventana- panel donde selecciona "generate web.xml deployment descriptor" - parece que está desmarcado por defecto.

Bueno, eso dice que he estado un poco oxidado con la creación de aplicaciones web. Y aquí pensé que era un problema específico de Glassfish.

+0

Iba a publicar una respuesta con un enlace a [esta captura de pantalla] (http://4.bp.blogspot.com/_4aRLuh8AW_A/ TUYjKApT42I/AAAAAAAAAw/iibmuOHBw7Y/s1600/Prepare-JSF-project-% 252303.png) :) Bien, lo has descubierto tú mismo. – BalusC

+0

@BalusC: sabía que podía contar con usted: D – PhD

10

Si encuentra usted no necesita un archivo de web.xml, se puede hacer un clic contextual en el descriptor de despliegue en el La vista Explorador de proyectos y debería haber una opción "Generar descriptor de descriptor de despliegue". Eso creará un web.xml para usted con los elementos display-name y welcome-file-list.

0

Para añadir a lo que dijo RGT, me di cuenta de que el explorador de proyectos no mostraría el descriptor de despliegue hasta que realice una actualización de SVN por alguna razón. Si tienes ese problema, intenta actualizar tu código. Ya estaba en la revisión de HEAD, pero por alguna razón la actualización mostró esa vista.

+1

Esto debería ser un comentario, @ Clete2. – karlphillip

Cuestiones relacionadas