2015-04-21 12 views
6

Ho un'applicazione Spring Boot distribuita su un contenitore Tomcat esterno (che non utilizza il contenitore incorporato) e sto cercando di ottenere l'impostazione dell'attuatore. Il problema è che il management.port in application.properties non sembra essere onorato da Tomcat. Quando eseguo Spring Boot con Tomcat incorporato, funziona perfettamente.Porta Attuatore di avvio a molla in caso di implementazione su contenitore Tomcat esterno

Ad esempio, avere il seguente insieme in application.properties:

management.port=9010

endpoint di lavoro per il contenitore incorporato

  • http://localhost:9010/health

non -Lavorare endpoint per contenitore esterno in esecuzione sulla porta 8080

  • http://localhost:9010/health
  • http://localhost:8080/health
  • http://localhost:9010/<appName>/health
  • http://localhost:8080/<appName>/health

C'è una configurazione speciale ho bisogno nel contenitore Tomcat per esporre un Punto finale dell'attuatore a molla?

Ho provato a impostare una variabile di ambiente di MANAGEMENT_PORT. La maggior parte (quasi tutti) della documentazione disponibile utilizza Tomcat incorporato, quindi rintracciare questo problema si è rivelato difficile.

Il terzo commento su questa risposta fornito qualche possibile intuizione: https://stackoverflow.com/a/28689853/2601060, che punta a un file GitHub che indica che se la porta di gestione non è impostata, sarà la stessa della porta del server.

+0

Il link che hai postato ha una risposta che spiega che per l'attuatore viene utilizzata un'istanza separata quando si utilizza il tomcat incorporato. Presumibilmente ciò non funzionerà quando si esegue la distribuzione su un tomcat esterno. Potrebbe esserci un modo per ottenere ciò che si vuole fare, ma dovrà essere nella configurazione di tomcat esterna, le proprietà per il tomcat incorporato non funzioneranno. –

+0

@ci_ grazie per la risposta: sei a conoscenza di un modo per configurarlo nel tomcat esterno? – mnd

+0

Purtroppo no, o avrei postato una risposta. Ho appena commentato di indicarti la giusta direzione. Qui utilizziamo un percorso di contesto separato per gli attuatori, non una porta separata. –

risposta

0

Sì, se la vostra proprietà application.properties è chiamata "management.port: 9001" e "server.port: 9000". Quindi gli endpoint delle applicazioni verranno implementati sulla porta 9000 e gli endpoint dell'attuatore verranno implementati sulla porta 9001.

Quindi tocca a noi. Possiamo menzionare entrambe le proprietà con la stessa porta, l'applicazione funzionerà correttamente.

0

In quale versione di Java è in esecuzione Tomcat7?

N.B.Questo è tutto speculazione - non ho potuto verificare ancora questo

Se è Java6 (e sto cercando di indovinare che è perché sto diventando un problema simile), ho il sospetto che è legato al seguente messaggio:

INFORMAZIONI: JSR 356 WebSocket (Java websocket 1.1) il supporto non è disponibile quando viene eseguito su Java 6. Per sopprimere questo messaggio, eseguire Tomcat su Java 7, togliere i JAR websocket da $ CATALINA_HOME/lib o aggiungere i JAR WebSocket alla proprietà tomcat.util.scan.DefaultJarScanner.jarsToSkip in $ CATALINA_BASE/conf/catalina.properties. Si noti che l'API di Tomcat 7 WebSocket deprecata di sarà disponibile.

posso azzardare solo un'ipotesi, che la primavera di utilizzare Boot JSR356 di dire al Web App contenitore per "oltre all'ascolto della porta predefinita per l'applicazione principale, anche in ascolto sulla porta X per gli endpoint attuatori" .. . e questo non è disponibile in esecuzione sotto Java6 ... Probabilmente ho torto.

Se qualcuno può confermare/negare questo comportamento, aggiornerò questa risposta.

Dopo aver impostato Tomcat da usare Java8, e la rimozione dei vasi presa (tomcat7-websocket.jar & websocket-api.jar vasetti), ottengo il following message from Spring:

osbaaEndpointWebMvcAutoConfiguration: Impossibile avviare il contenitore gestione integrata sulla porta diversa (endpoint di gestione sono ancora disponibile tramite JMX)

Nel frattempo, @ soluzione di DecipherX (cioè non impostare management.port=9010) esporrà gli endpoint attuatori ° rough la porta di default.

0

a fare punti finali attuatore di lavoro per la distribuzione di applicazione di avvio di primavera guerra su Tomcat esterno:. 1) eliminare la gestione * configurazioni da application.properties

2) Il tuo URL di lavoro sarebbero http://localhost:8080//salute

Problemi correlati