Following on from the threads "HTTP Server for Phoenix" (9th, 10th & 11 Sept) and "Interoperations between blocks from diff classloaders" (3rd & 4th January), I'd like to re consider a need that's going to crop up on us sooner or later:

Apps in a Phoenix machine might not always be bound to their required services (bars within sars), they mught like to depend on a service outside the server application.

A good example has been pointed out to me after I wrapped Catalina in a phoenix block. If we publish a addWebApp(String name, URL locn) method to the interface, a dependant app (e.g. FtpServer could provide it's own servlet to show state), it could not have the "Bay" block as a bar file in it's distribution as it would not be the only thing that would want to serve a page over HTTP over port 80. But if the Bay application is cental, where would the common interfaces, Sun's servlet stuff in this case, reside? The solution, a hack, was to place servlet.jar at the primordial level.

Basically we need to have interfaces available in some central way, where the implementation might be in one class loader, and its dependant app might/will be in another classloader.

Options
--------

1) Central definition of interfaces (and exceptions)

Pros : Simple solution
Cons : Not version tolerant, though could have heretical version numbers in package or class names (ref LayoutManager2). Only good for regular server concepts (HTTPServer) as opposed to bespoke concepts (company X's ABC Server)


2) Promotion of interfaces (and exceptions). SAR file contains a jar of interfaces that it implements, it could hand it to the parent component (Phoenix) and Phoenix could make them available seperately, not necessarily at promordial level. It's an RMI type concept, but RMI is overkill for several reasons, not least of which is the ill-defined RemoteException.

Pros : Can tolerate different versions. Good for standards based services as well as bespoke ones.
Cons : Difficult to implement


Thoughts?

- Paul



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



Reply via email to