Comment préserver le Contenu de l'en-tête de Type de Tomcat HTTP de la réponse envoyée par l'intermédiaire d'un connecteur AJP à l'utilisation de mod_proxy d'Apache
Je vais avoir un problème avec une mauvaise Réponse HTTP Content-Type
la tête, alors que l'accès à une Axis2 service web hébergé dans Tomcat derrière Apache par le biais d'un AJP/1.3 connecteur.
Je peux accéder au service web sans problèmes dans le navigateur grâce à son interface RESTful et je peux voir les résultats, mais en quelque sorte Apache est en train de changer la réponse Content-Type
en-tête envoyé par Tomcat à partir de text/xml
à text/plain
et il m'empêche de consommer le web service SOAP dans NetBeans, en raison d'une Unsupported Content-Type: text/plain Supported ones are: [text/xml]
exception.
Voici la section pertinente de mes vhosts Apache configuration:
<VirtualHost *:80>
ServerAdmin [email protected]
ServerName myserver.example
ServerAlias other.myserver.example
ProxyPreserveHost On
SetEnv force-proxy-request-1.0 1
SetEnv proxy-nokeepalive 1
<Location /axis2/services>
ProxyPass ajp://localhost:8009/axis2/services
ProxyPassReverse ajp://localhost:8009/axis2/services
</Location>
</VirtualHost>
Et la section pertinente de mon Tomcat server.xml:
<Connector port="8009" protocol="AJP/1.3" redirectPort="9443" />
<Connector port="9443" protocol="HTTP/1.1" SSLEnabled="true" maxHttpHeaderSize="8192"
maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
enableLookups="false" disableUploadTimeout="true"
acceptCount="100" scheme="https" secure="true"
clientAuth="false" sslProtocol="TLS"
SSLCertificateFile="path/to/bundle"
SSLCertificateKeyFile="path/to/key"
SSLPassword="S3cr3t"
proxyName="myserver.example" proxyPort="443" />
Si j'ai accès à la WS directement dans Tomcat à l'aide de l'opérateur par défaut sur le port 8080-je obtenir la bonne content-type
mais si j'y accéder via Apache puis-je obtenir text/plain
, de sorte qu'il est certainement un problème avec le serveur proxy.
Comment puis-je résoudre ce problème?
EDIT: je l'ai eu à travailler en utilisant le Tomcat HTTP connecteur pour la transmission par proxy, au lieu de l'AJP, mais je préfère utiliser mod_ajp si je trouve une solution de travail.
Je viens de changer le
ProxyPass ajp://localhost:8009/axis2/services
ProxyPassReverse ajp://localhost:8009/axis2/services
lignes de
ProxyPass http://localhost:8080/axis2/services
ProxyPassReverse http://localhost:8080/axis2/services
Oui, c'est le même problème et j'ai déjà trouvé quelques archives d'e-mails comme celui-là à partir de 2007, avant de poster la question ici, mais je n'arrive toujours pas à trouver une solution à ce problème.
OriginalL'auteur tsbnunes | 2010-08-03
Vous devez vous connecter pour publier un commentaire.
C'est la solution.
Regardez cette partie dans le httpd.conf, Il est important que DefalutType n'en est pas.
Si vous voyez de la plaine/texte c'est le problème.
Désolé, cette solution n'est pas la mienne, mais je n'ai pas trouver dans quel blog je l'ai trouvé 🙂
merci. le proxy a été struggeling avec un 401. CELA FONCTIONNE!
OriginalL'auteur Daniele Baggio
J'ai passé les deux derniers jours, au travail, recherche de quelque chose de semblable à cela.
Il y a eu quelques bugs produire des problèmes similaires dans le passé, dans les deux Apache HTTPD et Tomcat, mais la plupart semblent avoir été résolus au moins 2 ans. Je pense que c'est ce que n'importe qui à l'aide de logiciel courant est susceptible d'être frapper - c'est certainement ce que je suis actuellement confronté à:
https://issues.apache.org/bugzilla/show_bug.cgi?id=49929
Il y a peut être un patch dans Tomcat 7.x, mais personne n'a encore testé.
J'ai l'intention de le faire quand j'ai le temps dans environ une semaine, ainsi que de produire un test fiable en ce cas, si cela peut se fixe sur toutes les versions de tomcat.
Cela se produit uniquement lors de l'utilisation d'AVRIL, donc, une solution intermédiaire est d'éviter que (mais qui pourrait avoir des conséquences des performances).
OriginalL'auteur Michael Ballantyne
Cela a résolu un mal de tête pour moi. J'ai eu Apache 2.2 comme le frontend avec mod_proxy_ajp et jboss comme backend. Plusieurs opérations ont échoué avec
Mon Apache n'ont
'text/plain'
comme DefaultType. Je n'ai cependant pas changer cela à l'échelle mondiale (httpd.conf). Je suis allé sur et a ajouté une nouvelle ligne à mon vhost config dans la<proxy>
section de configuration paramètre àtext/xml
.Je l'ai fait essayer à l'aide de
None
n'a pas de travail pour moi, je viens de recevoir:OriginalL'auteur Christopher Thorjussen