Fehler in GraniteDS beim Deserialisieren von RemoteObject
-
29-10-2019 - |
Frage
Ich versuche, RemoteObject
aus ActionScript zu verwenden, um eine einfache Methode auf der Java-Serverseite mit GraniteDS auszuführen.Ich erhalte jedoch die folgende Ausnahme:
15:43:30,630 DEBUG http-bio-8080-exec-27 webapp.AMFEndpoint:64 - >> Deserializing AMF0 request...
15:43:30,630 ERROR http-bio-8080-exec-27 webapp.AMFEndpoint:91 - AMF message error
java.io.EOFException
at java.io.DataInputStream.readUnsignedShort(DataInputStream.java:323)
at org.granite.messaging.amf.io.AMF0Deserializer.readHeaders(AMF0Deserializer.java:94)
at org.granite.messaging.amf.io.AMF0Deserializer.<init>(AMF0Deserializer.java:76)
at org.granite.messaging.webapp.AMFEndpoint.service(AMFEndpoint.java:66)
at org.granite.spring.FlexFilter.handle(FlexFilter.java:245)
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:790)
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:719)
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:669)
Und so weiter.Hier ist der ActionScript-Teil:
remoteService = new RemoteObject();
remoteService.destination = "targetService";
remoteService.endpoint = "http://192.168.15.19:8080/test/";
remoteService.addEventListener(FaultEvent.FAULT, onRemoteServiceFault);
remoteService.connect.addEventListener(ResultEvent.RESULT, onConnectResult);
remoteService.connect();
Ich habe ein Debugging und eine Überwachung durchgeführt und konnte die vom Client gesendete AMF-Nachricht sehen.Und es sah normal aus.AMF0Deserializer
kann es jedoch nicht deserialisieren.
Sende ich es falsch?Oder sollte auf der Serverseite ein Fehler auftreten?
Lösung
Eigentlich habe ich den Fehler gefunden.An den Nachrichten ist nichts auszusetzen, aber auf der Serverseite sollte es keinen AMFMessageFilter geben.Stattdessen verwende ich AMFMessageServlet - es serialisiert / deserialisiert ohne Probleme und alles funktioniert hervorragend.