سؤال

أحاول استخدامها 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 - فهو يقوم بالتسلسل/إلغاء التسلسل دون أي مشاكل، وكل شيء يعمل بشكل رائع.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top