Wed, 05 Jul 2000 15:05:02 +0200
A few ideas and comments regarding the problem area factories/URNs/JNDI:
JNDI is definitely the preferred (read: J2EE-compliant) way of
discovering objects by their name. However, these objects must be
remote-enabled objects because JNDI is meant to be used as an interface
to a domain-wide directory service. This is a topic that we haven't
touched really yet - all BioJava-types (outside the CORBA regime) are
local and need to exist in one JVM to be able to co-operate (and this is
good - see below!).
There is no need to also make JNDI part of the API seen by the user of
BioJava. E.g., SequenceDBInstallation is a technology-neutral way of
getting SequenceDB-objects by name - it works whether it's
implementation requires a local SequenceDB object to exist (which
accesses a local flat file) or whether it's implementation locates an
RMI/IIOP-enabled remote object via JNDI.
Another word on distribution of objects: in Java, where remote-enabling
objects is so easy (using RMI (RMI/IIOP)) the temptation is to "just do
it". This usually leads to disastrous performance because fine-grained
objects (all of biojava-seq!) should not be remote-enabled! But's that's
an opulent topic...
Matthew Pocock wrote:
> Thanks for this code. Can I add it to org.biojava.bio.seq? I think that this is a short-tearm
> solution to a difficult problem, with things like URNs and JNDI being the more scalable &
> maintainable solution. But - KISS & all that - if SequenceDBInstallation works for you then I
> sudgest that we use it. To develop a URN scheim or implement JNDI will take more than 2 weeks - so
> it wouldn't make it into 1.0 anyhow.
> Gerald Loeffler wrote:
> > Hi!
> > We need factories for SequenceDB objects and we need managers for
> > SequenceDB objects such that e.g. there is only exactly one SequenceDB
> > object that accesses the SwissProt flat file /data/sprot/sprot.dat.
> > I attach 2 files: SequenceDBInstallation is an interface that defines
> > such a factory/manager for SequenceDB objects. It is very short and
> > documented rigorously, so please have a look at it for a more detailed
> > explanation why we need it. File StupidSequenceDBInstallation.java
> > contains an implementation of this interface for testing purposes.
> > Once interface SequenceDBInstallation is in place and implemented
> > widely, we should be able to do things like this:
> > SequenceDBInstallation inst = new SRSSequenceDBInstallation();
> > // or inst = new CorbaSequenceDBInstallation("bsa_naming_context");
> > // or inst = new FASTAFileSequenceDBInstallation("/data/sequences/");
> > SequenceDB sprot = inst.getSequenceDB("swissprot");
> > Sequence important = sprot.getSequence("FOO_DROME");
> > what do you think?,
> > cheers,
> > gerald
> > --
> > Gerald.Loeffler@vienna.at _________________ Software Architect
> > http://www.imp.univie.ac.at ____ http://www.daemonstration.com
> > OOA&D, Java, J2EE, JSP, Servlets, JavaBeans, ODBMS, RDBMS, XML
> > ------------------------------------------------------------------------
> Joon: You're out of your tree
> Sam: It wasn't my tree
> (Benny & Joon)
Gerald.Loeffler@vienna.at _________________ Software Architect
http://www.imp.univie.ac.at ____ http://www.daemonstration.com
OOA&D, Java, J2EE, JSP, Servlets, JavaBeans, ODBMS, RDBMS, XML