일부 데이터를 추적하는 서버가 있습니다. 관리자 응용 프로그램으로 서버에 연결하여 데이터의 현재 상태를 확인합니다. 새로 고침 빈도는 5 초입니다. 서버가 처음으로 데이터를 전송하면 작동합니다. 그러나 두 번째로 데이터가 변경되면 관리자 측에서 최신 데이터를받지 못합니다. 나는 ObjectOutputStream에와 ObjectInputStream를 통해 클래스에 싸여 데이터를 보내고있다 : I 시도 무엇Java : 직렬화가 두 번째로 작동하지 않습니다.
public class Leerling implements Serializable {
public int llnID;
public String naam;
public String voornaam;
public String klas;
public int klasNummer;
public Date geboorteDatum;
public String getFullName()
{
return voornaam + " " + naam;
}
@Override
public String toString() {
return "Leerling{" + "llnID=" + llnID + ", naam=" + naam + ", voornaam=" + voornaam + ", klas=" + klas + ", klasNummer=" + klasNummer + ", geboorteDatum=" + geboorteDatum + '}';
}
}
public class SLeerling extends Leerling implements Serializable{
public boolean voted;
public int vote = -2;
}
가 스트림에서 개체를 읽기 전에이다
이것은 데이터의 래퍼 클래스입니다 System.gc();
을 호출하여 객체의 이전 객체가 메모리에 더 이상 존재하지 않는지 확인하십시오. 그러나 성공하지 못했습니다.
누군가가 정확한 문제를 알고 있습니까? 실제 최신 데이터를 얻을 수있는 방법은 무엇입니까?
미리 감사드립니다.
문제의 제 2 예 : 일부 다른 데이터 래퍼 클래스 (그것이 내부 클래스)을 다시 한
는 :
public static class MonitorResponse implements Serializable
{
public int numberOfLLN;
public int blocked;
public int blancos;
public List<Integer> votes;
}
I는 먼저 데이터를 보낼 때 시간, 그것은 작동합니다. 하지만 두 번째로 (업데이트하기 위해) 보내면 List<Integer> votes
을 제외한 모든 항목이 업데이트됩니다. 따라서 votes
은 새로 고쳐지지 않습니다. 은 그 때 나는 그것을 배열하여 목록을 교체하여 까다로운 비트 해결 :
public static class MonitorResponse implements Serializable
{
public int numberOfLLN;
public int blocked;
public int blancos;
public Integer[] votes;
}
그리고 이것은 완벽하게 작동합니다. 당신이 나에게 묻는다면 이상합니다. 코드의 다른 부분은 거의 변경되지 않았습니다 ... (목록 대신 배열을 구현하는 것을 제외하고)
지금까지 제공 한 정보에서를,이 소리가 나지 않습니다. 관리자 페이지에서 캐싱 및 새로 고침과 같은 문제가 생깁니다. 새로 고침을 통해 수신 한 데이터가 유효하지 않은 경우 단순히 5 초 새로 고침 만하면 도움이되지 않습니다. – rfeak
반환 데이터의 끝에 타임 스탬프를 넣어 브라우저가 캐시하지 않도록하십시오. –
@Michael : 브라우저를 사용하고 있지 않습니다. 내 자신의 자바 데스크톱 응용 프로그램 (아니라 애플릿뿐만 아니라) –