2011-11-14 6 views
0

직렬화를 구현하는 몇 가지 Java 클래스와 IExternalizable을 구현하는 해당 AS 객체 (GAS에서 자체 생성)가 있습니다.Java 객체의 BlazeD 직렬화

이 서버에서 개체를 수신 아무런 문제가 없지만, 내가 서버에 개체를 보내려고 할 때 - 그것은 예외가 발생합니다 :

[BlazeDS]Class 'xxx' must implement java.io.Externalizable to receive client 
IExternalizable instances. flex.messaging.io.SerializationException: Class 'xxx' must 
implement java.io.Externalizable to receive client IExternalizable instances. 

정말 내가 자바 서버에 개체를 보내 외부화를 구현해야합니다!

+0

OK, 대답으로 넣으십시오. 다시 작업하게 될 것입니다 ... – Assaf

답변

1

실제로 실제로는 Externalizable을 구현할 필요가 없으며 Serializable도 구현할 필요가 없습니다. 대신 Flex 클래스에서 전체 Java 클래스 경로를 가리키는 별칭이있는 원격 클래스를 지정해야합니다. 또한 속성 이름 (getter 및 setter)이 Java 객체 속성 이름과 동일한 지 확인해야합니다. 마지막으로, 나는 객체/프로퍼티 타입이 잘 맞는지 (숫자 자바 객체를 Flex 등의 Number로) 일치시켜야한다.

+0

다른 클래스의 보호 된 변수를 선언하는 경우와 같이 복잡한 데이터 유형은 어떻습니까? –

0

Externalizable을 구현해야합니다.

액션 스크립트와 자바

사이에 사용자 정의 직렬화를 사용 http://help.adobe.com/en_US/LiveCycleDataServicesES/3.1/Developing/WSc3ff6d0ea77859461172e0811f00f6eab8-7ffdUpdate.html

참조하면 요구 사항을 충족하지 않는 서버에서 클라이언트와 자바 액션 사이에 데이터를 직렬화 및 역 직렬화에 대한 표준 메커니즘 , 당신은 당신 자신의 직렬화 체계를 작성할 수있다. 클라이언트의 ActionScript 기반 flash.utils.IExternalizable 인터페이스와 서버의 해당 Java 기반 java.io.Externalizable 인터페이스를 구현합니다.

+0

우리가 구현해야한다고 말하는 것은 아닙니다. 직렬화에 만족하지 않는다면 할 수 있다고 말합니다. ... – Assaf

+1

적어도 직렬화를 위해 클래스를 선택하기 위해 BlazeDS serializer 용 Serializable을 구현해야합니다. Externalizable을 구현하면 사용자 정의 직렬화를위한 사용자 정의 읽기 및 쓰기 메소드를 작성할 수 있습니다. –

+0

설명서에 _flash.utils.IExternalizable_의 기본 데이터 변환은 _java.io.Externalizable_ 인 것으로 나와 있는데, 이는 AS 클래스의 Java 대응자가 Externalizable을 구현해야 함을 의미합니다. –