The Architecture
The Product Server
The main Web applications in LAS (the Product Server and the UI Server) are build on top of Struts. The Product Server is a Struts action class that takes in the LAS client request (typically an Ajax application running in a browser), breaks the request apart and farms out the work necessary to build the product to one or more backend services, collects the results from the services and forwards the response back to the client.
The product server is also responsible for managing the LAS cache so that requests for the exact same product can be handled directly without sending them to the backend services. And the product server is responsible for keeping track of active requests and joining requests from two clients for the exact same product into a single thread so that the system need only create the product one time. Additionally, the Product Server will communicate with the client in the event that the request takes a long time, letting it know that the request is still being worked on and how long the request has been active. The Product Server will also accept email addresses in the case of a long running job to notify the user when the product is finished. The Product Server will also accept requests to cancel jobs and will notify the services involved that they are to stop working on the request.
The User Interface Server
While the Product Server and the User Interface Server are identified as two different servers, they are all just a collection of Struts Action classes. The User Interface Server consists of a collection of Action Classes that can respond with information about LAS configuration from which a client can construct a User Interface. The details of the requests and responses are documented. We use these services with Ajax clients written in JavaScript and in Java (using the Google Web Toolkit) to build the interfaces that are released with LAS.
The Backend Services
The Backend Services are Plain Ordinary Java Objects with one method the receives a String argument (that is an XML Backend Request) and returns a single String argument (an XML Backend Response). These services are deployed as SOAP services using Apache Axis. You can see the services available for a particular LAS by looking the the ProductServer.do URL for the LAS.