Otra forma de implementar esta sin tener que reemplazar todo el archivo de Tomcat server.xml
está utilizando el siguiente en la carpeta de .ebextensions
(por ejemplo tomcat.config
)
files:
"/tmp/update_tomcat_server_xml.sh":
owner: root
group: root
mode: "000755"
content: |
#! /bin/bash
CONFIGURED=`grep -c '<Connector port="8080" URIEncoding="UTF-8"' /etc/tomcat7/server.xml`
if [ $CONFIGURED = 0 ]
then
sed -i 's/Connector port="8080"/Connector port="8080" URIEncoding="UTF-8"/' /etc/tomcat7/server.xml
logger -t tomcat_conf "/etc/tomcat7/server.xml updated successfully"
exit 0
else
logger -t tomcat_conf "/etc/tomcat7/server.xml already updated"
exit 0
fi
container_commands:
00_update_tomcat_server_xml:
command: sh /tmp/update_tomcat_server_xml.sh
Esta configuración crea una secuencia de comandos (files
) y luego la ejecuta (container_command
). El script comprueba el server.xml
para la cadena UIREncoding="UTF8"
y, si no lo encuentra, lo agrega usando el comando sed
.
Lo bueno de esta solución es que si actualiza su versión de Tomcat (por ejemplo, de 7 a 8), entonces no tiene que preocuparse de actualizar el server.xml
en sus diversos archivos WAR.
Además, este ejemplo es para agregar el parámetro UIREncoding
pero la secuencia de comandos se adapta muy fácilmente para agregar la propiedad <Connector ... />'
de la pregunta original.
Hola, traté de hacerlo de esta manera y recibí el siguiente mensaje de error: "El archivo de configuración .ebextensions/server-update.config en la versión de la aplicación gd377807-dirty contiene YAML o JSON no válido. Excepción de YAML: mientras se busca el token siguiente encontró el carácter '\ t' que no puede iniciar ningún token en "", línea 2, columna 3: replace-config: ^, excepción JSON: carácter inesperado (c) en la posición 0 .. Actualice el archivo de configuración. –
TeraTon
Esto se debe a que YAML no admite caracteres TAB (\ t) al comienzo de la línea, solo debe usar espacios –
@sebsto, Wow. Ojalá tenga más de uno "Plus One" para dar. – Beachhouse