Forum Programmation.java Tomcat Apache Proxy et sendRedirect

Posté par  .
Étiquettes : aucune
0
20
avr.
2009
Salut à tous.

Alors voilà,
j'ai passé la journée à configurer tomcat + apache sur une serveur.

J'utilise le module proxy d'apache et un connecteur dans tomcat.

Ça fonctionne presque bien sauf que quand je fais un response.sendRedirect() dans le code java ça foire.

Apparament ça serait un problème qui viens du protocole http qui demande une url absolue alors que je demande une redirection relative du coup il y à embrouille entre tomcat et apache.

Pour vous aider à y voir clair voici des morceaux de ma config :

Apache :
ProxyPass /provisia/ http://localhost:8082/provisia/
ProxyPassReverse /provisia/ http://localhost:8082/provisia/


Tomcat :
Connector port="8082"
maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
enableLookups="false" acceptCount="100" connectionTimeout="20000"
proxyPort="80" disableUploadTimeout="true" />

(il manque un inférieur au début mais je n'arrive pas à l'insérer)

Et mon code JAVA :
response.sendRedirect("http://serveur-bd/provisia/home.jsp");

Je précise que si je met l'adresse de la jsp home.jsp à la main ça fonctionne, de même que si j'accede au serveur directement avec tomcat ça fonctionne aussi.

J'ai aussi essayer avec ajp mais je dirais que c'est pire ...

Merci d'avance.
  • # logs?

    Posté par  . Évalué à 2.

    Tu dis que ça foire mais tu ne dis pas comment.
    As-tu des erreurs dans les logs de tomcat (peut-être d'apache)?

    Ton sendRedirect, est-ce que tu l'appelle bien AVANT que les header de la réponse aient été renvoyés? (dans une servlet ou une jsp?)
    • [^] # Re: logs?

      Posté par  . Évalué à 1.

      Il n'y à aucune message d'erreur dans les logs de tomcat ou apache. Dans les logs c'est comme si tout c'était bien passé.

      Le client par contre met une page d'erreur : "Impossible d'achever l'opération demandée
      La connexion a été refusée par le serveur"

      J'ai bien vérifié que rien n'était envoyé avant le sendRedirect. C'est une JSP.
      • [^] # Re: logs?

        Posté par  . Évalué à 2.

        Essaie de faire directement un telnet sur le port 80 et un GET vers ta JSP pour voir exactement ce que le serveur te répond.

        Si tu ne parle pas couramment le HTTP tu peux aussi utiliser curl avec l'option -I (i majuscule) pour voir les headers renvoyés.
  • # pourquoi un proxy ?

    Posté par  . Évalué à 2.

    je ne sais pas si ca va t'aider, mais pourquoi du fait un proxy (et un redirect vers ce proxy dans ton code)

    tu ne pourrais pas simplement faire une redirection depuis
    http://localhost/provisia/index.html

    qui renverrait le visiteur vers
    http://localhost:8082/provisia/
    • [^] # Re: pourquoi un proxy ?

      Posté par  . Évalué à 1.

      C'est une idée mais je ne souhaite pas que le port 8082 soit accessible depuis l'extérieur. Je ne veux pas que toutes les applications soient accessibles par tout le monde.
      • [^] # Re: pourquoi un proxy ?

        Posté par  . Évalué à 2.

        .htaccess
        qui contiendra alors

        order Allow,Deny
        Allow from localhost, 127.0.0.1, 192.168.0.0/24
        Deny from all


        en supposant que 192.168.0.0/24 soit ton reseau interne

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.