Read Me
FreeTrade: an implementation of the CORBA Trading Service
What's a Trading Service? If you were looking for this, you know. If
you just found it and are curious: the Trading Service is a service for
locating other services by type. A server can place advertisements with
the Trading Service ("exporting services") and clients can ask for lists
of services which meet their needs ("importing services"). Services are
known by abstract type names and lists of properties, not by address or
hostname or suchlike, so many services of the same type may be exported
by servers all over your network and distinguished by their property
lists. If, now, you're *really* curious, then go to the OMG.Org site
and read the specification, or find a good book on CORBA. (Oh, yeah,
CORBA is the Common Object Request Broker Architecture, developed by
members of the Object Management Group: www.omg.org.)
You need:
o a Java Runtime Environment. FreeTrade was developed using Sun's Java
1.6 JDK. The JRE's own IDL compiler and ORB were used.
o a relational database and its JDBC driver. FreeTrade was developed
using PostgreSQL, but I've attempted to hew to the SQL standard and
avoid proprietary extensions.
o various packages as shown in the file pom.xml (a Maven Project Object
Model description). See the <dependencyManagement> element. FIXME
generate this list from the POM.
In particular, you will need to select a logging backend which is
compatible with SLF4j. FreeTrade was developed using Logback.
You must:
o start the server. The Java native ORB is bound into each server;
there is nothing hanging around waiting to start services on
demand. The Java documentation does not make that abundantly clear.
You could use a CORBA Implementation Repository to start the server
on demand, if you have one.
o start the type repository. The Trading Service depends on this
separate service for service type definitions. You must also tell
the Trading Service how to find the Type Repository. As usual CORBA
gives lots of options and little guidance. This Type Repository can
register itself in a Naming Service directory, and/or emit a
stringified IOR for use in scripts or what-have-you. There's no
well-known Initial Reference name for the Type Repository, but this
Trading Service can be told to read a repository IOR from a file or
fetch it by name from a directory or use a statically configured IOR
(perhaps pointing to an Implementation Repository).
o configure ORBs. Any client must have its ORB configured with an
initial reference to the service. FreeTrade can emit a stringified
IOR when it starts, which should be just what you need. Consult your
ORBs' documentation for details specific to your environment(s).
Securing the service: FIXME it will be secure when I get around to it.
For now, any program which can contact the service can export, import,
and configure at will. Firewalls are your friends. You Have Been
Warned.
Why does FreeTrade exist? I needed a Trading Service, and there wasn't
one packed with the free ORBs I was using, so I had to write one, didn't
I? I like to do a good job and make things that are generally useful,
but FreeTrade's raison d'etre is to support things I wanted to write
which needed a Trading Service. If you find it useful too, I'm
pleased; if you don't, I'm sorry but not obligated. If you tell me how
it could be better, I may take your advice, with thanks.
How can you use FreeTrade legally? FreeTrade is offered to you under
the terms of the GNU General Public License, a copy of which is
enclosed as the file COPYING. Please read the license thoughtfully:
your rights under it are broad but definitely limited, and you have no
other source of rights to my code.