Flex Cairngorm Spring Blazeds - Ошибка удаленного доступа - помогите мне, пожалуйста

StackOverflow https://stackoverflow.com/questions/1682274

Вопрос

Кажется, я получаю следующую ошибку при попытке получить доступ к удаленному классу Java (в Spring / BlazeDS) из приложения Flex / Cairngorm.В данный момент я схожу с ума, пытаясь понять, в чем дело - я был бы очень признателен за любую помощь - спасибо, Майк.

**Error: C0007E: RemoteObject not found for mycomponentsService
    at RemoteObjects/getService()
    at com.adobe.cairngorm.business::ServiceLocator/getRemoteObject()
    at com.nomura.dashboard.client.business::DashBoardDelegate()**

Все мои конфигурационные файлы приведены ниже:

Кэрнгорм - BusinessDelegate.as

this.service = ServiceLocator.getInstance().getRemoteObject("**mycomponentsService**");

Cairngorm - Сервисы.mxml

mx:RemoteObject id="mycomponentsService" 
                destination="remotecomponentService" 
                showBusyCursor="true">

Весна/BlazeDS - application-config.xml

flex:remote-service ref="remotecomponentService" 

bean id="remotecomponentService" 
     class="com.mycompany.dashboard.server.dao.ComponentsDAO"

Весна/BlazeDS - services-config.xml

channel-definition id="myamf" class="mx.messaging.channels.AMFChannel"
endpoint url="http://localhost:8080/dashboard-server/spring/messagebroker/amf" 
class="flex.messaging.endpoints.AMFEndpoint"

В web.xml также содержатся ссылки на Spring - см. Ниже

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4">

<!-- The front controller of this Spring Web application, responsible for handling all application requests -->
<display-name>dashboard-server</display-name>

<servlet>
    <servlet-name>Spring MVC Dispatcher Servlet</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>

    <init-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>/WEB-INF/spring/*-config.xml</param-value>
    </init-param>

    <load-on-startup>1</load-on-startup>
</servlet>

<!-- Map /spring/* requests to the DispatcherServlet -->
<servlet-mapping>
    <servlet-name>Spring MVC Dispatcher Servlet</servlet-name>
    <url-pattern>/spring/*</url-pattern>
    </servlet-mapping>
</web-app>
Это было полезно?

Решение

Можем ли мы увидеть ваш web.xml также, пожалуйста?Я удивлен, увидев это слово "весна" в URL-адресе конечной точки.Мои конечные точки всегда выглядели следующим образом

url="http://{server.name}:{server.port}/{context.root}/messagebroker/amf"

Например.:Я думаю, что ваше services-config.xml должно больше походить на это.

    <channel-definition id="my-amf" class="mx.messaging.channels.AMFChannel">
         <endpoint url="http://{server.name}/dashboard-server/messagebroker/amf"
                   class="flex.messaging.endpoints.AMFEndpoint"/> 
    </channel-definition>

Я бы также предложил не так сильно жестко кодировать URL-адрес конечной точки.Просто иди с

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

Обновить:

Хорошо, итак, ваш web.xml выглядит нормально, как и наличие spring в вашем URL-адресе.Чего я не вижу в вашем файле конфигурации Spring (application-config.xml) - это весеннее сопоставление URL-адресов.Например, в моих конфигурационных файлах Spring, в дополнение к определениям компонентов, есть сопоставление.Например.:

<bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
    <property name="mappings">
        <value>
            /histogram/**=bean.HistogramController
            /counter/**=bean.CounterController
        </value>
    </property>
</bean>

<bean id="bean.HistogramController" class="ch.comp.app.HistogramXportController"  />
<bean id="bean.CounterController"   class="ch.comp.app.CounterXportController"    />

(У меня есть одно приложение, основанное на Spring, и другое, которое использует BlazeDS, но не both...so Возможно, я что-то упускаю.Тем не менее, то, о чем я прошу, все еще должно быть в силе.В теории.Но отнеситесь к этому с долей серьезности.)

Может быть, нужна какая-нибудь суперосновная отладка.Можете ли вы проверить, возвращаются ли вызовы на ваш сервер HTTP 404 или не по конечным точкам этой проблемы?Пара способов сделать это:

  • Проверьте журналы доступа на GET /dashboard-server/spring/messagebroker/amf.Каков код состояния HTTP для этих запросов? (Бесплатно, легко, никаких новых инструментов.)
  • Если вы используете FireFox в качестве браузера, добавьте Несанкционированный доступ К данным подключитесь к сети.Вам не нужно изменять данные, но они показывают вам, что вызывается, что возвращается и все HTTP-заголовки.
  • Используйте полнофункциональный инструмент анализа протоколов, ориентированный на Flash / Flex, например Прокси - сервер для отладки Charles Web.

Будет очень полезно сузить круг проблем, чтобы узнать, не происходит ли сбой в стеке коммуникаций при выполнении этих запросов.

Другие советы

Я приложил web.xml ниже.Что касается слова "Spring" - я использую стандартный файл BlazrDS / Spring integration WAR, для которого требуется наличие "spring".Идентификатор компонента="remotecomponentService" фактически является компонентом Spring.

Вы хотите сказать, что даже с BlazeDS / Spring WAR я могу использовать ваше решение выше?

В web.xml также содержатся ссылки на Spring - см. Ниже

<web-app version="2.4">
<display-name>dashboard-server</display-name>
<servlet>
    <servlet-name>Spring MVC Dispatcher Servlet</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <init-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>/WEB-INF/spring/*-config.xml</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
</servlet>
<!-- Map /spring/* requests to the DispatcherServlet -->
<servlet-mapping>
    <servlet-name>Spring MVC Dispatcher Servlet</servlet-name>
    <url-pattern>/spring/*</url-pattern>
    </servlet-mapping>
</web-app>
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top