У меня проблема с использованием Flex с BlazeDS на Tomcat 5.5 через прокси (Apache). Я уже искал это, но не нашел ответы, которые решили мою проблему. Надеюсь, вы, ребята, сможете мне помочь. : -)
Наш сценарий следующий:
Flex-приложение, использующее BlazeDS для связи с нашим Dataservice на Tomcat 5.5. Веб-приложение активировано, а конфигурация служб содержит определения каналов, подобные следующим:
<channel-definition id="my-amf" class="mx.messaging.channels.AMFChannel">
<endpoint url="http://xxx.xxx.xxx.xxx:8180/myDataService/messagebroker/amf" class="flex.messaging.endpoints.AMFEndpoint">
</channel-definition>
Я установил URL-адрес корневого сервера Flex на http://xxx.xxx.xxx.xxx:8180/myDataService
(контекстный корень: / myDataService) и скомпилировал мое приложение flex с этим config-services.
После этого я развертываю свое Flex-приложение и службу данных на сервере с некоторым IP-адресом xxx.xxx.xxx.xxx. Два приложения доступны после этого
используя http://xxx.xxx.xxx.xxx:8180/myFlexApp
или для службы данных: http://xxx.xxx.xxx.xxx:8180/myDataservice
Кот слушает порт 8180.
Если я открываю свое flex-приложение, используя URL-адрес с IP-адресом, все работает нормально. Мое приложение отлично получает данные.
Хорошо. Пока все хорошо.
Теперь я хочу использовать прокси-сервер (через HTTP-сервер Apache), чтобы скрыть IP-адрес и использовать доменное имя.
Я делаю следующие изменения в моей конфигурации служб:
<channel-definition id="my-amf" class="mx.messaging.channels.AMFChannel">
<endpoint url="http://mydomain.com/data/messagebroker/amf" class="flex.messaging.endpoints.AMFEndpoint">
</channel-definition>
Я установил для корневого URL-адреса Flex Server значение http://mydomain.com/data
(контекстный корень / данные) и скомпилировал свое Flex-приложение с помощью этого config-services.
Я снова развертываю приложения на том же коте, что и раньше.
Теперь я создаю запись в папке sites-available (sites-enabled) моего каталога apache (etc / apache2 / sites-available /) с именем mydomain.com
Я создаю виртуальный хост с ServerName www.mydomain.com и ServerAlias mydomain.com. Я также добавляю необходимые правила в блок Proxy и другие необходимые вещи для определения виртуального хоста.
В этом файле содержатся следующие записи ProxyPass / ProxyPassReverse:
ProxyPass /flexApp http://xxx.xxx.xxx.xxx:8180/myFlexApp
ProxyPassReverse /flexApp http://xxx.xxx.xxx.xxx:8180/myFlexApp
ProxyPass /data http://89.19.229.148:8180/myDataservice
ProxyPassReverse /data http://89.19.229.148:80/myDataservice
После этого я могу открыть приложение flex с помощью http://www.mydomain.com/flexApp
в браузере, и оно загружается. Но появляется сообщение об ошибке, когда он пытается связаться со службой данных, используя блейзиды.
Я даже не могу открыть URL http://mydomain.com/data/messagebroker/amf
. Ошибка 404 отображается. До этого - с использованием IP-адреса - отображалась пустая страница.
Странно то, что безоблачные сервлеты работают нормально. например. Я могу открыть http://mydomain.com/data/myServlet
, и это работает. Только Blaze не работает.
У вас есть идеи, почему эта проблема возникает и как я могу ее решить. Заранее большое спасибо. Вы действительно помогаете мне !!!
Хенрик