Un altro modo per implementare questo senza dover sostituire l'intero file Tomcat server.xml
sta usando il seguente nella cartella .ebextensions
(ad es 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
Questa configurazione crea uno script (files
) e quindi lo esegue (container_command
). Lo script controlla lo server.xml
per la stringa UIREncoding="UTF8"
e se non lo trova, lo aggiunge quindi utilizzando il comando sed
.
La cosa bella di questa soluzione è che se si aggiorna la versione di Tomcat (ad esempio da 7 a 8), non è necessario aggiornare lo server.xml
nei vari file WAR.
Inoltre, questo esempio è per l'aggiunta del parametro UIREncoding
ma lo script è facilmente adattato per aggiungere la proprietà <Connector ... />'
dalla domanda originale.
Ciao, ho provato a farlo in questo modo e ho ricevuto il seguente messaggio di errore: "Il file di configurazione .ebextensions/server-update.config nella versione dell'applicazione gd377807-dirty contiene YAML o JSON non validi. Eccezione YAML: durante la ricerca di il token successivo ha trovato il carattere '\ t' che non può iniziare alcun token in "", riga 2, colonna 3: replace-config: ^, eccezione JSON: carattere imprevisto (c) nella posizione 0 .. Aggiornamento del file di configurazione. –
TeraTon
Questo perché YAML non supporta i caratteri TAB (\ t) all'inizio della riga, è necessario utilizzare solo gli spazi –
@sebsto, Wow. Vorrei avere più di uno "Plus One" per dare. – Beachhouse