In 1925, inventor Boris Aivaz patented the process of making a cigarette filter from crepe paper. Cigarette filters are intended to reduce the amount of smoke, tar, and fine particles inhaled during the combustion of a cigarette.
Fast forward about 75 odd years to 2001 and the Java Servlet Specification 2.3 introduced a new component called a Filter. To quote the specification:
“A filter dynamically intercepts requests and responses to transform or use the information contained in the requests or responses.”
These filters can prove to be an extremely powerful tool for manipulating and customizing web-based applications for which we have partial or no access to the source code.
In Oracle PeopleSoft Enterprise 8 and above, which is a 100% pure web based application utilizing filters can sometimes be our only hope of changing behaviors for which we seemingly have no control. Part of the challenge with PeopleSoft is the fact that although it provides great tools for customizing and changing things like Look and Feel and functionality, other facets of the system are closed source and unmodifiable using the traditional tools.
It’s in instances such as these that true power of J2EE Filters really shines. I have found myself many a times needing to change a particular aspect of a PeopleSoft system that I simply could not change using tools like Application Designer or PeopleTools configuration screens. Over the years I have developed filters to provide added functionality such as:
- Supporting Right-to-Left languages.
- Working around browser (I’m looking at you Internet Explorer) bugs.
- Single Sign-on implementations
- Microsoft Office integration
- And many more…
It should be noted, that as cliché as it may sound, with great power comes great responsibility. Adding or changing functionality outside of the official tools provided by Oracle is un-supported and may result in erratic system behavior. Therefore implementing filters in a PeopleSoft environment should be very well planned, defined and meticulously executed in order not to break the whole system or to avoid breaching our support contracts.
Feel free to comment or drop me a line if you wish to discuss the untamed power of J2EE filters further.