RMI: RemoteExceptionがウザイときに握りつぶす方法
あとからリモート化したときとか。
ちょっと回りくどい。もうちょっとスマートにできんもんか・・・
え、握りつぶすなって?
呼び出し元が100以上あったりするともう・・・。
// 元のインタフェース interface Hoge { void fuga(); } // 後から作った公開インタフェース interface RemoteHoge implements Remote { void fugaForRemote() throws RemoteException; } // 実装 class HogeImpl extends UnicastRemoteObject implements Hoge, RemoteHoge { public HogeImpl throws RemoteException { } public void fuga() { } public void fugaForRemote() throws RemoteException() { fuga(); } } // こいつで握りつぶす! class RemoteHogeWrapper implements Hoge { private final RemoteHoge remote; public RemoteHogeWrapper(RemoteHoge remote) { this.remote = remote; } public void fuga() { try { remote.fuga(); } catch(RemoteException e) { // 煮るなり焼くなり } } } // 使い方 Hoge hoge = new RemoteHogeWrapper((RemoteHoge) Naming.lookup());