2012-02-22 3 views
0

ActionScript에서 RemoteObject을 사용하여 GraniteDS를 사용하는 Java 서버 측에서 간단한 메서드를 실행하려고합니다. 그러나이 예외가 발생합니다 :RemoteObject를 deserialize하는 동안 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) 

등등. 여기에 액션 스크립트 부분은 다음과 같습니다

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은이를 역 직렬화 할 수 없습니다.

잘못 보내셨습니까? 아니면 서버 측에 오류가 있어야합니까?

답변

0

사실, 오류가 발견되었습니다. 메시지에는 아무런 문제가 없지만 서버 쪽에서는 AMFMessageFilter가 없어야합니다. 대신 AMFMessageServlet을 사용합니다. 문제없이 serialize/deserialize하면 모든 것이 잘됩니다.

관련 문제