Soy nuevo en Java Enterprise y en Spring, pero tengo una gran comprensión de Java estándar. Estoy mirando a través de un proyecto de aplicación web existente. El proyecto utiliza Tomcat/Spring/Hibernate, que entiendo es bastante común. También utiliza DWR para invocaciones de métodos remotos. Me resulta un tanto difícil separar las responsabilidades: de qué se responsabiliza Tomcat, de qué es responsable Spring, cómo se obtiene una solicitud de uno para el otro y cómo encajan las piezas principales de Spring. He leído una gran cantidad de documentación sobre Spring, especialmente sobre frijoles y frijoles, y todavía estoy en proceso de leer más. Cualquier consejo que ustedes tengan sería bienvenido, pero les daré algunas preguntas específicas.¿Alguien puede explicar el archivo Spring web.xml?
Pregunta 1: ¿Dónde encaja el web.xml en las cosas (cuándo se usa/se llama y de dónde se llama)?
Ejemplo de código 1:
<servlet>
<servlet-name>qrst</servlet-name>
<display-name>qrst Servlet</display-name>
<servlet-class>
org.springframework.web.servlet.DispatcherServlet
</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
¿Qué hace el fragmento anterior (o, lo que causa esto suceda)? En algún momento de mi aplicación web se usa qrst.jsp; ¿es el Servidor Dispatcher quien llama a qrst.jsp usando el nombre del servlet? De lo contrario, ¿cuál es el significado del nombre del servlet? ¿Qué es cargar en el arranque?
Ejemplo de código 2:
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>
/someLocation/some-servlet.xml
</param-value>
</context-param>
Vínculos o explicación de lo que el anterior? Al mirar el archivo XML que contiene definiciones de bean, puedo ver que entiendo qué son los beans y cómo se usan, pero no conozco ningún otro detalle sobre esto y me gustaría saberlo.
Ejemplo de código 3:
<servlet>
<servlet-name>dwr-invoker</servlet-name>
<display-name>DWR</display-name>
<servlet-class>
org.directwebremoting.servlet.DwrServlet
</servlet-class>
<init-param>
<param-name>classes</param-name>
<param-value>
somepackage.someclass
</param-value>
</init-param>
<load-on-startup>2</load-on-startup>
</servlet>
Por lo que he leído sobre los granos, creo que esos elementos init-param son sólo parámetros que consiga el conjunto de la clase Java del servlet. ¿Cuál es la importancia del nombre del servlet y qué ocurre con la carga al inicio? La aplicación web de alguna manera "sabe" cuando está ocurriendo una llamada AJAX (dwr) versus cuando la aplicación web se está cargando por primera vez (cuando se está cargando por primera vez, debe usar qrst.jsp). ¿Cómo sabe esto? ¿Cómo decide enrutar la solicitud a DWR en lugar de a qrst.jsp? ¿Dónde hace esto?
Gracias.
Muchas gracias por la ayuda. Tengo un mapeo de servlet definido tanto para qrst como para dwr-invocador, ¡entonces lo que estás diciendo tiene sentido para mí! Sin embargo, la URL en la barra de direcciones del navegador siempre tiene el mismo aspecto: siempre invocaría el primer servlet.¿Podría dwr establecer la URL en el código de JavaScript antes de realizar su solicitud? Ya he buscado esto un poco, pero no veo nada de eso, si estoy en el camino correcto seguiré buscando. – KyleM
En el some-servlet.xml, hay dos elementos con un atributo "clase" que contiene "Controller". ¡Uno es el principal, y el otro es para el DWR! Entonces parece que DispatcherServlet simplemente elige el apropiado para invocar, ¿suena sensato? Y tengo que irme a casa ahora, pero revisaré tus enlaces lo antes posible el lunes. Gracias a un millón por la ayuda, realmente no puedo decirte lo mucho que lo aprecio. – KyleM
Gracias de nuevo por toda la ayuda, no puedo decir lo mucho que lo aprecio, he podido estudiar los temas apropiados como resultado de su excelente publicación. @Todo el mundo: el uso de HttpFox mostró que "/ dwr" ES parte de la URL que se está publicando cuando se ejecutan las llamadas ajax. La declaración de Leonel acerca de los mapeos de servlets fue acertada. Ahora solo es cuestión de descubrir CÓMO se publica la URL (ya que no veo dónde está configurado ...). Estoy actualizando la pregunta original con algunos documentos útiles. – KyleM