實體 Bean DVD 有 5 個屬性 (id, title, releaseDate, producer, director)。客戶端逐一呼叫 getter 需 5 次 RMI 往返,網路延遲、序列化開銷成倍放大,高併發下系統崩潰。
定義可序列化的純資料載體 DVDInfo,一次 RMI 呼叫攜帶完整快照:
public class DVDInfo implements Serializable {
private int id; private String title; private Date releaseDate;
private Person producer; private Person director;
// getter/setter,無 RemoteException
}
public interface DVD extends EJBObject {
DVDInfo getInfo() throws RemoteException; // 一次性取回所有屬性
void setInfo(DVDInfo info) throws RemoteException; // 一次性更新
// 保留原有細粒度 getter/setter 供內部/特殊場景用
}
public DVDInfo getInfo() {
DVDInfo info = new DVDInfo();
info.setId(this.id);
info.setTitle(this.title);
info.setReleaseDate(this.releaseDate);
info.setProducer(getProducer()); // 容器內本地調用,無 RMI 開銷
info.setDirector(getDirector());
return info;
}
public void setInfo(DVDInfo info) {
setTitle(info.getTitle());
setReleaseDate(info.getReleaseDate());
setProducer(info.getProducer());
setDirector(info.getDirector());
}
getInfo()。