msc course in advanced distributed systems session 2.2: practical corba programming
DESCRIPTION
MSc Course in Advanced Distributed Systems Session 2.2: Practical CORBA Programming. http://info.comp.lancs.ac.uk/msc/ads/index.htm. Resources. three problems: Echo, Time and Notifier http://www.comp.lancs.ac.uk/~leek/msc2004/ has problem specifications - PowerPoint PPT PresentationTRANSCRIPT
MSc Course in Advanced Distributed Systems
Session 2.2: Practical CORBA Programming
http://info.comp.lancs.ac.uk/msc/ads/index.htm
Resources
• three problems: Echo, Time and Notifier
• http://www.comp.lancs.ac.uk/~leek/msc2004/ has problem specifications
• 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 versionimport 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’