Chcialem sobie skompilowac najprostszy przyklad z uzyciem corby, dopiero sie jej ucze. Jednak juz na poczatku mam trudnosci. Mam plik: echo.idl, kompiluje go tak:
idlj -fall echo.idl
Otrzymuję pliki EchoHelper.java, EchoHolder.java, EchoPOA.java, EchoOperations.java, Echo.java.
Mam też pliki: EchoClient.java, EchoServer.java, EchoImpl.java. Kompiluję je wszystkie tak:
javac *.java
dostaję takie błędy:
Note: EchoPOA.java uses unchecked or unsafe operation
Note: Recompile with -Xlint:unchecked for details.
No ale dobra, uruchamiam sobie orba:
orbd -ORBInitialPort 2004
i niby działa, uruchamiam serwer, : java EchoServer
i też działa, ale EchoClient wyświetla błąd, co jest związane z błędem czy też ostrzeżeniem przy kompilacji plików wygenerowaych przed idla.
Moje wszystkie pliki:
echo.idl:
interface Echo {
string echoString (in string mesg);
oneway void shutdown();
};
EchoImpl.java:
import org.omg.CORBA.*;
import org.omg.PortableServer.*;
import org.omg.PortableServer.POA;
import java.util.*;
class EchoImpl extends EchoPOA {
private ORB orb;
public void setORB(ORB orb_val) {
orb = orb_val;
}
public String echoString(String mesg) {
String data=new Date().toString();
System.out.println(data+": "+mesg);
return mesg+" "+data;
}
public void shutdown() {
orb.shutdown(false);
}
}
EchoClient.java:
import org.omg.CosNaming.*;
import org.omg.CosNaming.NamingContextPackage.*;
import org.omg.CORBA.*;
public class EchoClient
{
static Echo echoImpl;
public static void main(String args[])
{
try{
// create and initialize the ORB
ORB orb = ORB.init(args, null);
// resolve the Object Reference in Naming
echoImpl = EchoHelper.narrow(orb.string_to_object(args[0]));
System.out.println("Obtained a handle on server object: " + echoImpl);
System.out.println("Answer: "+echoImpl.echoString(args[1]));
// echoImpl.shutdown();
} catch (Exception e) {
System.out.println("ERROR : " + e) ;
e.printStackTrace(System.out);
}
}
}
EchoServer.java:
import org.omg.CosNaming.*;
import org.omg.CosNaming.NamingContextPackage.*;
import org.omg.CORBA.*;
import org.omg.PortableServer.*;
import org.omg.PortableServer.POA;
import java.util.Properties;
public class EchoServer {
public static void main(String args[]) {
try{
// create and initialize the ORB
ORB orb = ORB.init(args, null);
// get reference to rootpoa & activate the POAManager
POA rootpoa = POAHelper.narrow(orb.resolve_initial_references("RootPOA"));
rootpoa.the_POAManager().activate();
// create servant and register it with the ORB
EchoImpl echoImpl = new EchoImpl();
echoImpl.setORB(orb);
// get object reference from the servant
org.omg.CORBA.Object ref = rootpoa.servant_to_reference(echoImpl);
Echo href = EchoHelper.narrow(ref);
System.out.println("EchoServer ready and waiting ...\n");
System.out.println(""+href);
// System.out.println(orb.object_to_string(href));
// wait for invocations from clients
orb.run();
}
catch (Exception e) {
System.err.println("ERROR: " + e);
e.printStackTrace(System.out);
}
System.out.println("EchoServer Exiting ...");
}
}