Frage

Ich erhalte anscheinend die folgende Fehlermeldung, wenn ich versuche, über die Flex/Cairngorm-Anwendung auf eine Remote-Java-Klasse (auf Spring/BlazeDS) zuzugreifen.Ich bin im Moment verrückt, wenn ich versuche herauszufinden, was falsch ist – jede Hilfe wäre sehr dankbar – danke 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()**

Alle meine Konfigurationsdateien sind unten:

Cairngorm - BusinessDelegate.as

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

Cairngorm – Services.mxml

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

Spring/BlazeDS – application-config.xml

flex:remote-service ref="remotecomponentService" 

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

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

Die web.xml enthält auch Spring-Referenzen – siehe unten

<?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>
War es hilfreich?

Lösung

Können wir bitte auch Ihre web.xml sehen?Ich bin überrascht, das Wort zu sehen "Frühling" in der Endpunkt-URL.Meine Endpunkte sahen immer so aus

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

Z.B.:Ich denke, Ihre „services-config.xml“ sollte eher so aussehen.

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

Ich würde auch vorschlagen, die Endpunkt-URL nicht so stark zu codieren.Geh einfach mit

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

Aktualisieren:

OK, Ihre web.xml sieht also in Ordnung aus, ebenso wie die Datei spring in Ihrer URL.Was ich in Ihrer Spring-Konfigurationsdatei sehe (application-config.xml) ist die Spring-URL-Zuordnung.Beispielsweise gibt es in meinen Spring-Konfigurationsdateien zusätzlich zu den Bean-Definitionen eine Zuordnung.Z.B.:

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

(Ich habe eine App, die auf Spring basiert, und eine andere, die BlazeDS verwendet, aber nicht beides ... also übersehe ich möglicherweise etwas.Das heißt, was ich frage, sollte immer noch gültig sein.In der Theorie.Aber nehmen Sie es mit Vorsicht.)

Vielleicht ist ein paar supereinfache Debugging-Maßnahmen angebracht.Können Sie überprüfen, ob die Anrufe an Ihren Server zurückkehren? HTTP 404 oder nicht auf diesen Problemendpunkten?Ein paar Möglichkeiten, dies zu tun:

  • Überprüfen Sie die Zugriffsprotokolle auf GET /dashboard-server/spring/messagebroker/amf.Wie lautet der HTTP-Statuscode für diese Anfragen? (Kostenlos, einfach, keine neuen Tools.)
  • Wenn Sie FireFox als Browser verwenden, fügen Sie das hinzu Manipulationsdaten einstecken.Sie müssen die Daten nicht manipulieren, aber sie zeigen Ihnen, was aufgerufen wird, was zurückgegeben wird und alle HTTP-Header.
  • Verwenden Sie z. B. ein vollständig auf Flash/Flex ausgerichtetes Protokoll-Sniffer-Tool Charles Web-Debugging-Proxy.

Es ist sehr hilfreich, das Problem einzugrenzen, um herauszufinden, wo diese Anforderungen auf dem Kommunikationsstapel fehlschlagen.

Andere Tipps

Ich habe unten web.xml angehängt.Was das Wort „Spring“ betrifft: Ich verwende die standardmäßige BlazrDS/Spring-Integrations-WAR-Datei, für die „Spring“ erforderlich ist.Die Bean id="remotecomponentService" ist eigentlich eine Spring-Bean.

Wollen Sie damit sagen, dass ich Ihre obige Lösung auch mit BlazeDS/Spring WAR verwenden kann?

Die web.xml enthält auch Spring-Referenzen – siehe unten

<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>
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top