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

Tomcat et TomEE Java Discussion :

Redirection sur le port 80 mod_jk vs mod_proxy: mod_jk utile si Tomcat doit vraiment écouter sur le port 80


Sujet :

Tomcat et TomEE Java

  1. #1
    Membre habitué

    Homme Profil pro
    Inscrit en
    Mars 2005
    Messages
    101
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2005
    Messages : 101
    Points : 141
    Points
    141
    Par défaut Redirection sur le port 80 mod_jk vs mod_proxy: mod_jk utile si Tomcat doit vraiment écouter sur le port 80
    Bonjour,

    C'est en fait un problème déjà résolu.
    Je me permets de laisser un message sur ce sujet un peu tarte à la crème, car j'ai été confronté récemment à un problème et j'ai remarqué que dans certains cas mod_jk (plus difficile à configurer que la redirection par proxy) s'impose: si le contexte de l'applicatif java doit "faire comme si" il écoutait sur le port d'Apache HTTP (exemple: HttpServletRequest.getLocalPort() doit ramener 80 au lieu de 8080).

    Mon problème était le suivant:

    1) j'avais un web service (un WMS pour des cartes géographiques) XML tournant sur Tomcat, sur le port 8080. Il est caché derrière un Proxy Apache sur la même machine et répond bien au requêtes sur le port 80.
    Le webservice Tomcat renvoie du XML avec des URL des services qu'il héberge, qui sont parsées par d'autres sites, mais celles-ci contienne toujours le port 8080. Ex:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <UrlService>http://monserveur.com:8080/monService?</UrlService>
    2) Un beau jour, le gestionnaire d'un service extérieur qui utilise ces URL m'indique qu'il ne peut plus accepter que celles qui indiquent le port "standard" pour HTTP: 80.

    3) J'essaye plusieurs configurations de type "ProxyPass" et "ProxyPassReverse", du URL rewriting, etc... mais impossible d'arriver au résultat souhaité (ce qui logique car Tomcat continue bien d'écouter sur 8080 dans son propre contexte, le proxy n'intervient qu'au niveau du cheminement des requêtes)

    4) Je me dis, "Les URL sont peut-être en partie hardcodées dans le service, il va falloir revenir au code source de l'application, modifier la ligne de code qui génère ces URL et regénérer un war via Maven et Eclipse". (chouette, j'adore cela..) .

    Un examen du code révèle que le port dans le chemin de l'URL est généré par un appel à la méthode getLocalPort() de la classe HttpServletRequest , c'est donc bien une valeur générée dynamiquement et liée au contexte dans lequel tourne Tomcat.
    C'est en fait de la bonne programmation mais ne résout pas mon problème...
    Du coup je ne suis pas sûr que la changer à un seul endroit du code va bien résoudre le problème. Et surtout, c'est une solution ad-hoc problématique pour la maintenance et l'upgrade de l'applicatif.


    5) Je configure mod_jk (la seule solution que je n'ai pas encore essayée) de la manière décrite ainsi :
    http://notetodogself.blogspot.be/201...jk-tomcat.html
    ...et "miracles" les chemins d'URL généré par l'applicatif sur Tomcat contiennent bien le port 80!

    je n'ai pas trouvé tellement de documentation sur cet aspect là de la redirection entre Tomcat et Apache sur Internet et ai perdu beaucoup de temps à tester différentes possibilités.

  2. #2
    Rédacteur
    Avatar de lunatix
    Homme Profil pro
    Architecte technique
    Inscrit en
    Novembre 2002
    Messages
    1 960
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Architecte technique

    Informations forums :
    Inscription : Novembre 2002
    Messages : 1 960
    Points : 3 736
    Points
    3 736
    Par défaut
    a priori, tu peux rester en mod_proxy et utiliser la remoteIP valve de tomcat
    http://tomcat.apache.org/tomcat-7.0-...emote_IP_Valve

    qui sert justement a ça. (ne pas oublier de mettre changeLocalPort a true, sinon, le getLocalPort n'est pas impacté)

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

Discussions similaires

  1. il y a t-il une solution pour écouter sur un port utilisé ?
    Par dearraed dans le forum Entrée/Sortie
    Réponses: 4
    Dernier message: 07/05/2013, 15h26
  2. Impossible d'écouter sur le port 1527!
    Par futuring dans le forum NetBeans
    Réponses: 2
    Dernier message: 24/05/2011, 10h42
  3. comment écouter sur un Port série spécifique
    Par sebac dans le forum Entrée/Sortie
    Réponses: 2
    Dernier message: 06/01/2010, 14h22
  4. [CVS] Je n'arrive pas à écouter sur le port 2401 avec xinetd
    Par junior68 dans le forum Serveurs (Apache, IIS,...)
    Réponses: 2
    Dernier message: 10/05/2009, 22h32
  5. écouter sur un port en java
    Par berry dans le forum Général Java
    Réponses: 5
    Dernier message: 03/06/2006, 21h25

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