Errore in GraniteDS durante la deserializzazione di RemoteObject
-
29-10-2019 - |
Domanda
Sto cercando di utilizzare RemoteObject
da ActionScript per eseguire un metodo semplice sul lato server Java utilizzando GraniteDS.Tuttavia, ricevo questa eccezione:
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)
E così via.Ecco la parte ActionScript:
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();
Ho eseguito un po 'di debug e monitoraggio e ho potuto vedere il messaggio AMF inviato dal client.E sembrava normale.Tuttavia AMF0Deserializer
non può deserializzarlo.
Lo sto inviando in modo sbagliato?O dovrebbe esserci un errore sul lato server?
Soluzione
In realtà, ho trovato l'errore.Non c'è niente di sbagliato nei messaggi, ma sul lato server non dovrebbe esserci AMFMessageFilter.Invece io uso AMFMessageServlet: serializza / deserializza senza problemi e tutto funziona alla grande.
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow