2014-01-26 4 views
1

서버에서 직렬화를 사용하고 안드로이드 클라이언트에서 직렬화를 통신 프로토콜로 사용하고 있습니다. 사용클래스 주석이 ClassNotFound 예외를 발생시킵니다.

POJO와는

EntityTag ViewTag와 별도로 정의
@EntityTag(uri = "/t.do", layout_id = "teacher") 
public class Teacher extends UIEntity{ 
    private static final long serialVersionUID = (long)0x000010; 
    public Teacher() throws UIEntityFormatException {super();} 

    @ViewTag(view_id = "t_name") 
    private String name; 
    @ViewTag(view_id = "t_sur_name") 
    private String surName; 

    public String getName() { 
    return name; 
    } 

    public void setName(String name) { 
    this.name = name; 
    } 

    public String getSurName() { 
    return surName; 
    } 

    public void setSurName(String surName) { 
    this.surName = surName; 
    } 
} 

로 정의된다. 서버에서 오브젝트를 작성하는 데 사용

코드

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 
     try { 
     final Teacher t = new Teacher(); 
     t.setName("jacob"); 
     t.setSurName("bush"); 
     final ObjectOutputStream oos = new ObjectOutputStream(response.getOutputStream()); 
     oos.writeObject(t); 
     oos.flush(); 
     } catch (UIEntityFormatException e) { 
     e.printStackTrace(); 
     } 
    } 

하고 AndroidHttpClient 사용이

 final ObjectInputStream objectInputStream = new ObjectInputStream(response.getEntity().getContent()); 
     ret = (Result) objectInputStream.readObject(); 
     objectInputStream.close(); 

를 수신하기위한 코드는 클라이언트에서 사용. 클라이언트가 실행되면 EntityTag.class에 대한 ClassNotFound가 throw됩니다.

Teacher, UIEntity 및 주석이 프로토콜 및 클라이언트 서버 모듈에 포함되어 있습니다 (Intellij IDEA 13을 사용함) 예외에 원인이 무엇인지 파악할 수 없습니다.

감사합니다 답장이 늦어

답변

0

죄송합니다, 닉.

나는 무엇이 잘못되었는지 알아 낸다.

Java 직렬화는 주석 처리 전에 10 년을 만드는 이전 메커니즘이었습니다. 그게 기본 직렬화/역 직렬화가 문제를 제대로 처리하지 않는 이유입니다.

서버에서 읽은 바이트 []를 사용하여 주석을 볼 수있는 일반 텍스트 파일에 넣을 때 클래스로 정의되었습니다. JVM이이 주석 (서버와 클라이언트 양쪽에 거주하는 이래로 완전히 무시 될 수 있음)을로드하려고 시도하는 이유입니다. 그래서 Serialaizable 클래스의 readObject 및 writeObject 메소드를 작성하려고했습니다. 주석 클래스가 더 이상 표시되지 않고 문제가 해결되었습니다.

구성에 문제가 없습니다. 그러나 우리는 구 기술과 신 기술의 결합을 다룰 때 조심해야합니다.

어쨌든 도와 주셔서 감사합니다.

관련 문제