VE/Server is a 100% Java library that runs in any J2EE™ compliant server. As discussed in the Architecture pages, VE/Server can be deployed on top of either a Servlet engine (web server), or an EJB container (application server), enabling a wide range of deployment configurations of VE applications without modifying any of their logic.
VE/Server consists of three main areas: Transformation Engine, Execution Engine, and Resource Manager. These three areas work together in executing the application logic and interacting with external entities (i.e. client actors and resource actors).
The Execution Engine is the heart of the VE/Server. It is responsible for loading application logic from open XML documents, and converting them into Java objects. These objects are responsible for performing the application logic prescribed by a developer using the appropriate implementation. The Execution Engine operates in a pure object-oriented environment where everything is an object. The actual transformation to and from external representations (e.g. HTML, XML, SOAP, etc.) is performed by the Transformation Engine.
The Transformation Engine is responsible for converting objects to device-specific formats and vice versa. For example, it converts incoming client requests into the appropriate messages and objects so they can be passed to the Execution Engine. Upon completing the execution of a particular request, the Transformation Engine converts the results to the appropriate device format and representation (e.g. HTML for browser device vs. SOAP for a Web service device).
The Resource Manager is responsible for managing external resources, accordingly with the specified resource policies, to facilitate access to resource actors (i.e. external systems that VE applications are utilizing). A resource policy defines the type of external resource, connection descriptors, and required mapping information. The Resource Manager uses alternate implementations for communicating to external resources in a transparent way. The details of a resource policy and consequently the selected implementation can be modified at runtime using the VE/Administration Console without affecting the application logic.