锘??xml version="1.0" encoding="utf-8" standalone="yes"?>
鍏充簬corba鐨勪粙緇嶆垜灝變笉澶氳浜嗭紝緗戜笂閭d箞澶氫笓瀹剁粰鐨勬蹇碉紝鑷繁google涓涓嬶紝闅忎究鐐逛釜浜嗚В涓嬪氨琛屼簡銆?br> 鎴戜滑鍏徃鐢ㄧ殑IDL緙栬瘧鍣ㄦ槸Orbacus錛岄鍏堝啓涓涓狪DL鏂囦歡錛屾枃浠跺悕涓猴細(xì)hello.idl浠ヤ笅鏄簮鐮侊細(xì)
//IDL
module test{
interface Hello{
void sayHello();
};
};
灝咺DL鏂囦歡copy鍒扮紪璇戝櫒鐨刡in鐩綍涓嬶紝鐒跺悗鎵撳紑MS-DOS紿楀彛錛岃漿鎹㈠埌浣犵殑緙栬瘧鍣ㄧ殑bin鐩綍涓嬭緭鍏ュ懡浠idl錛屽鍥撅細(xì)
jidl鍛戒護(hù)鐨勫弬鏁版渶濂借緭鍏ユ枃浠跺叏鍚嶏紙鍖呮嫭鍚庣紑錛夛紝榪欐椂鍊欎細(xì)鍦ㄨ鐩綍涓嬬敓鎴愪竴涓猼est鐩綍錛屽湪test鐩綍涓嬪垱寤轟竴涓狧ello_Impl.java鏂囦歡錛屼唬鐮佸涓嬶細(xì)
package test;
public class Hello_impl extends HelloPOA {
public void sayHello(){
System.out.println("Hello World");
}
}
瀹冨疄鐜頒簡sayHello()鏂規(guī)硶銆?br>
鎺ョ潃鍒涘緩涓涓伐鍏風(fēng)被錛屾枃浠跺悕涓篛RBImpl.java錛堟敞鎰忓寘鐩綍緇撴瀯鍝︼級錛屼唬鐮佸涓嬶細(xì)
package test.common;
import java.io.BufferedReader;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Properties;
import org.omg.CORBA.ORB;
import org.omg.CORBA.Object;
import org.omg.PortableServer.POA;
import org.omg.PortableServer.POAHelper;
import org.omg.PortableServer.POAManager;
import test.Hello;
import test.HelloHelper;
public class ORBImpl {
private ORB orb;
private POA poaRoot;
private POAManager poaManager;
private Object poaObj;
public ORBImpl(){
orb = null;
poaRoot = null;
poaManager = null;
poaObj = null;
}
public void initEnv(String[]args){
Properties props = System.getProperties();
props.put("org.omg.CORBA.ORBClass","com.ooc.CORBA.ORB");
props.put("org.omg.CORBA.ORBSingletonClass","com.ooc.CORBA.ORBSingleton");
try{
orb = ORB.init(args,props);
}catch(Exception ex){
ex.printStackTrace();
}
}
public void initServer(){
try{
poaObj = orb.resolve_initial_references("RootPOA");
poaRoot = POAHelper.narrow(poaObj);
poaManager = poaRoot.the_POAManager();
}catch(Exception ex){
ex.printStackTrace();
}
}
public void serverGo(Hello hello){
try{
String fileName = "Hello.ref";
String strClient = orb.object_to_string(hello);
PrintWriter out = new PrintWriter(new FileOutputStream(fileName));
out.print(strClient);
out.close();
}catch(IOException ex){
ex.printStackTrace();
}
}
public void clientGo(){
Object clientObj = null;
try{
String fileName = "Hello.ref";
BufferedReader in = new BufferedReader(new FileReader(fileName));
String strClient = in.readLine();
clientObj = orb.string_to_object(strClient);
}catch(IOException ex){
ex.printStackTrace();
}
Hello hello = HelloHelper.narrow(clientObj);
hello.sayHello();
}
public void destroy(){
if(orb != null){
try{
orb.destroy();
}catch(Exception ex){
ex.printStackTrace();
System.exit(0);
}
}
}
public void active(){
try{
poaManager.activate();
orb.run();
}catch(Exception ex){
ex.printStackTrace();
System.exit(0);
}
}
public ORB getORBRoot(){
return this.orb;
}
}
鐒跺悗鍒涘緩Server.java鏂囦歡錛屼唬鐮佸涓嬶細(xì)
package test;
import test.common.ORBImpl;
public class Server {
public static void main(String[]args){
ORBImpl server = new ORBImpl();
server.initEnv(args);
server.initServer();
Hello_impl helloImpl = new Hello_impl();
Hello hello = helloImpl._this(server.getORBRoot());
server.serverGo(hello);
server.active();
server.destroy();
}
}
緇堜簬鍒頒簡鏈鍚庝竴姝ヤ簡錛屽垱寤哄鎴風(fēng)鏂囦歡Client.java錛屼唬鐮佸涓嬶細(xì)
package test;
import test.common.ORBImpl;
public class Client {
public static void main(String[]args){
ORBImpl client = new ORBImpl();
client.initEnv(args);
client.clientGo();
client.destroy();
}
}