2009-07-02 5 views
0

HDF5 또는 NetCDF 위에 구현하는 사용자 정의 데이터 저장 형식이 있습니다. 내 데이터 형식은 때로는 진화하지만 드물게 "오래된"파일을 읽을 수 있어야합니다.여러 버전의 serializer 클래스로 Java 사용자 정의 직렬화를 처리 하시겠습니까?

저는 C++과 Microsoft COM을 사용하고 있었지만 자바를 선호하여 이러한 툴킷을 포기했습니다. 필자의 COM 일 동안 데이터 형식 판독기의 CLSID를 잘 알려진 위치의 데이터 파일에 넣을 수있었습니다. 따라서 파일이 기본 파일 판독기 구현보다 오래된 (또는 최신) 형식 인 경우, 내 컴퓨터에 설치되어있는 경우 올바른 구현을 인스턴스화합니다. 파일 형식을 개정 할 때마다 동일한 기본 인터페이스를 사용하지만 새로운 CLSID를 가진 새로운 리더를 출시 할 것입니다.

Java에서 이와 동일한 방법이 있습니까?

편집 : 나는 데이터 파일 자체가 자바 객체 구현을 직렬화하지 않으 참고 —, 난 그냥 방법 직렬화에 적절한 클래스 파일을보고 싶다. 이것이 내가 파일 형식을 올릴 때마다 버전 번호로 패키지 이름을 변경해야한다는 것을 의미하는지 또는 각 버전에서 동일한 클래스 이름 (예 : com.example.customreader)을 사용할 수 있는지 확실하지 않습니다. serialVersionUID와 같은 마커 또는 문제의 버전을 구별하는 주석이 포함됩니다. 후자의 접근 방식을 선호한다. 클래스 패스에 jar 파일의 여러 버전을 넣을 수있다.

편집 2 : 내 데이터는 ObjectInputStreamSerializable와는 아무 상관이없는 방법으로 저장되고, 나는 몇 가지 장점이없는 한 그렇게 할 계획이 없습니다. 나는 독자적으로 읽기/쓰기를 처리하며 HDF5/NetCDF의 특징/특성으로 인해 ObjectInputStream을 다루는 것만 큼 간단하지 않습니다.

답변

1

저는 COM에 익숙하지 않지만 serialVersionUID에 대한 문서를보고 싶을 수 있습니다.이 문제는 직렬화가 변경되어야 할 때 수정되도록 설계되었습니다.

+0

나는 그것에 대해 생각 ... 질문에 덧글을 추가 참조하십시오. –

0

난 당신이 적절한 시리얼 클래스를 반환하는 원격 메소드를 호출 할 수 있습니다, 당신이 더 많은 제어를 할 경우 Versioning of Serializables Objects 섹션

에서 살펴한다고 생각합니다.

관련 문제