+ Répondre à la discussion
Affichage des résultats 1 à 2 sur 2
  1. #1
    Membre du Club
    Homme Profil pro
    Inscrit en
    mars 2005
    Messages
    67
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : mars 2005
    Messages : 67
    Points : 59
    Points
    59

    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 :
    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 julien
    Architecte technique
    Inscrit en
    novembre 2002
    Messages
    1 949
    Détails du profil
    Informations personnelles :
    Nom : Homme julien
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Architecte technique

    Informations forums :
    Inscription : novembre 2002
    Messages : 1 949
    Points : 3 402
    Points
    3 402

    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.

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •