This example uses a very simple stack server. The specification
contains two interfaces: the first is the Stack itself and the
other is the StackFactory which is used to create new stacks.
The specification is in the file
Run the IDL compiler on this file by calling the
1> ic:gen("stack").
This will produce the client stub and server skeleton. Among other files a stack API module named
After generating the API stubs and the server skeletons it is time to
implement the servers and if no special options are sent
to the IDL compiler the file name should be
We also have the factory interface which is used to create new stacks
and that implementation is in the file
To start the factory server one executes the function
At last we will write a client to access our service.
To write a Java client for Orber you must have another
ORB that uses IIOP for client-server communication and supports a
Java language mapping. It must also have support for
If an ORB does not support CosNaming at all the
To build the example for access from a Java client you need a Java enabled ORB (e.g. JavaIDL). The example below is based on JDK-1.4.
fingolfin 127> erl
Erlang (BEAM) emulator version 5.5.4.3 [async-threads:0] [hipe] [kernel-poll:false]
Eshell V5.5.4.3 (abort with ^G)
1> ic:gen(stack).
Erlang IDL compiler version 4.2.12
ok
2> make:all().
Recompile: StackModule_EmptyStack
Recompile: StackModule_Stack
Recompile: StackModule_StackFactory
Recompile: StackModule_StackFactory_impl
Recompile: StackModule_Stack_impl
Recompile: oe_stack
Recompile: stack_client
Recompile: stack_factory
up_to_date
3>
BREAK: (a)bort (c)ontinue (p)roc info (i)nfo (l)oaded
(v)ersion (k)ill (D)b-tables (d)istribution
a
fingolfin 128> idlj stack.idl
fingolfin 129> javac StackModule/*.java
fingolfin 130> javac *.java
fingolfin 131> cp StackClient.class StackModule/
Below is a short transcript on how to run Orber.
fingolfin 143> erl
Erlang (BEAM) emulator version 5.5.4.3 [async-threads:0] [hipe] [kernel-poll:false]
Eshell V5.5.4.3 (abort with ^G)
1> orber:jump_start([{interceptors, {native, [orber_iiop_tracer_silent]}}]).
ok
2> oe_stack:oe_register().
ok
3> stack_factory:start().
ok
4> stack_client:run().
1
1
7
4
ok
5>
Before testing the Java part of this example generate and compile Java classes for
fingolfin 38> java StackModule.StackClient "corbaname::localhost:4001#StackFactory"
1
1
7
4
Empty stack
fingolfin 39>