System. out. println ("In grid. get(y=+y) System.out. printIn (" In grid geto value =+ value) return value 编写好 Implementation代码后,实际上你就可以编译了。使用 It _ javac命令进行编译。 在编译 gridlmpl. java之前,请先编译id生成的stub和 skeleton代码。 1)转到 D: \myworklsimpleDemo,用 mkdir classes建立一个目录 d: \myworklsimpleDeomlclasses我们编译后的clas文件都放在这个目录下 2)编译桩和骨架代码。转到D: myworklsimple Demoljava output\simple Demo目录,键 入命令: it javac -d d: \ Demolclasses *java (-d参数指明编译后的 class文件的输出目录,因为java中指定了包名 simple Demo,会自动创建一个 simpleDemo子目录, class文件放在此子目录 中。) 3)编译 gridlmpl. java。转到 D: \myworklsimpleDemo,键入命令: it javac -classpath . \classes -d classes gridlmpl java (- classpath指明 gridlmpl. java要用到的其他类文件,因为 gridlmpl. java中 用到了骨架文件中的类,也即第2)步所编译的文件,所以需要用- classpath 指明。) 键入it_ javac可以查看此命令的帮助。 oIt javac实际上还是调用jdk的 javac进行编译的, 需要用参数 JAVA HOME指定,这是为什么我们要对 JAVA HOME进行配置的原因。因此 改变JAⅤA_HOME就可改变使用的 javac编译器,非常方便 使用 It _ Javac而不直接使用 Javac的另一好处是 It Javac会自动在原有 CLASSPATH环 境变量后加上 CORBA所需的类库又不改变原有 CLASSPATH的值(所以我们不需在环境 变量中对 CLASSPATH做 orbix2000的类库设置,而只需做其他设置),同时用户还可以用 classpath指定额外的clas路径而不会覆盖已有的 CLASSPATH值。it_ javac会将这些值全 部传递给 JAVA HOME指定的 Javac编译器。 第四步:编写 Server Servant仅是实现代码,而 Server是包含 maino函数的可执行的代码。 Server的主要任 务就是创建所需的 Servant,同时通知POA已准备就绪,可以接受客户方的请求。 新建一个文件 gridServer. java,放在 D Imyworklsimple Demo下,代码如下: package simpleDemo import org. omg CORBA", import org. omg. Portable Server. * public class gridServer
16 System.out.println ("In grid.get() y = " + y); System.out.println ("In grid.get() value = " + value); return value; } } 编写好 Implementation 代码后,实际上你就可以编译了。使用 it_javac 命令进行编译。 在编译 gridImpl.java 之前,请先编译 idl 生成的 stub 和 skeleton 代码。 1) 转 到 D:\mywork\simpleDemo , 用 mkdir classes 建立一个目录 d:\mywork\simpleDeom\classes, 我们编译后的 class 文件都放在这个目录下。 2) 编译桩和骨架代码。转到 D:\mywork\simpleDemo\java_output\simpleDemo 目录,键 入命令: it_javac –d d:\mywork\simpleDemo\classes *.java (-d 参数指明编译后的 class 文件的输出目录,因为.java 中指定了包名 simpleDemo,会自动创建一个 simpleDemo 子目录,.class 文件放在此子目录 中。) 3) 编译 gridImpl.java。转到 D:\mywork\simpleDemo, 键入命令: it_javac –classpath .\classes –d classes gridImpl.java。 (-classpath 指明 gridImpl.java 要用到的其他类文件,因为 gridImpl.java 中 用到了骨架文件中的类,也即第 2)步所编译的文件,所以需要用-classpath 指明。) 键入 it_javac 可以查看此命令的帮助。it_javac 实际上还是调用 jdk 的 javac 进行编译的, 需要用参数 JAVA_HOME 指定,这是为什么我们要对 JAVA_HOME 进行配置的原因。因此 改变 JAVA_HOME 就可改变使用的 javac 编译器,非常方便。 使用 it_javac 而不直接使用 javac 的另一好处是 it_javac 会自动在原有 CLASSPATH 环 境变量后加上 CORBA 所需的类库又不改变原有 CLASSPATH 的值(所以我们不需在环境 变量中对 CLASSPATH 做 orbix2000 的类库设置,而只需做其他设置),同时用户还可以用 -classpath 指定额外的 class 路径而不会覆盖已有的 CLASSPATH 值。it_javac 会将这些值全 部传递给 JAVA_HOME 指定的 javac 编译器。 第四步:编写 Server Servant 仅是实现代码,而 Server 是包含 main()函数的可执行的代码。Server 的主要任 务就是创建所需的 Servant,同时通知 POA 已准备就绪,可以接受客户方的请求。 新建一个文件 gridServer.java,放在 D:\mywork\simpleDemo 下,代码如下: package simpleDemo; import java.io.*; import org.omg.CORBA.*; import org.omg.PortableServer.*; public class gridServer {
public static ORB global orb public sta tatic void main(String[ args)( final short width= 100 final short height=100 11. Initalise oRB for an application and resolve RootPOA reference System. out. println(Initializing the ORB"): global orb=ORB. init(args, null org.omg CORBA Object poa_obj global orb. resolve initial references (RootPOA"); org.omg. Portable Server POA root_poa org. omg. Portable Server. POAHelper narrow(poa obj) 1/2. Create servants activate them write their IoRs to files System. out. println("Creating objects") gridImpl grid=new gridImpl(width, height) bytel grid_oid= root_ poa activate_object(grid export_ object(root_ poa, grid_oid, ".grid, ior, gridHelper ido); 1/3. Activate the POA Manager to allow new requests to arrive System. out. println("Activating the POA Manager ) org.omg. Portable Server. POAManager poa manager root_ poa. the_ POAManagero poa manager. activate
17 public static ORB global_orb; public static void main(String[] args) { final short width = 100; final short height = 100; // 1. Initalise ORB for an application and resolve RootPOA reference try{ System.out.println("Initializing the ORB"); global_orb = ORB.init (args,null); org.omg.CORBA.Object poa_obj = global_orb.resolve_initial_references("RootPOA"); org.omg.PortableServer.POA root_poa = org.omg.PortableServer.POAHelper.narrow(poa_obj); // 2. Create servants, activate them, write their IORs to files. // System.out.println("Creating objects"); gridImpl grid=new gridImpl(width,height); byte[] grid_oid = root_poa.activate_object(grid); export_object(root_poa, grid_oid, "../grid.ior", gridHelper.id()); // 3. Activate the POA Manager to allow new requests to arrive // System.out.println("Activating the POA Manager"); org.omg.PortableServer.POAManager poa_manager = root_poa.the_POAManager(); poa_manager.activate();
114. Give control to the oRB to let it process incoming requests System.out. printIn(Giving control to the ORB to process requests") global orb. run(; System.out. println (Done"); catch(org. omg CORBA. ORBPackage InvalidName ex System. out. println( Failed to obtain root poa"+ ex ) catch(org.omg. Portable Server. POAPackage Wrong Policy ex) System. out. printin("Invalid POA policy"+ ex catch(org.omg. Portable Server. POAPackage ServantAlready Active ex) System. out. println ("POA servant already active"+ex) catch(org. omg. Portable Server. POAManager Package AdapterInactive ex) System. out. printIn("POAManager activate failed"+ ex System.out. println(grid Server exiting.. This function takes a poa and object id, builds an object reference representing that object, and exports the object reference to a file public static void export_object(POA poa, byte oid, String filename, String org. omg CORBA Object ref poa. create reference_ with id(oid type id)
18 // 4. Give control to the ORB to let it process incoming requests // System.out.println("Giving control to the ORB to process requests"); global_orb.run(); System.out.println ("Done"); } catch(org.omg.CORBA.ORBPackage.InvalidName ex) { System.out.println("Failed to obtain root poa " + ex ); } catch(org.omg.PortableServer.POAPackage.WrongPolicy ex) { System.out.println("Invalid POA policy " + ex ); } catch(org.omg.PortableServer.POAPackage.ServantAlreadyActive ex) { System.out.println("POA servant already active " + ex ); } catch(org.omg.PortableServer.POAManagerPackage.AdapterInactive ex) { System.out.println("POAManager activate failed" + ex ); } System.out.println("gridServer exiting..."); } /** * This function takes a poa and object id, builds an object * reference representing that object, and exports the object * reference to a file. */ public static void export_object(POA poa, byte[] oid, String filename, String type_id) { try { org.omg.CORBA.Object ref = poa.create_reference_with_id(oid, type_id);