// Hello.java
package jdeveloper.rmi;
public interface Hello extends java.rmi.Remote {
String sayHello() throws java.rmi.RemoteException;
}
// HelloImpl.java
package jdeveloper.rmi_iiop;
public class HelloImpl extends javax.rmi.PortableRemoteObject implements Hello {
public HelloImpl() throws RemoteException { super(); }
public String sayHello() { return "Hello World!"; }
public static void main(String[] args) {
if (System.getSecurityManager() == null)
System.setSecurityManager(new RMISecurityManager());
try {
Hello obj = new HelloImpl();
Context ctx = new InitialContext();
ctx.rebind("HelloServer", obj); // JNDI 綁定
System.out.println("HelloServer bound in registry");
} catch (Exception e) { e.printStackTrace(); }
}
}
javac -d . Hello.java
javac -d . HelloImpl.java
rmic -iiop -d . jdeveloper.rmi_iiop.HelloImpl
// 產生 _Hello_Stub.class, _HelloImpl_Tie.class
Context ctx = new InitialContext();
Hello remote = (Hello) PortableRemoteObject.narrow(
ctx.lookup("iiop://" + args[0] + "/HelloServer"), Hello.class);
System.out.println(remote.sayHello());
tnameserv(CORBA 命名服務,預設埠 900)。java -Djava.naming.factory.initial=com.sun.jndi.cosnaming.CNCtxFactory -Djava.naming.provider.url=iiop://host:900 -Djava.security.policy=policy jdeveloper.rmi_iiop.HelloImpljava -D... jdeveloper.rmi_iiop.HelloClient hostnamepolicy 檔授予 AllPermission。批次檔 server.bat/client.bat 簡化指令。