Proxy design pattern ile ilgili üçüncü yazımla karşınızdayım değerli Java dostları. İlk yazımda konuya giriş yapmış, ikinci yazımda ise bir alt tür olan protection proxy design pattern konularına değinmeye çalışmıştım. Bugün ise bir başka proxy design pattern türü olan remote proxy design pattern ile ilgili bilgi vermeye çalışacağım. Öncelikle vereceğim örneğin Java’ nın en popüler konularından birisi olan RMI üzerinden olduğunu vurgulamak istiyorum. Nedenini örnek koddan sonra anlatmaya çalışacağım.

package designpattern.proxy.remote;import java.rmi.Remote;
import java.rmi.RemoteException;

public interface ISum extends Remote {

public double sum(double value1, double value2) throws RemoteException;

}

package designpattern.proxy.remote;import java.rmi.RemoteException;
import java.rmi.server.UnicastRemoteObject;

public class SumImpl extends UnicastRemoteObject implements ISum {

protected SumImpl() throws RemoteException {
super();
}

private static final long serialVersionUID = 1L;

@Override
public double sum(double value1, double value2) throws RemoteException {
return (value1 + value2);
}

}

package designpattern.proxy.remote;import java.net.MalformedURLException;
import java.rmi.Naming;
import java.rmi.RemoteException;

public class ServerMain {

public static void main(String[] args) {

try {
ISum sumObj = new SumImpl();
Naming.rebind(“SumImpl”, sumObj);
} catch (RemoteException | MalformedURLException e) {
e.printStackTrace();
}

}

}

package designpattern.proxy.remote;import java.net.MalformedURLException;
import java.rmi.Naming;
import java.rmi.NotBoundException;
import java.rmi.RemoteException;

public class ClientMain {

public static void main(String[] args) {

try {
ISum sumObj = (ISum) Naming.lookup(“rmi://127.0.0.1/” + “SumImpl”);
System.out.println(sumObj.sum(1, 2));
} catch (MalformedURLException | RemoteException | NotBoundException e) {
e.printStackTrace();
}

}

}

Remote proxy design pattern konusuna en iyi örneklerden birisinin RMI olduğunu düşünüyorum; çünkü kullanıcı RMI ile uzaktaki bir objeyi direkt olarak kullandığını düşünürken aslında arada proxy objeleri vardır ve arka tarafta gömülü olmalarından dolayı kullanılmış olmaları fark edilmez. Client tarafından verilen istekler bu proxy objeleri üzerinden değerlendirilir. Kodun içerisinde RMI ile ilgili bazı teknik detaylar var. Bunları RMI ile ilgili başka bir yazıda anlatmanın daha uygun olduğunu düşünüyorum.

Bol Java’ lı günler dileğiyle… 😀

No responses yet

Bir cevap yazın

E-posta hesabınız yayımlanmayacak.