IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Java Discussion :

Récupération du port ouvert par la JVM d'une web app


Sujet :

Java

  1. #1
    En attente de confirmation mail
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Octobre 2010
    Messages
    501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Octobre 2010
    Messages : 501
    Points : 1 060
    Points
    1 060
    Par défaut Récupération du port ouvert par la JVM d'une web app
    Bonjour,

    Je cherche à savoir quel est le port utilisé par une JVM dans une Web App (le code est exécuté par l'application elle-même).
    Il me faudrait une solution générique: pas une API spécifique au type de serveur d'application ni lié au système (pas d'appel système à lsof par exemple).

    J'ai moyen d'instrumenter le code mais ça sera mon derniers recours, je préfèrerais une autre méthode moins intrusive.

    Merci.

  2. #2
    Membre éprouvé
    Avatar de LinkinSelim
    Profil pro
    Enseignant Chercheur
    Inscrit en
    Mars 2006
    Messages
    365
    Détails du profil
    Informations personnelles :
    Localisation : Algérie

    Informations professionnelles :
    Activité : Enseignant Chercheur

    Informations forums :
    Inscription : Mars 2006
    Messages : 365
    Points : 1 034
    Points
    1 034
    Par défaut
    Tu devré utilisé netstat -ano

    Ensuite tu regarde le PID (Colonne la plus à droite) et tu compare avec le PID de javaw.exe dans le gestionnaire de taches.

    Ou bien utiliser un outil visuelle qui peut remplacer Netstat comme TCPView que tu peux télécharger içi

  3. #3
    Expert éminent sénior
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Points : 12 977
    Points
    12 977
    Par défaut
    Ces informations sont contenues dans l'HttpServletRequest et peuvent être obtenues via les méthodes getLocalName et getServerPort.
    Hey, this is mine. That's mine. All this is mine. I'm claiming all this as mine. Except that bit. I don't want that bit. But all the rest of this is mine. Hey, this has been a really good day. I've eaten five times, I've slept six times, and I've made a lot of things mine. Tomorrow, I'm gonna see if I can't have sex with something.

  4. #4
    En attente de confirmation mail
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Octobre 2010
    Messages
    501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Octobre 2010
    Messages : 501
    Points : 1 060
    Points
    1 060
    Par défaut
    Citation Envoyé par LinkinSelim Voir le message
    Tu devré utilisé netstat -ano

    Ensuite tu regarde le PID (Colonne la plus à droite) et tu compare avec le PID de javaw.exe dans le gestionnaire de taches.

    Ou bien utiliser un outil visuelle qui peut remplacer Netstat comme TCPView que tu peux télécharger içi
    La solution est liée à Windows.
    Et par ailleurs, c'est dans la JVM elle-même que je dois faire ça, pas de l'extérieur.
    Merci quand-même

    Citation Envoyé par sinok Voir le message
    Ces informations sont contenues dans l'HttpServletRequest et peuvent être obtenues via les méthodes getLocalName et getServerPort.
    En effet, mais ça sous-entends qu'il faut que j'attende le premier appel externe.

    Je suis capable d'obtenir et de fournir des informations concernant la JVM dès le lancement de celle-ci avec un code exécuté par -javaagent. Ce bien avant qu'aucun appel externe n'ait eu lieu, et donc bien avant le premier HttpServletRequest.
    Hélas, à ce niveau, je n'arrive pas à savoir le port d'écoute du serveur.

  5. #5
    Expert éminent sénior
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Points : 12 977
    Points
    12 977
    Par défaut
    Il suffit de "forcer" cet appel externe avec une servlet configurée pour être appelée au startup de l'appli.

    En effet une Servlet configurée comme ayant un load-un-startup fixé verra sa méthode service appelée dès le démarrage du serveur d'application, cette méthode ayant de fait en paramètre l'HttpServletRequest qui va bien.

    Ceci te semble-t'il acceptable comme solution?
    Hey, this is mine. That's mine. All this is mine. I'm claiming all this as mine. Except that bit. I don't want that bit. But all the rest of this is mine. Hey, this has been a really good day. I've eaten five times, I've slept six times, and I've made a lot of things mine. Tomorrow, I'm gonna see if I can't have sex with something.

  6. #6
    Expert éminent sénior
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Points : 12 977
    Points
    12 977
    Par défaut
    Sinon dans le cas ou la méthode service n'est pas appelée, tu pourrais essayer de passer par le ServletContext et de parser le retour de la méthode getRealPath qui renvoie l'adresse complète d'une ressource (nom de serveur et port inclus)...
    Hey, this is mine. That's mine. All this is mine. I'm claiming all this as mine. Except that bit. I don't want that bit. But all the rest of this is mine. Hey, this has been a really good day. I've eaten five times, I've slept six times, and I've made a lot of things mine. Tomorrow, I'm gonna see if I can't have sex with something.

  7. #7
    En attente de confirmation mail
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Octobre 2010
    Messages
    501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Octobre 2010
    Messages : 501
    Points : 1 060
    Points
    1 060
    Par défaut
    Merci Sinok.
    L'idée est bonne Mais ça ne me convient encore pas.
    Je ne peux pas me permettre d'exiger quoi que ce soit sur l'application.

    Mon code est en fait une sonde Java et je veux que cette sonde nécessite le minimum de travail des développeurs/architectes/IP pour être opérationnel sur n'importe quelle application => Dans cette optique, je ne peux pas imposer aux développeurs de créer une servlet spécifique pour cette sonde.

    Edit: ah peut-être le ServletContext ... je regarde merci.

  8. #8
    Expert éminent sénior
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Points : 12 977
    Points
    12 977
    Par défaut
    Si tu veux faire une sonde, j'irais plutôt chercher du coté de JMX, qui doit surement proposer des solutions à ce genre de problèmes.

    De fait il existe même une JSR portant sur JMX en environnement JEE: la JSR-77.

    A toi d'expérimenter avec JMX et de voir ce que tu peux en tirer (sachant que cet outil peut aller fouiller relativement loin, c'est grace à lui que fonctionne VisualVM par exemple).
    Hey, this is mine. That's mine. All this is mine. I'm claiming all this as mine. Except that bit. I don't want that bit. But all the rest of this is mine. Hey, this has been a really good day. I've eaten five times, I've slept six times, and I've made a lot of things mine. Tomorrow, I'm gonna see if I can't have sex with something.

  9. #9
    En attente de confirmation mail
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Octobre 2010
    Messages
    501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Octobre 2010
    Messages : 501
    Points : 1 060
    Points
    1 060
    Par défaut
    En fait j'utilise déjà JMX dans la sonde
    Le numéro de port est en effet disponible mais pas dans les sections standard.

    Finalement je vais partir sur la solution HttpServletRequest. J'attendrai le premier appel pour envoyer le premier lot d'informations collectées avec les informations de configuration.

    Merci.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. lister les ports ouverts par un firewall
    Par Zwiter dans le forum Réseau
    Réponses: 8
    Dernier message: 26/03/2015, 15h26
  2. Port HTTPS ouvert par db3wns2011**
    Par labrouka dans le forum Windows 8
    Réponses: 0
    Dernier message: 12/02/2013, 11h18
  3. Les ports ouvertes par défaut
    Par a.elbaki dans le forum Hardware
    Réponses: 2
    Dernier message: 28/10/2010, 10h24
  4. tracage d'adresse IP par port ouvert
    Par anouarsurvive dans le forum Développement
    Réponses: 1
    Dernier message: 15/03/2009, 15h46
  5. Fermeture de ports ouvert
    Par developpeur_mehdi dans le forum Développement
    Réponses: 2
    Dernier message: 28/04/2004, 14h27

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo