У меня проблема с неправильным заголовком HTTP Response Content-Type
при доступе к веб-службе Axis2, размещенной в Tomcat за Apache, через разъем AJP / 1.3.
Я могу получить доступ к веб-службе без проблемв браузере через его интерфейс RESTful, и я вижу результаты, но каким-то образом Apache изменяет заголовок ответа Content-Type
, отправленный Tomcat, с text/xml
на text/plain
, и это мешает мне использовать веб-сервис через SOAP в NetBeans, потому чтоUnsupported Content-Type: text/plain Supported ones are: [text/xml]
исключения.
Вот соответствующий раздел моей конфигурации Apache vhosts:
<VirtualHost *:80>
ServerAdmin me@myserver.example
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>
И соответствующий раздел моего сервера 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" />
Если я получаю доступ к WS напрямую в Tomcat, используя соединитель по умолчанию на порту 8080, я получаю правильный content-type
, но если я получаю доступ к нему через Apache, тогда я получаю text/plain
, так что это определенно проблема с прокси.
Как я могу решить эту проблему?
РЕДАКТИРОВАТЬ: Я получил его на работу с помощью коннектора Tomcat HTTP дляПрокси, вместо AJP, но я бы предпочел использовать mod_ajp, если найду работающее решение.
Я просто изменил
ProxyPass ajp://localhost:8009/axis2/services
ProxyPassReverse ajp://localhost:8009/axis2/services
строк на
ProxyPass http://localhost:8080/axis2/services
ProxyPassReverse http://localhost:8080/axis2/services