2017-10-03 11 views
0

Je fournis à mes clients ma webapp Tomcat, configurée pour écouter sur le port 80 et s'exécuter sur leurs PC Windows.Comment détecter par programme le port déjà utilisé dans Tomcat webapp?

Dans certains de leurs déploiements, service de publication World Wide Web de Microsoft est déjà en cours d'exécution sans le vouloir, qui écoute aussi sur le port 80. Ainsi, lorsque Tomcat et mon webapp est lancé, un Adresse déjà utilisée: JVM_Bind message d'exception est connecté à la console, cependant il est défilé hors de l'écran par des messages de démarrage plus tard et est donc passé inaperçu.

Ma question: Y at-il un moyen de soit

  • Configurez le serveur Tomcat pour arrêter dans de telles circonstances, ou
  • code
  • mon webapp à détecter et arrêter? Si ma webapp pouvait détecter cela, je devais alors enregistrer un message sur les mesures que l'utilisateur devrait prendre pour tuer l'autre programme. Espérons que le message resterait visible sur la console et ne pas faire défiler l'écran.
    netstat -a -o -n | findstr 0.0:80 
    taskkill /F /PID *pid* 
    

Bien que j'ai la documentation utilisateur décrivant le problème et d'y remédier, il est généralement pas à portée de main. Mon idée est que si c'était le dernier message sur la console, cela pourrait réduire le temps d'appel du support.

Répondre

2

Votre application commencera à être déployée dans le conteneur de servlet après que IO (connecteurs Http/Ajp) est déjà démarré, il n'y a donc aucun moyen de le faire à partir d'une application Web.

Vous pouvez toutefois encapsuler le script de démarrage Tomcat avec un fichier batch qui le fera pour vous (et imprimer un message d'erreur significatif, puis attendre que l'utilisateur appuie sur Entrée).

+0

Merci pour votre réponse. C'était aussi ma pensée. J'espérais que quelqu'un connaissait une méthode org.apache.catalina que mon webapp pourrait appeler et qui pourrait révéler son statut. –

+0

@KenLin: quel genre de 'statut' vous souhaitez révéler? Ports utilisés par l'instance Tomcat? Il y a un moyen facile de le faire, mais cela ne vous aidera pas pour la raison décrite dans ma réponse – rkosegi

+0

Si ma webapp pouvait trouver le port avec succès (ou pas) lié par Tomcat qui aiderait. Il semble que cela fasse partie de org.apache.catalina. –