Para construir una distribuci�n fuente, o instalar una distribuci�n binaria de Struts, necesitaremos adquirir e instalar otros varios paquetes de software:
- Java Development Kit - Debemos descargar e instalar una implementaci�n del JDK de Java (versi�n 1.2 o superior) para nuestra plataforma de sistema operativo. Un punto de partida para localizar las distribuciones del JDK es http://java.sun.com/j2se.
- Servlet Container - Debemos descargar e instarlar un contenedor de sevlets que sea compatible con la especificaci�n del API Servlet, versi�n 2.2 o posterior, y la especificaci�n JavaServer Pages (JSP), versi�n 1.1 o posterior. Una elecci�n popular es Tomcat de Apache (versi�n 3.1 o posterior, recomendamos la versiones 3.2 o posteriores).
- Ant Build System - Si est�mos construyendo Struts desde la distribuci�n fuente, debemos descargar e instalar una versi�n 1.3 o posterior de Ant. Este paquete tambi�n es altamente recomendado para usarlo en el desarrollo de nuestras aplicaciones Web basadas en Struts.
- Si est�mos usando la versi�n 1.3 de Ant, necesitaremos descargar el fichero "optional.jar" que contiene la implementaci�n del comando <style> de Ant.
- Nos aseguramos de que los scripts "ant" y "ant.bat" son ejecutables, a�adiendo el directorio $ANT_HOME/bin a nuestra variable de entorno PATH.
- Servlet API Classes - Para poder compilar el propio Struts, o las aplicaciones que usan Struts, necesitaremos un fichero servlet.jar que contenga las clases de los APIs Servelt y JSP. La mayor�a de los contenedores de servlets incluyen este fichero JAR. Si no es as�, podemos obtener la distribuci�n de estas clases desde aqu�.
- JDBC 2.0 Optional Package Classes - Struts soporta una implementaci�n opcional de javax.sql.DataSource, por eso requiere que se compile el API de clases. Se pueden descargar desde http://java.sun.com/products/jdbc/download.html.
- XML Parser - Struts requiere la presencia de un analizador XML que sea compatible con la especificaci�n del API Java para XML Parsing (JAXP), 1.0 o posterior. Podemos descargar e instalar la implementaci�n de referencia del API JAXP, que es requerido para construir la distribuci�n fuente de Struts. En aplicaciones web basadas en Struts, podr�amos reemplazar las clases de la implementaci�n de referencia con cualquier otro analizador compatible con JAXP, como Xerces.
- Xalan XSLT Processor - Si estamos construyendo Struts desde la distribuci�n fuente, debemos descargar e instalar la versi�n 1.2 (se han reportado problemas con la versi�n 2.0 de Xalan) del procesador XSLT Xalan (que tambi�n incluye el analizador XML Xerces), o usar la versi�n de Xalan incluida en la versi�n 1.1 de JAXP. Este procesador es usado para convertir la documetnaci�n de Struts de su formato interno basado en XML al formato HTML que se presenta en la documentaci�n de la aplicaci�n Struts.
�Construir Struts desde el C�digo Fuente
Primero descargamos una distribuci�n fuente de Struts siguiendo las instrucciones de aqu�. Despu�s debemos asegurarnos de haber descargado e instalado todos los paquetes de software de la secci�n prerequisitos
Para construir Struts, necesitaremos personalziar el proceso de construcci�n con los detalles de nuestro entorno de desarrollo seg�n lo siguiente:
- La distribuci�n fuente de Struts usa un fichero llamado build.properties ( en el directorio de m�s alto nivel de la distribuci�n) para identificar la localizaci�n de componentes externos de los que depende Struts.
- No hay un fichero build.properties incluido con la distribuci�n fuente. Sin embargo, hay un fichero de ejemplo llamado build.properties.example que podemos copiar como build.properties y luego personalizarlo.
- Las propiedades que debemos configurar en build.properties son:
- catalina.home - Pathname al directorio de nuestra disribuci�n binaria de Tomcat 4.0 (requerido s�lo si deseamos usar la fuente deploy.catalina).
- servletapi.home - Pathname al directorio de nuestra distribuci�n binaria de las clases del API Servlet.
- tomcat.home - Pathname al directorio de la distribuci�n binaria de Tomcat 3.2 (s�lo si deseamos utilizar la fuente deploy.tomcat).
- xerces.home - Pathname al directorio de la distribuci�n binaria del analizador Xerces, versi�n 1.2 o 1.3 (requerido s�lo si deseamos usar la fuente deploy.catalina).
- Si somos un desarrollador Struts con acceso de escritura al repositorio CVS, nos aseguramos de no marcarlo en la copia del fichero build.properties, ya que ser� diferente para cada desarrollador individual.
Para construir una versi�n "distribuci�n" de Struts, primero cambiamos nuestro directorio actual al directorio en el que hemos desempaquetado la distribuci�n fuente de Struts, y (si es necesario) creamos o personalizadmos el fichero build.properties como se describre arriba. Luego tecleamos:
ant dist
Este comando crear� una distribuci�n binaria de Struts, en un directorio llamado dist (en relaci�n a desde donde lo compilamos). Este directorio contiene una r�plica exacta de los ficheros incluidos en la distribuci�n binaria de Struts.
NOTA IMPORTANTE: El fichero struts.jar debe estar en nuestro classpath cuando compilemos Struts. El build.xml hace esto autom�ticamente. Si usamos nuestra m�quina de desarrollo para probar localmente la aplicaci�n Struts, debemos asegurarnos de que stuts.jar no est� en nuestro classpath cuado se ejecute el contenedor.
�Instalar un Distribuci�n Binaria de Struts
Primero descargamos una distribuci�n fuente de Struts siguiendo las instrucciones de aqu�. Despu�s debemos asegurarnos de haber descargado e instalado todos los paquetes de software de la secci�n prerequisitos
Desempaquetamos la distribuci�n binaria de Struts dentro de un directorio conveniente. (Si construimos Struts desde la distribuci�n fuente, el resultado ya est�ra en una distribuci�n binaria desempaquetada). La distribuci�n consta de los siguientes contenidos:
- lib/struts.jar - Este fichero JAR contiene las clases Java incluidas en Struts. Deber�a copiarse en el directorio WEB-INF/lib de nuestra aplicaci�n Web.
CUIDADO: - Si vamos a hospedar m�ltiples apliaciones basadas en Struts en el mismo contenedor de servlets, podr�amos vernos tentados a poner el fichero struts.jar en el repositorio compartido sportado por nuestro contenedor. Debemos estar avisados de que hacer esto causar� que nos encontremos problemas de ClassNotFoundException a menos que todas las clases de las aplicaciones est�n almacenadas en el mismo repositorio compartido. - lib/struts*.tld - Estos son ficheros "descriptores de librer�as de etiquetas" que describen las etiquetas personalizadas en las distintas librer�as de Struts. Deber�an copiarse en el directorio WEB-INF de nuestra aplicaci�n web.
- webapps/struts-blank.war - Este es un simple fichero "web application archive" que contiene un punto de entrada b�sico para construir nuestras aplicaciones basadas en Struts.
- webapps/struts-documentation.war - Es un fichero "web application archive" que contiene toda la documentaci�n sobre Struts encontrada en la web site de Struts (incluyendo est�s p�ginas). Podemos instalar esta aplicaci�n web sobre cualquier contenedor Servlet compatible con el API Servlet 2.2 o posterior.
- webapps/struts-example.war - Este es un ejemplo de aplicaci�n web que usa un gran porcentaje de las caracter�sticas de Struts. Podemos instalar esta aplicaci�n web en cualquier contenedor servlet compatible con las especificaciones Servlet 2.2 (o posterior) y JSP 1.1 (o posteriores). Si no tenemos disponible ning�n analizador XML para las aplicaciones Web en nuestro contenedor, necesitaremos a�adir uno al directorio WEB-INF/lib de esta aplicaci�n web.
- webapps/struts-exercise-taglib.war - una aplicaci�n web que contiene p�ginas de prueba para varias etiquetas personalizadas soportadas por Struts. Esta pensado para su uso por desarrolladores que quieren ampliar las librer�as personalizadas de Struts, pero podr�a ser �til como un simple ejemplo del uso de varias etiquetas Struts.
- webapps/struts-template.war - Esta aplicaci�n web presenta y desmuestra las etiquetas de plantillas de Struts.
- webapps/struts-upload.war - Esta aplicaci�n web es un r�pido ejemplo para subir ficheros usando el marco de trabajo Struts.
Para usar Struts en nuestra aplicaci�n, necesitamos seguir estos pasos:
- Copiar el fichero lib/struts.jar desde la disribuci�n de Struts al directorio WEB-INF/lib de nuestra aplicaci�n web.
- Copiar todos los ficheros que correspondan con lib/struts*.tld desde la distribuci�n de Struts al directorio WEB-INF de nuestra aplicaci�n web.
- Modificar el fichero WEB-INF/web.xml de nuestra aplicaci�n web para incluir un elemento <servlet> que defina el servlet controlador, y un elemento <servlet-mapping> que establezca que URIs solicitadas ser�n mapeadas a este servlet, Usamos el fichero WEB-INF/web.xml del ejemplo de aplicaci�n Struts para ver la sintaxis requerida.
- Modificar el fichero WEB-INF/web.xml de nuestra aplicaci�n para incluir las siguientes declaraciones de librer�as de etiquetas:
<taglib> <taglib-uri>/WEB-INF/struts-bean.tld</taglib-uri> <taglib-location>/WEB-INF/struts-bean.tld</taglib-location> </taglib> <taglib> <taglib-uri>/WEB-INF/struts-html.tld</taglib-uri> <taglib-location>/WEB-INF/struts-html.tld</taglib-location> </taglib> <taglib> <taglib-uri>/WEB-INF/struts-logic.tld</taglib-uri> <taglib-location>/WEB-INF/struts-logic.tld</taglib-location> </taglib> <taglib> <taglib-uri>/WEB-INF/struts-template.tld</taglib-uri> <taglib-location>/WEB-INF/struts-template.tld</taglib-location> </taglib>
- Crear un fichero WEB-INF/struts-config.xml que defina los mapeos de action y otras caracter�sticas de nuestra aplicaci�n. Podemos usar el fichero struts-config.xml del ejemplo de aplicaci�n Struts para ver la sintaxis requerida.
- Al principio de cada p�gina JSP que use las etiquetas personalizadas de Struts, a�adimos las l�neas declarando las librer�as Struts a utilizar en esa p�gina particular, como esta:
<@ taglib uri="/WEB-INF/struts-bean.tld" prefix="struts-bean" %> <@ taglib uri="/WEB-INF/struts-html.tld" prefix="struts-html" %> <@ taglib uri="/WEB-INF/struts-logic.tld" prefix="struts-logic" %> <@ taglib uri="/WEB-INF/struts-template.tld" prefix="struts-template" %>
- Cuando compilemos las clases Java que comprenden nuestra aplicaci�n, debemos asegurarnos de incluir el fichero struts.jar (copiado anteriormente) en el CLASSPATH que es enviado al compilador.
�Instalar Struts con nuestro Contenedor de Servlets
| CUIDADO: - NO debemos a�adir el fichero struts.jar al classpath de nuestro contenedor de servlets en un intento de evitar situarlo en el directorio /WEB-INF/lib individual de cada aplicaci�n. Hacer esto causar� que nos encontremos problemas de ClassNotFoundException. |
Para la mayor�a de los contenedores, s�lo necesitaremos:
- Copiar los ficheros WAR en nuestro directorio /webapp Struts al directorio webapps de nuestro contenedor.
- En algunos casos, necesitaremos reiniciar nuestro contenedor si se est� ejecutando.
A contiuaci�n podremos ver el estado de varios contenedores.
�Bluestone Universal Business Server 7.2
- Necesitamos UBS versi�n 7.2 para ejecutar ficheros de aplicaci�n war. Aqu� puedes encontrar la versi�n de evaluaci�n de UBS 7.2.2.
Si estamos usando la versi�n, 7.2.1, necesitaremos descarga el patch de ficheros WAR, localizado aqu�
- Despu�s de la instalaci�n de la correcta versi�n y/o patch de UBS 7.2, necesitamos modificar el fichero apserver.txt para que apunte al directorio correcto de nuestros ficheros war de aplicaciones. Busca la secci�n que dice algo similar a esto:
[SaServletEngine.class] session_affinity=1 type=1 program=/SaServletEngine.class file_path=f:\webapps host=localhost:20000
- Usamos el directorio especificado por la variable "file_path", o lo modificamos para apuntar a nuestro directorio webapp personalizado. Copiamos los ficheros struts-documention.war y struts-example.war dentro del directorio webapp, y arrancamos UBS. Nuestras aplicaciones web son ahora accesibles desde las siguientes URLs:
http://localhost/<PLUGIN>/SaServletEngine.class/struts-example/ http://localhost/<PLUGIN>/SaServletEngine.class/struts-documentation/
- Nota: <PLUGIN> representa el pluging que hemos usado para nuestro servidor web especifico. Para Apache sobre Winodws, podr�a ser "cgi-bin/SaCGI.exe", para IIS sobre Windows, podr�a ser "scripts/SaCGI.exe" o "scripts/ISAPI.dll". Consulta la documentaci�n de UBS para m�s informaci�n.
�Borland Application Server 4.5
No requiere pasos adicionales.
�iPlanet Application Server
Se recomienda el Service Pack 2.
Observa que el objeto de base de datos de la aplicaci�n de ejemplo de Struts no es compatible con este contenedor.
�iPlanet Web Server
Se recomienda el Service Pack 2.
Nota: Por el momento, la aplicaci�n de ejemplo Struts todav�a usa un atributo de contexto servlet no-serializable, y no se ejecutar� en un entorno que los requeirea, como iPlanet Application Server.
iPlanet Web Server 4.2
Aqu� est�n los problemas que me he encontrado cuando mov�a mis aplicaciones basadas en Struts desde Tomcat (que soporta WebApps y WAR) a iWS 4.1 (que NO soporta Webapps y WAR).
Webapps y WAR se soportar�n en iWS 5.0, como se menciona en el iWS5.0 roadmap.
- Problemas de Classpath:
Esta bastante correcto. Como no hay noci�n de WEB-INF/lib y WEB-INF/classes el classpath debe seleccionarse expl�citametne en $SERVER_ROOT/config/jvm12.conf.
- Paths relativos al contexto:
Todas las URLs deber�an ser visibles desde el documento ra�z. En mi caso s�lo cree un enlace simb�lico desde $DOCROOT/myapp hacia webapps/myapp.
- Mapeos de Extensi�n:
El fichero de configuraci�n $SERVER_ROOT/config/rules.properties tiene un mecanismo similar a web.xml.
Yo tengo esto en mi rules.properties lo que reenvia todas las URLs que terminan en "do" al servlet cuyo nombre l�gico es action.
#### @.*[.]do$=action ####
�iPortal Application Server
Probado con: Windows 2000
|
Nota importante:
Por el momento, iPAS 1.3 no es totalmente compatible con la especificaci�n JSP 1.1/1.2 |
Espec�ficamente, no se han implementado la conversi�n autom�tica de tipos para par�metros de etiquetas personalizadas.
Mientras tanto, las p�ginas JSP que hacen uso de las librer�as de etiquetas Struts cuyos par�metros requieren conversi�n (como los booleanos) no se compilar�n bajo iPAS. Esto incluye la aplicaci�n de ejemplo se Struts. Itentar ejecutar la aplicaci�n de ejemplo resultar� en el lanzamiento de una excepci�n similar a esta:
/struts-example/index.jsp:
Compilation failed [IT_Builder:1000]
at com.iona.j2ee.builder.JavaBuilder.build(JavaBuilder.java:84)
at com.iona.j2ee.builder.JspBuilder.build(JspBuilder.java:51)
at com.iona.j2ee.builder.WarBuilder.build(WarBuilder.java:111)
at com.iona.j2ee.builder.EarBuilder.build(EarBuilder.java:99)
at com.iona.j2ee.builder.EarBuilder.main(EarBuilder.java:223)
at iportal.build.main(build.java:14)
ocale(boolean) in org.apache.struts.taglib.html.HtmlTag
cannot be applied to (java.lang.String)
_x0.setLocale("true");
^
1 error
Las siguientes instrucciones describen c�mo instalar la aplicaci�n de ejemplo de Struts bajo iPAS 1.3.
Las siguientes instrucciones asumen que:
- Se ha instalado iPortal Application Server 1.3.
- Tanto las librer�as Struts como del Parser XML est�n en nuestro classpath.
Instalar la aplicaci�n de ejemplo Struts
- Arrancamos iPAS Services pulsando sobre el �tem de men� [Start iPAS Services].
- Arrancampos el iPortal Application Server pulsando sobre el �tem de men� [iPortal Application Server].
- Arrancamos un shell de l�nea de comandos. Cambiamos al $INSTALLDIR\IONA y ejecutamos el fichero setenvs.bat.
- Creamos un directorio llamado jars.
Ahora ejecutamos la herramienta EARSCO. Tecleamos java iportal.earsco y en los prompts hacemos:
- Next
- Tecelamos el nombre de la aplicaci�n struts-example y pulsamos next.
- En el paso tres pulsamos el check box e introducimos el nombre del fichero WAR struts-example. Luego pulsamos next.
- Pulsamos sobre Finish.
Ahora debemos copiar los contenidos de struts-example war dentro de la estructura de directorio EARSCO como sigue:
Bajo $INSTALLDIR\IONA\jars\struts-examples\src\struts-example.war copiamos los contenidos de los siguientes directorios: etc, lib, src y web.
- Copiamos todos los ficheros del directorio ra�z
$INSTALLDIR\jakarta-tomcat-3.2.1\webapps\struts-example\WEB-INF
en el directorio earsco
$INSTALLDIR\IONA\jars\struts-examples\src\struts-example.war\etc
No copiamos en los directorios classes o lib. - Copiamos el directorio
$INSTALLDIR\jakarta-tomcat-3.2.1\webapps\struts-example\WEB-INF\lib
dentro del directorio earsco
$INSTALLDIR\IONA\jars\struts-examples\src\struts-example.war\lib - Copiamos el directorio
$INSTALLDIR\jakarta-tomcat-3.2.1\webapps\struts-example\WEB-INF\classes
dentro del directorio earsco
$INSTALLDIR\IONA\jars\struts-examples\src\struts-example.war\src - Copiamos el directorio
$INSTALLDIR\jakarta-tomcat-3.2.1\webapps\struts-example
dentro del directorio earsco
$INSTALLDIR\IONA\jars\struts-examples\src\struts-example.war\web - Luego modificamos el application.xml en el directorio
$INSTALLDIR\IONA\jars\struts-examples\etc a esto:<application> <!-- Add display name --> <display-name>Struts Example</display-name> ....... - Por �ltimo actualizamos el fichero cc.xml del directorio
$INSTALLDIR\IONA\jars\struts-examples de esta forma:<configuration> <web-app> <context-root>struts-example</context-root> </web-app> </configuration>
Ahora estamos listos para compilar y desplegar struts-example.
Para compilar el c�digo fuente de $INSTALLDIR\IONA\jars\struts-examples tecleamos:
java iportal.build
Luego tecleamos:
java iportal.deploy
La primera vez que despleguemos se nos pedir� que suministremos las localizaciones de los ficheros struts-example.ear y cc.xml. Una vez satisfechos ambos elementos continuamos hasta el bot�n finish y lo puslamos. El fichero EAR se deber�a desplegar satisfactoriamente.
Probamos la aplicaci�n de ejemplo usando la siguiente URL en el navegador:
http://hostname:9000/struts-example/index.jsp
El fichero struts-documentation.war se puede instalar usando el mismo procedimiento.
Parchear la aplicaci�n de ejemplo de Struts
Como se mencion� al principio de estas notas, la aplicaci�n de ejemplo de Struts no funciona bajo iPAS 1.3 sin modificarla. Necesitamos hacer los siguientes cambios_
- index.jsp, logon.jsp: Cambiamos <html:html locale="true"> a <html:html locale=<%= true %>>
- registration.jsp, subscription.jsp: Cambiamos todos los ejemplares de filter="true" a filter=<%= true %>
�Jetty Java HTTP Servlet Server
Jetty es un peque�o servidor HTTP puro Java y de c�digo abierto que soporta las especificaciones Servlet 2.2 y JSP 1.1. Jetty puede descargarse desde http://www.mortbay.com/jetty.
Los ficheros WAR de Struts funcionan casi perfectametne cuando los situamos en el directorio webapps de Jetty. El �nico paso adicional necesario es a�adir una entrada a cada fichero WAR para que el fichero de configuraci�n del servidor Jetty pueda mapear las solicitudes de paths apropiadadas a las aplicaciones web Struts (usando "<Call name="addWebApplication">...").
Por eso por ejemplo, si hemos copiado los ficheros WAR que vienen con la distribuci�n binaria de Struts en un subdirectorio de "%JETTY_HOME%/webapps" llamado "%JETTY_HOME%/webapps/struts" por eso que
- %JETTY_HOME%/webapps/struts/struts-documentation.war - %JETTY_HOME%/webapps/struts/struts-example.war - %JETTY_HOME%/webapps/struts/struts-exercise-taglib.war - %JETTY_HOME%/webapps/struts/struts-template.war - %JETTY_HOME%/webapps/struts/struts-upload.war - %JETTY_HOME%/webapps/struts/struts-blank.war
y si queremos ejecutar Jetty usando el fichero de configuraci�n demo.xml que viene con Jetty, s�lo tenemos que a�adirle los siguientes bloques en cualquier lugar despu�s de que se declaren los Listeners.
<!-- Jetty config for Struts BEGIN -->
<Call name="addWebApplication">
<Arg>/struts/struts-documentation/*</Arg>
<Arg><SystemProperty name="jetty.home"
default="."/>/webapps/struts/struts-documentation.war</Arg>
<Arg><SystemProperty name="jetty.home"
default="."/>/etc/webdefault.xml</Arg>
<Arg type="boolean">false</Arg> <!-- if true,
expand war in temp dir -->
</Call>
<Call name="addWebApplication">
<Arg>/struts/struts-example/*</Arg>
<Arg><SystemProperty name="jetty.home"
default="."/>/webapps/struts/struts-example.war</Arg>
<Arg><SystemProperty name="jetty.home"
default="."/>/etc/webdefault.xml</Arg>
<Arg type="boolean">true</Arg> <!-- if true,
expand war in temp dir -->
</Call>
<Call name="addWebApplication">
<Arg>/struts/struts-exercise-taglib/*</Arg>
<Arg><SystemProperty name="jetty.home"
default="."/>/webapps/struts/struts-exercise-taglib.war</Arg>
<Arg><SystemProperty name="jetty.home"
default="."/>/etc/webdefault.xml</Arg>
<Arg type="boolean">false</Arg> <!-- if true,
expand war in temp dir -->
</Call>
<Call name="addWebApplication">
<Arg>/struts/struts-template/*</Arg>
<Arg><SystemProperty name="jetty.home"
default="."/>/webapps/struts/struts-template.war</Arg>
<Arg><SystemProperty name="jetty.home"
default="."/>/etc/webdefault.xml</Arg>
<Arg type="boolean">true</Arg> <!-- if true,
expand war in temp dir -->
</Call>
<Call name="addWebApplication">
<Arg>/struts/struts-upload/*</Arg>
<Arg><SystemProperty name="jetty.home"
default="."/>/webapps/struts/struts-upload.war</Arg>
<Arg><SystemProperty name="jetty.home"
default="."/>/etc/webdefault.xml</Arg>
<Arg type="boolean">true</Arg> <!-- if true,
expand war in temp dir -->
</Call>
<Call name="addWebApplication">
<Arg>/struts/struts-blank/*</Arg>
<Arg><SystemProperty name="jetty.home"
default="."/>/webapps/struts/struts-blank.war</Arg>
<Arg><SystemProperty name="jetty.home"
default="."/>/etc/webdefault.xml</Arg>
<Arg type="boolean">true</Arg> <!-- if true,
expand war in temp dir -->
</Call>
<!-- Jetty config for Struts END -->
�JRUN 3.0 SP2A, VERSION 3.02A.11614 -- Probado con Microsoft IIS 5.0, Windows 2000
|
Nota importante:
Por el momento, JRUN no es totalmente compatible con la especificaci�n JSP 1.1/1.2 |
Espec�ficamente, no se han implementado la conversi�n autom�tica de tipos para par�metros de etiquetas personalizadas.
Mientras tanto, las p�ginas JSP que hacen uso de las librer�as de etiquetas Struts cuyos par�metros requieren conversi�n (como los booleanos) no se compilar�n bajo JRun. Esto incluye la aplicaci�n de ejemplo se Struts. Itentar ejecutar la aplicaci�n de ejemplo resultar� en el lanzamiento de una excepci�n similar a esta:
/struts-example/index.jsp: javax.servlet.ServletException: Compilation error occured: allaire.jrun.scripting.DefaultCFE: Errors reported by compiler: c:/JRun/servers/default/Struts Example/WEB-INF/jsp/jrun__index2ejspa.java:41:1:41:27: Error: No match was found for method "setLocale(java.lang.String)".
Las siguientes instrucciones describen c�mo instalar la aplicaci�n de ejemplo de Struts bajo JRun.
Las instrucciones asumen que:
- JRun ha sido instalado e integrado con el servidor web de nuestra elecci�n.
- $APP_SERVER_NAME es el nombre del servidor de aplicaci�n usado para hospedar la aplicaci�n (Cuando JRun se instal� por primera vez, creo un servidor de aplicaciones llamando JRun Default Server).
- $APP_SERVER_DIR es el directorio usado para contener las aplicaciones hospedadas por $APP_SERVER_NAME. Para el JRun Default Server, el directorio es $JRUN_HOME/servers/default donde $JRUN_HOME es el directorio donde est� instalado JRun.
Instalar la aplicaci�n de ejemplo de Struts
- Entramos en la consola de control de JRun.
- En el panel izquierdo, seleccionamos $APP_SERVER_NAME. Una p�gina mostrar� el estado actual del servidor en el panel derecho.
- En el panel derecho, pulsamos sobre el enlace WAR Deployment. Se mostrar� una p�gina que contiene una lista de aplicaciones Web desplegadas actualmente.
- En el panel dereco, pulsamos sobre Deploy an Application. Completamos el formulario Web Application Information de esta forma:
- Servlet War File or Directory: Introducimos el path completo donde se encuentra struts-example.war o pulsamos sobre Browse para seleccionar el path.
- JRun Server Name: $APP_SERVER_NAME
- Application Name: StrutsExample.
- Application Hosts: All Hosts.
- Application URL: /struts-example.
- Application Deploy Directory: por defecto ser� $APP_SERVER_NAME/Struts Example (o el nombre especificado para Application Name).
- Una vez completado el formulario, pulsamos el bot�n Deploy.
- Si el despliegue tiene �xito, reiniciamos el servidor de aplicaciones pulsando sobre $APP_SERVER_NAME en el panel izquierdo. Se mostrar� una p�gina con el estado actual del servidor en el panel derecho. Pulsamos sobre el bot�n Restart Server para reiniciar el servidor.
- Probamos la aplicaci�n de ejemplo usando la siguiente URL en el navegador:
http://hostname/struts-example/index.jsp
La aplicaci�n struts-documentation.war puede instalarse usando el mismo procedimiento.
Instalar Aplicaciones Web Desempaquetadas
Los pasos de arriba deber�an seguirse para aplicaciones desplegadas como ficheros *.war.
Para aplicaciones Web desempaquetadas, la configuraci�n implica los siguientes pasos:
- Desde la Consola de Control de JRun, seleccionamos $APP_SERVER_NAME (en el panel izquierdo) y pulsamos sobre WAR Deployment (en el panel derecho).
- En el panel derecho, pulsamos sobre Create an Application y completamos el fomulario Web Application Information de esta forma:
- JRun Server Name: $APP_SERVER_NAME.
- Application Name: myApplication.
- Application Hosts: All Hosts.
- Application URL: /myApplication.
- Application Deploy Directory: por defecto ser�
$APP_SERVER_NAME/myApplication
- Pulsamos sobre Create para enviar el formulario.
- Una vez creada la aplicaci�n, instalamos y configuramos los componentes Struts (struts.jar, Struts*.tld, etc.) para la aplicaci�n Web bajo $APP_SERVER_NAME/myApplication/WEB-INF.
- Instalamos el resto de los componentes de la aplicaci�n: ficheros .class, p�ginas JSP, ficheros .properties etc, seg�n sean necesarios.
- Para configurar el mapeo de extensi�n de la URI solicitada (por ejemplo, *.do) al servlet action, expandimos $APP_SERVER_NAME en el panel izquierdo, en el mismo panel, expandimos la rama Web Applications y pulsamos sobre myApplication. El panel derecho mostrar� las opciones de configuraci�n para myApplication. Pulsamos sobre Servlet URL Mappings. Se mostrar� una lista de mapeos existentes. Pulsamos sobre el bot�n Edit y creamos la siguiente entrada:
- Virtual Path/Extension: *.do
- Servlet Invoked: action.
- Pulsamos sobre el bot�n Update para grabar los campos.
- Reiniciamos el servidor de aplicaciones.
- Ahora la aplicaci�n deber�a ser accesible desde el navegador.
El servidor de aplicaciones JRun debe reiniciarse cada vez que se hace uno de estos cambios en la aplicaci�n Web:
- Se modifican los ficheros .class o .jar.
- Se modifican los ficheros .properties.
- Se modifican los ficheros .xml.
Parchear la aplicacion de ejemplo Struts
Como se mencion� al principio de estas notas, la aplicaci�n de ejemplo de Struts no funciona bajo JRun sin modificarla. Necesitamos hacer los siguientes cambios:
- index.jsp, logon.jsp: Cambiamos <html:html locale="true"> a <html:html locale=<%= true %>>
- registration.jsp, subscription.jsp: Cambiamos todos los ejemplares de filter="true" a filter=<%= true %>
�Orion Application Server
En los siguientes pasos, $ORION_HOME se refiere al directorio en el que hemos instalado Orion, y $STRUTS_HOME es el directorio en el que hemos desempaquetado la distribuci�n binaria de Struts
- Modificamos el fichero $ORION_HOME/config/application.xml para definir las dos nuevas aplicaciones, a�adiendo las siguientes declaraciones inmediatamente despu�s de la directiva web-module para la aplicaci�n Web por defecto:
<web-module id="strutsDoc" path="$STRUTS_HOME/webapps/struts-documentation.war"/> <web-module id="strutsExample" path="$STRUTS_HOME/webapps/struts-example.war"/>
- Modificamos el fichero $ORION_HOME/config/default-web-site.xml (o el fichero de configuraci�n para cualquier otra web site Orion) para incluir las siguientes declaraciones:
<web-app application="default" name="strutsDoc" root="/struts-documentation"/> <web-app application="default" name="strutsExample" root="/struts-example"/>
- Despu�s de arrancar Orion, deber�amos poder acceder a estas aplicaciones (asumiendo que no hemos cambiado el n�mero de puerto por defecto: 80 ) en
http://localhost/struts-documentation http://localhost/struts-example
- Las versiones de Orion hasta la 1.0.3 tiene un bug relacionado con llamadas a ServletContext.getResource() que evita que la aplicaci�n de ejemplo de Struts funcione sin modificaciones. Esto se manifiesta como un error JSP cuando intentamos acceder a la aplicaci�n de ejemplo, con el siguiente mensaje:
javax.servlet.jsp.JspException: Missing resources attributeorg.apache.struts.action.MESSAGE
seguido por seguimietno de error. Tambi�n habr� un mensaje de error de inicializaci�n en el fichero de log ORION_HOME/log/global-application.log. Para evitar este probelma, podemos seguir estos pasos:
- Vamos al directorio $STRUTS_HOME/webapps, donde observamos que Orion ha expandido autom�ticamente cada aplicaci�n web en una estructura de directorios descomprimida.
- Vamos al directorio $STRUTS_HOME/webapps/struts-example/WEB-INF, y copiamos el fichero struts-config.xml un directorio m�s arriba (es decir, dentro de $STRUTS_HOME/webapps/struts-example).
- Modificamos el fichero $STRUTS_HOME/webapps/struts-example/WEB-INF/web.xm, cambiando el valor del par�metro "config" (para el servlet action) de /WEB-INF/struts-config.xml a /action.xml.
- Reiniciamos Orion, y deber�amos poder acceder a la aplicaci�n de ejemplo.
- Observa que este atajo tiene un efecto colateral negativo con respecto al a seguridad: nuestro fichero struts-conifig.xml ahora puede ser recuperado por clientes remotos en la siguiente URL:
http://localhost/struts-example/struts-config.xml
Por lo tanto, deber�amos asegurarnos de no guardar informaci�n sensible (como passwords de bases de datos) en este fichero.
�Resin 1.2+ "standalone"
No requiere pasos adicionales.
�SilverStream 3.7.1 y posteriores
- Arrancamos el Servidor de Aplicaciones SilverStream.
- Creamos un plan de despliegue XML para la aplicaci�n "struts-example.war". Llamamos al fichero "struts-example-depl-plan.xml". Podemos usar los siguientes contenidos para el fichero:
----- cut here ----- <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE warJarOptions PUBLIC "-//SilverStream Software, Inc.//DTD J2EE WAR Deployment Plan//EN" "deploy_war.dtd"> <warJarOptions> <warJar> <warJarName>struts-example.war</warJarName> <isEnabled>true</isEnabled> <urls><el>struts-example</el></urls> </warJar> </warJarOptions> ----- cut here -----
- Creamos un plan de despliegue XML para la aplicaci�n "struts-documentation.war". Llamamos al fichero
"struts-documentation-depl-plan.xml". Podemos usar los siguientes contenidos para el fichero:
---- cut here ----- <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE warJarOptions PUBLIC "-//SilverStream Software, Inc.//DTD J2EE WAR Deployment Plan//EN" "deploy_war.dtd"> <warJarOptions> <warJar> <warJarName>struts-documentation.war</warJarName> <isEnabled>true</isEnabled> <urls><el>struts-documentation</el></urls> </warJar> </warJarOptions> ----- cut here -----
- Ejecutamos los siguientes comandos "SilverCmd DeployWAR" para desplegar las aplicaciones. Podemos cambiar 'localhost' por el servidor en el que estemos desplegando. Tambi�n podemos cambiar 'Silvermaster' por la base de datos que estamos desplegando:
SilverCmd DeployWar localhost Silvermaster Struts-example.war -f Struts-example-depl-plan.xml SilverCmd DeployWar localhost Silvermaster Struts-documentation.war -f Struts-documentation-depl-plan.xml
�Tomcat 3.1 y Anteriores
No recomendados, usar Tomcat 3.2.1 o posteriores.
�Tomcat 3.2.1 con Apache
Observa que las instrucciones para Tomcat 4 ser�n diferentes de las de Tomcat 3, pero el conector web de Tomcat 4.0 todav�a est� en desarrollo. Las versiones de Tomcat anteriores a la 3.2.1 no se recomiendan para su uso com Struts.
Estas instrucciones asumen que hemos integrado perfectamente Tomcat con Apache de acuerdo a la documentaci�n de Tomcat.
- Copiamos "struts-documentation.war" y "struts-example.war" a nuestro directorio $TOMCAT_HOME/webapps.
- Reniciamos Tomcat si se estaba ejecutando.
- Tomcat generar� un fichero $TOMCAT_HOME/conf/tomcat-apache.conf que ser� usado por Apache. Este fichero se regenera cada vez que arrancamos Tomcat, por eso copiamos este fichero a un lugar seguro (como en nuestro directorio de configuraci�n de Apache; sobre sistemas UNIX normalmente es /usr/local/apache/conf.
- Si est�mos ejecutando Tomcat 3.1, no generar� las entradas para nuestras nuevas aplicaciones. A�adimos las siguientes l�neas al fichero tomcat-apache.conf que hemos grabado, reemplazando $TOMCAT_HOME con el path de nuestro directorio home de Tomcat:
Alias /struts-documentation "$TOMCAT_HOME/webapps/struts-documentation <Directory "$TOMCAT_HOME/webapps/struts-documentation> Options Indexes FollowSymLinks </Directory> ApJServMount /struts-documentation/servlet /struts-documentation <Location "/struts-documentation/WEB-INF/"> AllowOverride None deny from all </Location> Alias /struts-example "$TOMCAT_HOME/webapps/struts-example" <Directory "$TOMCAT_HOME/webapps/struts-example> Options Indexes FollowSymLinks </Directory> ApJServMount /struts-example/servlet /struts-example <Location "/struts-example/WEB-INF/"> AllowOverride None deny from all </Location> - El fichero generado arriba no sabe nada sobre los mapeos de extensi�n definidos en un fichero web.xml, por eso, las URIs "*.do" que vayan al servlet controlador no ser�n reconicidas. Para corregir esto, a�adimos la siguiente l�nea a la versi�n grabada de "tomcat-apache.conf", depu�s de la l�nea correspondiente a la extensi�n .jsp:
AddHandler jserv-servlet .do
- Nos aseguramos de que la versi�n grabada de "tomcat-apache.conf" es referenciada en nuestro fichero de configuraci�n de Apache httpd.conf. Un uso t�pico ser�a tener la siguiente l�nea en la parte inferior de httpd.conf:
Include /usr/local/apache/conf/tomcat-apache.conf
- Para poder reconocer index.jsp como la p�gina por defecto para aplicaciones web, buscamos en nuestro httpd.conf una directiva DirectoryIndex. Si tenemos una. a�adimos index.jsp al final de la lista, que se podr�a parecer a esta:
DirectoryIndex index.html index.jsp
Si no tenemos dicha entrada, a�adimos una como esta:
DirectoryIndex index.jsp
- Reiniciamos Apache para hacer que tenga en cuenta las nuevas aplicaciones. Ahora deber�amos poder acceder a las aplicacioens desde un navegador con estas URLs:
http://localhost/struts-documentation http://localhost/struts-example
�Tomcat 3.2.1 + "standalone"
No requiere pasos adicionales.
�Tomcat 4.0
No requiere pasos adicionales.
�Weblogic 5.1 (Service Pck 8)
- Obtener e instalar el analizador XML Xerces (se han reportado problemas con la implementaci�n de referencia de Sun). Poner xerces.jar en el path de nuestro sistema WebLogic.
- Obtener y despempaquetar la distribuci�n binaria de Struts (esto procedimiento asume que se ha extra�do en c:\jakarta-struts).
- a�adir una entrada la fichero weblogic.properties por cada aplicaci�n web Struts que queramos configurar. Por ejemplo, para hacer disponible la aplicaci�n struts-example a�adimos la siguiente l�nea a weblogic.properties:
weblogic.httpd.webApp.strutsexample= c:/jakarta-struts/webapps/struts-example.war - No necesitamos incluir struts.jar o cualquier de las clases espec�ficas de la aplicaci�n en el classpath de WebLogic, ya que se esto se har� autom�ticamente (a menos que despleguemos un archivo web desempaquetado).
- Arrancamos el Servidor WebLogic y apuntamos nuestro navegador web a la aplicaci�n Struts. Por ejemplo, para conectar con el aplicaci�n de ejemplo a�adida en el paso anterior:
http://localhost:7001/strutsexample
- Esta aplicaci�n de ejemplo depende de que est� presente el fichero de recursos espec�ficos de Struts ApplicationResources.properties en el classpath. Sin embargo, WebLogic, s�lo extrae los ficheros *.class desde el archivo por eso este fichero no ser� encontrado, resultando en un error la primera vez que sea necesitado-- algo similar a:
javax.servlet.ServletException: runtime failure in custom tag 'message'.
- Extraemos el fichero ApplicationResources.properties desde el fichero *.war, y lo copiamos manualmente en el directorio _tmp_war_ WebLogic creado para esta aplicaci�n. De nuevo, refiriendose a la aplicaci�n struts-example, esto ser�a:
c:\jakarta-struts\webapps\WEB-INF\_tmp_war_strutsexample
- Reiniciamos webLogic. Ahora podemos ejecutar la aplicaci�n:
http://localhost:7001/strutsexample
Los pasos de arriba se deber�an seguir para aplicaciones desplegadas como ficheros *.war. Para aplicaciones web desempaquetadas, la configuracion implica a�adir struts.jar y /WEB-INF/classes al claspath de WebLogic. Por esta razon, sugiero desplegar las aplicaciones como ficheros war en WebLogic. Sin embargo la misma aplicaci�n de ejemplo puede desplegarse satisfactoriamente en formato expandido modificando weblogic.properties (asumiendo que el fichero war fue estra�do al directorio webapps/struts-example):
weblogic.httpd.webApp.strutsexample=
c:/jakarta-struts/webapps/struts-example/
Y arrancado WebLogic con el classpath actualizado. Por ejemplo:
c:\jdk1.3\bin\java -ms16m -mx64m
-classpath c:\weblogic\lib\weblogic510sp8boot.jar;
Recomendaciones Adicionales
- Se deber�a desactivar la recarga de Servlets y JSP. Primero, lo pagamos con una bajada de rendimiento. Dependiendo del n�mero de JSPs, el n�mero de solicitudes y el intervalo de chequeo configurado, el servidor ir� m�s lento. Segundo, con la recarga de JSP y servlets, uno abre la puerta de varios problemas de los cargadores de clases WebLogic, que son d�ficiles de diagnosticar, d�ficiles de manejar y frecuentemente acaban con la perdida de sesiones HTTP.
- Seleccionamos el nombre de la sessionid a JSESSIONID, si se usan las cookies para el seguimiento de sesi�n y a jsessionid, si las sesiones est�n basadas en URL. (Hay problemas adicionales relacionados con las sesiones basadas en URL, cuasados por la forma en que BEA codifica el id de la sesi�n (incompatible con J2EE). Especialmente <bean:include> no funcionar� con sesiones basadas en URL. Sin embargo, usar el nombre de sesi�n correcto resolver� alguno de estos problemas).
- Configuramos el registro JSP-Servlet en weblogic.properties para una compatibilidad m�xima con J2EE y/o un rendimiento m�ximo.
El JSP-Servlet soporta algunos par�metros de inicializaci�n que pueden ser personalizados para obtener un mejor rendimiento, o una mejor depuraci�n:
weblogic.httpd.initArgs.*.jsp=\
pageCheckSeconds=-1,\
setEmptyStrings=false,\
compileCommand=./_jspCompiler_.cmd,\
workingDir=/weblogic/myserver/tmp_classfiles,\
keepgenerated=true,\
debug=true,\
verbose=true
En el ejemplo de arriba, el fichero batch (_jspCompiler_.cmd) invoca a jikes lo que resulta en un tiempo de arrancada mucho m�s r�pido (jikes es como tres veces m�s r�pido que javac). El fichero batch contiene una s�la l�nea
@jikes -g -nowarn %*
Se podr�a utilizar las siguiente configuraci�n cuando se hayan hecho todos los test y una velocidad mayor sea primordial:
weblogic.httpd.initArgs.*.jsp=\
pageCheckSeconds=-1,\
setEmptyStrings=false,\
compileCommand=./_jspCompiler_.cmd,\
workingDir=/weblogic/myserver/tmp_classfiles,\
keepgenerated=false,\
debug=false,\
verbose=false
... junto con ...
@jikes -O -nowarn %*
Weblogic soporta selecciones similares a trav�s de <context-params> en web.xml (Por favor lee los detalles en la �ltima documentaci�n en la site de BEA).
�WebLogic 6.0+
No requiere pasos adicionales.
�WebSphere Application Server 3.5 FixPack 2
- En los pasos de abajo, $WAS_HOME se refiere al directorio en que hemos instalado el servidor de aplicaciones WebSphere, y $STRUTS_HOME es el directorio donde hemos desempaquetado la distribuci�n binaria de Struts.
- WebSphere anteriores a 3.5.2 no soportaban JSP 1.1 y Servlet 2.2, lo que hac�a dificil obtener las funcionalidades de Struts sin masivos cambios de c�digo. Por favor actualiza a 3.5.2 (3.5 con FixPack 2) antes de intentar usar Struts. Puedes ver en http://www.ibm.com/software/webservers/appserv/efix.html como descargar e instalar FixPack 2 para WebSphere 3.5.
- Aviso: Struts no funcionar� con WebSphere 3.5.2 sin modificaciones. Se espera que se hagan las correcciones en WebSphere 3.5.3. Sin embargo, podemos hacer que WebSphere 3.5.2 funcione con Struts.
- Nos aseguramos de que est� arrancado WebSphere Application Server. Bajo Windows NT/2000, es el servicio "IBM WS AdminServer".
- Arrancamos la Consola Administrativa de WebSphere.
- Una vez arrancada, seleccionamos Convert a War File de la opci�n de la barra de tareas, o desde el men� Console->Tasks. Esto har� que se muestre un di�logo del Wizard Convert War File.
- Seleccionamos un Servlet Engine para hospedar la aplicaci�n Web que resultar� de la conversi�n del fichero War, por ejemplo, Default Servlet Engine, expandiendo el �rbol de control bajo los nodos; y pulsamos el bot�n Next.
- Seleccionamos un Host virtual para asociarlos con la aplicaci�n web resultante, por ejemplo, default host. Pulsamos el bot�n Next.
- Pulsamos el bot�n Browse y elegimos el $STRUTS_HOME/webapps/struts-example.war. Pulsamos el bot�n Next.
- Seleccionamos un directorio de destino para la aplicaci�n web resultante, por ejemplo $WAS_HOME/hosts/default_host. Pulsamos el bot�n Next.
- Introducimos un Web Application Web Path, por ejemplo, struts-example, y un Web Application Name, por ejemplo, struts-example. Pulsamos el bot�n Finish.
- Despu�s de una ligera pausa, deber�amos obtener un mensaje con el texto Command "convert war file" completed successfully. Pulsamos Ok.
- Ahora necesitamos a�adir jaxp.jar y un analizador compatible jaxp, por ejemplo, parser.jar desde JAXP 1.0.1 al directorio del a aplicaci�n web, por ejemplo, $WAS_HOME/AppServer/hosts/default_host/struts-example/servlets.
- En este punto, si WAS 3.5.2 implementara correctamente Servlet 2.2, todo ir�a bien. Sin embargo, WAS 3.5.2 devuelve null para las llamadas a ServletContext.getResource(String) o ServletContext.getResourceAsStream(String). Esto se manifiesta como una excepci�n en la salida del servidor de aplicaci�n, por ejemplo default_server_stdout.log..
- Cuidado, creamos en el hecho de que la aplicaci�n web arranca satisfactoriamente desde la Consola de Administraci�n. Realmente no lo hace. La consola de Administraci�n est� mintiendo. Si intentamos acceder a webapp por ejemplo, http://localhost/struts-example/ fallar�.
- En este punto, necesitamos parchear el c�digo fuente de Struts, Hay tres lugares donde se llama a getResourceAsStream:
ResourceTag.doStartTag() ActionServlet.initMapping() PropertyMessageResources.loadLocale(String)de estos, ActionServlet es el m�s importante.
- Cambiamos la fuente de
// Acquire an input stream to our configuration resource InputStream input = getServletContext().getResourceAsStream(config);a
// Acquire an input stream to our configuration resource InputStream input = new java.io.FileInputStream(getServletContext().getRealPath(config)); - Hacemos cambios similares para las otras clases si es necesario.
- Recompilamos ActionServlet y copiamos el fichero .class a
$WAS_HOME/AppServer/hosts/default_host/struts-example/servlets/ org/apache/struts/action/ActionServlet.class
- Otro bug con el cargador de clases de WAS 3.5.2 es que la clase Class.getResource() no carga un recurso desde un jar, por eso debemos copiar $STRUTS_HOME/lib/struts-config_1_0.dtd a $WAS_HOME/AppServer/hosts/default_host/struts-example/servlets/org/apache/struts/resources/struts-config_1_0.dtd o conectar a Internet para obtener el dtd desde la web site de jakarta.
- Arrancamos nuestro webapp en la Consola de Administraci�n.
- Probamos la aplicaci�n de ejmplo cargando la siguiente URL en nuestra navegador:
http://localhost/struts-example/
�WebSphere - Pasos para la Aplicaci�n de Ejemplo
Servidor: Windows 2000 Server con WebSphere 3.5.3 Advanced
- Arrancamos el adminserver.
- Arrancamos la Consola de Administraci�n.
- Usamos la tarea Convert War file para convertir el struts-example.war.
- Lo convertimos a default_server, el motor servlet por defecto y el directorio de instalaci�n est�ndard (c:\websphere\appserver\hosts\default_host).
- Creamos un directorio WEB-INF en el directorio servlets y copiamos struts-config.xml, database.xml y web.xml dentro de el (mantener WEB-INF con todas las TLD's bajo web - ambos directorios WEB-INF deben estar presentes).
- Copiamos jaxp 1.0.1' (No 1.1.1's) jaxp.jar y parser.jar al directorio servlets de la aplicaci�n strut-example.
- En el directorio Servelts, abrimos struts.jar con WinZip. Extraemos los tres DTDs (struts-config_1_0.dtd, web-app_2_2.dtd y web-app_2_3.dtd) dentro del directorio servlets asegur�ndonos de que usamos nombres de carpetas (para que los ficheros se extraigan a servlets/org/apache/struts/resources).
- Pulsamos sobre struts-example en la Consola de Administraci�n bajo Default Server/Default Servlet Engine y pulsamos la pesta�a advanced en el lado derecho de la pantalla.
- Debajo de donde dice Default Error Page, introducimos /ErrorReporter y pulsamos Apply.
- Arrancamos el Default Server mediante la Consola de Administraci�n. Deber�amos ver un mensaje de ActionServlet en el fichero default_host_stdout.log sin ninguna excepcion.
- Mediante un navegador accedemos a la aplicaci�n usando: http://localhost/struts-example/index.jsp.
- Si devuelve Application not Available volvemos a la consola de administraci�n, pulsamos con el bot�n derecho sobre struts-example y seleccionamos Restart WebApp.
- Una vez que veamos el informe de �xtio, vamos de nuevo a la URL de arriba y lo intentamos de nuevo -- deber�a funcionar sin problemas.
Por alguna raz�n, a algunas instalaciones no les gustan los ficheros XML que referencian DTDs p�blicas -- si miramos el fichero default_host_stdout.log veremos errores sobre referencias a URL p�blicas inv�lidas durante los registros DTD, o si nuestra p�gina dice cannot find //logon o //saveRegistration (por ejemplo mapeos de acciones) hacemos los siguiente:
- Paramos el servidor por defecto.
- Vamos a servlets\WEB-INF\ y editamos web.xml y struts_config.xml.
- En la declaraci�n DOCTYPE, cambiamos la palabra PUBLIC por SYSTEM y eliminamos completamente la l�nea que dice:
-//Sun Microsystems,Inc.//DTD Web Application 2.2//EN
de web.xml y-//Apache Software Foundation//DTD Struts Configuration 1.0//EN
de struts-config.xml. - Grabamos estos ficheros y vamos de nuevo al paso 10 de arriba.