MSc Course in Advanced Distributed Systems Session 2.2: Practical CORBA Programming
Resources three problems: Echo, Time and Notifier c2004/ has problem specificationshttp:// c2004/ There are 3 problems, Echo, File and Chat we will now look at the Echo example in some detail to get you started...
The Echo files (online) Echo.idl produces (mainly)... –EchoInterface.java. The IDL interface represented as a Java interface. –_EchoInterfaceImplBase.java. It implements the FileInterface.java interface –_EchoStub.java. The Stub. Client.java. The Client Implementation Server.java. The Server Implementation
Echo.idl // // Echo.idl // /// Put the interface in a module to avoid global namespace pollution module Exercise { // A very simple interface interface EchoServer { // Return the given string string echo(in string s); };
server.java 1 (of 2) // server.java, stringified object reference version import java.io.*; import org.omg.CORBA.*; class EchoServant extends _EchoImplBase { public String echo(String s) { return s; } public class server { public static void main(String args[]) { try{ // create and initialize the ORB ORB orb = ORB.init(args, null); // create servant and register it with the ORB EchoServant echoRef = new EchoServant(); orb.connect(echoRef);
server.java 2 (of 2) // stringify the EchoRef and dump it in a file String str = orb.object_to_string(echoRef); String filename = System.getProperty("user.home")+ System.getProperty("file.separator")+"EchoIOR"; FileOutputStream fos = new FileOutputStream(filename); PrintStream ps = new PrintStream(fos); ps.print(str); ps.close(); // wait for invocations from clients java.lang.Object sync = new java.lang.Object(); synchronized (sync) { sync.wait(); } } catch (Exception e) { System.err.println("ERROR: " + e); e.printStackTrace(System.out); }
client.java 1 (of 2) // client.java, stringified object reference version import java.io.*; import org.omg.CORBA.*; public class client { public static void main(String args[]) { try{ // create and initialize the ORB ORB orb = ORB.init(args, null); // Get the stringified object reference and destringify it. String filename = System.getProperty("user.home")+ System.getProperty("file.separator")+"echoIOR"; BufferedReader br = new BufferedReader(new FileReader(filename));
client.cpp 2 (of 2) String ior = br.readLine(); org.omg.CORBA.Object obj = orb.string_to_object(ior); Echo echoRef = EchoHelper.narrow(obj); // call the Echo server object and print results String echo = echoRef.echo("Hello, World"); System.out.println(echo); } catch (Exception e) { System.out.println("ERROR : " + e) ; e.printStackTrace(System.out); }
Running the application Follow the instructions on the web site to download the pre-compiled classes. running –run the server first: ‘java server’ –then run the client: ‘java server’