Domanda

Mi sembra di essere sempre il seguente errore quando provo ad accedere a una classe Java Remote (in primavera / BlazeDS) dal / applicazione Cairngorm Flex. Vado pazza in questo momento cercando di vedere ciò che è sbagliato - tutto l'aiuto sarebbe molto apprezzato -. Grazie Mike

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

Tutti i miei file di configurazione sono al di sotto:

Cairngorm - BusinessDelegate.as

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

Cairngorm - Services.mxml

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

Primavera / BlazeDS - application-config.xml

flex:remote-service ref="remotecomponentService" 

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

Primavera / BlazeDS - servizi-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"

Il web.xml contiene anche riferimenti a molla - vedi sotto

<?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>
È stato utile?

Soluzione

Possiamo vedere il tuo web.xml anche per favore? Sono sorpreso di vedere la parola "primavera" nella URL endpoint. I miei punti finali hanno sempre guardato come

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

Es .: Penso che il tuo servizi-config.xml dovrebbe essere più simile a questo.

    <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>

Vorrei anche suggerisco di non hardcoding l'URL end-point così tanto. Basta andare con il

    <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>

Aggiornamento:

OK, così il vostro web.xml sembra OK, così come avere l'spring nel tuo URL. Quello che don a vedere nel file di configurazione di Spring (application-config.xml) è la mappatura URL primavera. Ad esempio, nel mio file di configurazione di primavera, oltre alle definizioni di fagioli, c'è una mappatura. Per esempio:.

<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"    />

(Ho un app che è basato primavera, e un altro che usa BlazeDS, ma non entrambi ... quindi potrei mancare qualcosa. Detto questo, quello che sto chiedendo ancora deve essere valido. In teoria. Ma prendere con un grano di sale.)

Forse alcuni alcuni debug super-base è in ordine. Potete controllare per vedere se le chiamate al server stanno tornando HTTP 404 o meno tesi sugli endpoint problema? Un paio di modi per farlo:

  • Controllare i log di accesso per GET /dashboard-server/spring/messagebroker/amf. Qual è il codice di stato HTTP per queste richieste? (gratuito, facile, senza nuovi strumenti.)
  • Se si utilizza Firefox come browser, aggiungere il Tamper dati plug-in. non c'è bisogno di manomettere i dati, ma vi mostra ciò che viene chiamato, ciò che viene restituito, e tutte le intestazioni HTTP.
  • Utilizzare un completo strumento di protocollo sniffer su Flash / Flex orientato, come Charles Web Debugging Proxy .

Sarà molto utile per circoscrivere il problema di sapere se, dove queste richieste non riescono sullo stack di comunicazione.

Altri suggerimenti

Ho allegato web.xml di seguito. In termini di parola "Primavera" - Sto usando il file WAR BlazrDS / integrazione di Spring standard che richiede "primavera" di essere lì. L'id = fagiolo "remotecomponentService" è acutally un fagiolo primavera.

Stai dicendo che anche con l'BlazeDS / primavera WAR posso utilizzare la soluzione di cui sopra?

Il web.xml contiene anche riferimenti a molla - vedi sotto

<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>
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top