حدث خطأ في GraniteDS أثناء إلغاء تسلسل RemoteObject
-
29-10-2019 - |
سؤال
أحاول استخدامها RemoteObject
من ActionScript لتنفيذ طريقة بسيطة على جانب خادم Java باستخدام GraniteDS.ومع ذلك، أتلقى هذا الاستثناء:
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)
وما إلى ذلك وهلم جرا.هنا هو جزء 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();
لقد أجريت بعض التصحيح والمراقبة، وتمكنت من رؤية رسالة AMF التي أرسلها العميل.وبدا طبيعيا.لكن AMF0Deserializer
لا يمكن إلغاء تسلسله.
هل أرسله خطأ؟أم يجب أن يكون هناك خطأ من جانب الخادم؟
المحلول
في الواقع، لقد وجدت الخطأ.لا يوجد أي خطأ في الرسائل، ولكن على جانب الخادم لا ينبغي أن يكون هناك AMFMessageFilter.بدلاً من ذلك، أستخدم AMFMessageServlet - فهو يقوم بالتسلسل/إلغاء التسلسل دون أي مشاكل، وكل شيء يعمل بشكل رائع.
لا تنتمي إلى StackOverflow