Как поддерживать каналы HTTP и HTTPS в Flex / BlazeDS? - PullRequest
4 голосов
/ 18 июня 2009

Я пытался найти правильную конфигурацию для поддержки обоих запросов http / s в приложении Flex. Я прочитал все документы, и они намекают на что-то вроде следующего:

<default-channels>
  <channel ref="my-secure-amf">
    <serialization>
      <log-property-errors>true</log-property-errors>
    </serialization>
  </channel>
  <channel ref="my-amf">
    <serialization>
      <log-property-errors>true</log-property-errors>
    </serialization>
  </channel>

Это прекрасно работает при подключении к приложению через https, но периодически возникают сбои связи при подключении к тому же приложению через http. Вот сокращенный services-config.xml:

<channel-definition id="my-amf" class="mx.messaging.channels.AMFChannel">
      <endpoint url="http://{server.name}:{server.port}/{context.root}/messagebroker/amf"
                class="flex.messaging.endpoints.AMFEndpoint"/>
      <properties>
        <!-- HTTPS requests don't work on IE when pragma "no-cache" headers are set so you need to set the add-no-cache-headers property to false -->
        <add-no-cache-headers>false</add-no-cache-headers>
        <!-- Use to limit the client channel's connect attempt to the specified time interval. -->
        <connect-timeout-seconds>10</connect-timeout-seconds>
      </properties>
    </channel-definition>

    <channel-definition id="my-secure-amf" class="mx.messaging.channels.SecureAMFChannel">
      <!--<endpoint url="https://{server.name}:{server.port}/{context.root}/messagebroker/amfsecure" class="flex.messaging.endpoints.SecureAMFEndpoint"/>-->
      <endpoint url="https://{server.name}:{server.port}/{context.root}/messagebroker/amfsecure"
                class="flex.messaging.endpoints.AMFEndpoint"/>
      <properties>
        <add-no-cache-headers>false</add-no-cache-headers>
        <connect-timeout-seconds>10</connect-timeout-seconds>
      </properties>
    </channel-definition>

Я работаю с Tomcat 5.5.17 и Java 5.

  1. Документы BlazeDS говорят, что это лучшая практика. Есть ли лучший способ?
  2. В этой конфигурации кажется, что с каждым каналом, определенным в элементе default-channel, связано 2-3 повторных попытки, поэтому всегда требуется ~ 20 с, прежде чем канал my-amf подключится через запрос http. Есть ли способ переопределить 2-3 попытки, скажем, 1 повтор для каждого канала?

Заранее спасибо за ответы.

Ответы [ 3 ]

3 голосов
/ 18 июня 2009

У меня работают http и https, хотя я тестировал их только в Firefox и IE7. Пока что я использую только BlazeDS для удаленного взаимодействия. Вот мои настройки:

    <channel-definition id="my-amf"
        class="mx.messaging.channels.AMFChannel">
        <endpoint
            url="http://{server.name}:{server.port}/{context.root}/messagebroker/amf"
            class="flex.messaging.endpoints.AMFEndpoint" />
        <properties>
            <polling-enabled>false</polling-enabled>
        </properties>
    </channel-definition>

    <channel-definition id="my-secure-amf"
        class="mx.messaging.channels.SecureAMFChannel">
        <endpoint
            url="https://{server.name}:{server.port}/{context.root}/messagebroker/amfsecure"
            class="flex.messaging.endpoints.SecureAMFEndpoint" />
        <properties>
            <add-no-cache-headers>false</add-no-cache-headers>
        </properties>
    </channel-definition>

Вы не указываете сервер приложений, который используете; это может быть проблемой. У меня были некоторые проблемы при переключении с HTTPS на HTTP (безопасный вход в систему) под Tomcat. Единственное, что я сделал для устранения неполадок, это установил Jetty и попробовал его там. Я никогда не использовал его раньше, но его было очень быстро настроить и развернуть, даже через Eclipse. Затем я понял, что у меня есть специфическая проблема Tomcat, которая упростила поиск решения (под этим я подразумеваю возможность).

1 голос
/ 15 марта 2012

Это тоже сводило нас с ума. Чтобы решить эту проблему, сначала введите http (my-amf) в тег default-channel, а затем https (my-secure-amf)

<default-channels>
  <channel ref="my-amf">
<serialization>
  <log-property-errors>true</log-property-errors>
</serialization>
 </channel>
<channel ref="my-secure-amf">
  <serialization>
  <log-property-errors>true</log-property-errors>
</serialization>
</channel>
0 голосов
/ 13 июля 2011

Если пункты назначения, которые используют http и https, являются разными пунктами назначения, вы можете определить каналы с порядком использования для этого пункта назначения. Например, mySecureDestination и myDestination являются двумя разными пунктами назначения. Для mySecureDestination:

<destination id="mySecureDestination" channels="httpsChannel"></destination>

и для незащищенного http-канала

<destination id="myDestination" channels="httpChannel"></destination>
...