WebLogicはRMIを使う際に特別な配慮をしてくれるので、標準のRMIとは実装方法が多少異なる。
		
  | 
	|
まず、インターフェースを作る。
このインターフェースを経由してクライアントからメソッドを呼び出すことになる。
package jp.hishidama.rmi; import java.rmi.Remote; public interface RmiSample extends Remote { public String getMessage(); }
WebLogicのRMIでは、java.rmi.Remoteからextendsするだけでよい。
(各メソッドに「throws RemoteException」を付ける必要も無い)
次に、インターフェースを実装したクラスを作る。
このクラスのインスタンスが実際に呼ばれることになる。
package jp.hishidama.rmi;
public class RmiSampleImpl implements RmiSample {
	public String getMessage() {
		String home = System.getProperty("wls.home");
		return "RmiSampleImplメッセージ: " + this + " / " + home;
	}
}
WebLogicのRMIでは、Serializableをimplementsする必要は無い。
(実行時に)実装クラスのインスタンスをWebLogicのJNDIへ登録(バインド)する。
以下の例では、RmiSampleNameという名前を付けてバインドしている。
	public static void main(String[] args) throws NamingException {
		InitialContext ctx = initContext();
		Object obj = new RmiSampleImpl();
		ctx.rebind("RmiSampleName", obj);
		for (;;);
	}
ここで登録したインスタンス(にアクセスするプロキシー)が、クライアントから取得される。
バッチの場合、最後に無限ループにしておかないと、JNDIからインスタンスを取得できない。(プログラムが終了すると、JNDIから消される為?)
public class RmiServlet extends HttpServlet {
	@Override
	public void init() throws ServletException {
		try {
			InitialContext ctx = new InitialContext();
			Object obj = new RmiSampleImpl();
			ctx.rebind("RmiSampleName", obj);
		} catch (NamingException e) {
			throw new ServletException(e);
		}
	}
〜
}
サーブレットのinit()は、そのサーブレットが初めてインスタンス化するときに一度だけ呼ばれる。
(そのサーブレットにブラウザーからアクセスしないとインスタンス化されないけどね)
WebLogicのJNDIの機能を利用して、リモートオブジェクト…JNDIに登録されているインスタンス(にアクセスするプロキシー)を取得する。
	public static void main(String[] args) throws NamingException {
		InitialContext ctx = initContext();
		RmiSample rs = (RmiSample) ctx.lookup("RmiSampleName");
		String msg = rs.getMessage();
		System.out.println(msg);
	}
インターフェース経由で呼び出すことで、WebLogic内で管理されているインスタンスのメソッドが呼ばれる。
(何度呼び出しても、同じインスタンスへのアクセスとなる)