Я разрабатываю приложение Flex 3.4, которое взаимодействует с бэкэндом Java EE, работающим на сервере JBoss-4.2.2, через самый последний выпуск BlazeDS. Когда я запустил приложение Flex из Flash Builder 4 beta 2 на Tomcat, все было в порядке, приложение Flex смогло сделать необходимый удаленный вызов. Но моя производственная среда находится на JBoss, и когда я переместил приложение на JBoss (с обновленным файлом services-config.xml для соответствия JBoss), приложение Flex продолжает жаловаться на Client.Error.MessageSend при удаленных вызовах. Сначала, когда я вручную развернул приложение на JBoss, faultDetail был "Channel.Security.Error error Error #2048 ... "; позже я попытался запустить приложение из Flash Builder, и тогда faultDetail стал "Channel.Connect.Failed error NetConnection.Call.BadVersion".

В services-config.xml в разделе <security> было:

<login-command class="flex.messaging.security.TomcatLoginCommand" server="Tomcat"/>

При переходе на JBoss я обновил его до:

<login-command class="flex.messaging.security.TomcatLoginCommand" server="JBoss"/>

У меня есть crossdomain.xml, помещенный в папку развертывания JBoss, следующим образом:

<?xml version="1.0"?> 
<!DOCTYPE cross-domain-policy 
    SYSTEM "http://www.macromedia.com/xml/dtds/cross-domain-policy.dtd"> 
    <cross-domain-policy> 
    <allow-access-from domain="*" /> 
</cross-domain-policy> 

Но, похоже, это не работает. Я также попытался поместить crossdomain.xml в папку deploy/xxxxx.war, и проблема осталась.

Я использую http://, а не https://, поэтому я думаю, что это не канал безопасности.

Пытался найти решение, но большинство решений были связаны с PHP, что не очень помогло. У кого-нибудь есть какие-нибудь подсказки?

4
user158125 11 Ноя 2009 в 16:52
1
Пожалуйста, будьте осторожны с этими файлами crossdomain.xml. Они могут открыть ваш сайт для некоторых серьезных уязвимостей безопасности. Дополнительную информацию см. в статье, которую я написал под названием «Как плохие междоменные политики раскрывают защищенные данные вредоносным приложениям»: jamesward.com/blog/2009/11/08/…
 – 
James Ward
11 Ноя 2009 в 17:18
Вы проверяли вывод журнала JBoss (в $JBOSS_HOME/server/default/log/)? Есть ли сообщения об ошибках? Попробуйте установить уровень журнала для BlazeDS на «Отладка», если таковых нет.
 – 
weltraumpirat
30 Апр 2012 в 09:17

2 ответа

У тебя есть

<login-command class="**flex.messaging.security.TomcatLoginCommand**" server="Tomcat"/> 

Если класс указывает, что безопасность принадлежит tomcat, вы должны изменить его на класс, который реализует интерфейс flex.messaging.security.LoginCommand или любой другой интерфейс безопасности.

1
weltraumpirat 30 Апр 2012 в 09:11

Если вы переходите на http://your.application.root/crossdomain.xml, загрузка файла? Самая простая конфигурация — поместить файл в корень домена.

0
cliff.meyers 11 Ноя 2009 в 20:19
Да, я могу получить доступ к crossdomain.xml из http://{server.name}:{server.port}/{context.root}/.
 – 
user158125
12 Ноя 2009 в 04:52
Похоже, вы решили проблему с перекрестным доменом. Теперь вы получаете только ошибку NetConnection.Call.BadVersion?
 – 
cliff.meyers
13 Ноя 2009 в 19:21