> > This is probably Axis. Axis is not a particularly efficient engine,
> > not least of all since they got carried away with the class
> injection
> > pattern...
>
> I think that "not particularly efficient" is a rather
> charitable description here, rather along the lines of
> describing the Pacific Ocean as "not particularly dry".
Oh, don't you start - I have enough trouble with some American
colleagues who don't fully appreciate the art of British understatement
;-)
> What, in the name of all that is holy, is it _doing_?
Well there are two things:
One is an pluggable architecture: you have a component to do the XML
to/from Java translation and a component to do the network transport,
etc. You can change these fairly easily if you want to change the
default behaviour of XML/Java parsing, change to SOAP over SMTP instead
of SOAP of HTTP etc. This necessarily adds some overhead but admittedly
not as much as Axis currently adds.
The other is class injection - instead of instantiating classes
directly, you instantiate a class specified in an configuration file
(which conforms to an appropriate interface). The advantages of this is
that you can change behaviour at runtime (even dynamically whilst the
program is running) by modifying the config. This is very powerful and
useful in certain circumstances. However it has a slight performance
hit. Axis seems to have got carried away with this idea, as almost every
class instantiation is via a config file lookup! I suspect that this is
where the performance hit comes from. It also makes it a nightmare to
read the code (useful for debugging and testing the code if you do
understand the code though...)
Matthew
|