An implemetantion of policies in web servers. - Ricardo Bravo (2004)
The development of Web based software has acquired a more important role to the business success in the Internet. The softwares are used by users that require dynamic, customized, fast and secure interactions. A characteristic for the success of the Web-based paradigm is the fact that the client is relatively simple and most of the integration and system decisions happen at the server side. From the outset, a client neither has information about other clients accessing the server nor knows the maintenance plan of the server. Generally, the server usually does not have capability to change its operating behavior to the client effectively. The dynamicity of the server extends its capability on satisfying Web application requirements but it makes the implementation and development complex. In addition there are constant changes in the requirements, need for reliability and resilience, even in the worst situation in term of simultaneous access or processing. Policy based management is viewed in this work as feasible alternative to the issue mentioned above. Policies are, in this work, information that can change the behavior of a system at runtime. There are policies mapping events to actions and others for specifying security restrictions and both of them can be described in a language close to the natural. Policy specification relies on domains, i.e., group of correlated objects hierarchically and it brings great lexibility in both specification and usage. This work implements policies in a Web server. In order to accomplish this it uses the Ponder specification language to describe policies. The implementation involves the policy definition, storage and conversion between formats such as textual, XML, memory its enforcement in the web server environment. Some supporting components for the policy enforcement based on technologies such as JMX and JNDI were developed. A mappinginterface between managed objects and human readable string representing hierarchical domains helps to increase the system flexibility and reconfiguration capabilities. Aspect oriented programming is used in this work, to provide a uniform mechanism for event collection and non functional requirements implemented. It creates an abstraction in order to define where to apply code changes based on how the system is structured.