Separation of Navigation Routing Code in J2EE Web Applications

  • Minmin Han
  • Christine Hofmeister
Part of the Lecture Notes in Computer Science book series (LNCS, volume 3579)


The navigation routing code of a web application is the part of the code involved in routing a request from a web page through the appropriate components on the server, typically ending with the display of a response page. Common maintenance activities are to change the sequence of pages or the processing for a page, and for these activities the navigation routing code must be located, understood, and possibly modified. But in J2EE applications this code is spread among a number of components, making maintenance costly. We describe an approach for separating this navigation routing code, using either Aspect Oriented Programming (AOP) or conventional OO techniques. We demonstrate how this improves maintainability by converting three exemplar applications from Sun and Oracle, with a 4- to 11-fold reduction in the number of files containing navigation routing code and in the lines of code in these files.


  1. 1.
    Barracuda Presentation Framework,
  2. 2.
    Expresso Web Services,
  3. 3.
    Gamma, E., Helm, R., Johnson, R., Vlissides, J.: Design Patterns. Addison-Wesley Professional, Reading (1995)Google Scholar
  4. 4.
    Han, M., Hofmeister, C.: Modeling Navigation Routing in J2EE Web Applications. Lehigh University Technical Report (2004)Google Scholar
  5. 5.
    Kiczales, G., Hilsdale, E., Hugunin, J., Kersten, M., Pal, J., Griswold, W.G.: An Overview of AspectJ. In: Knudsen, J.L. (ed.) ECOOP 2001. LNCS, vol. 2072, pp. 327–353. Springer, Heidelberg (2001)CrossRefGoogle Scholar
  6. 6.
    Kienzle, J., Guerraoui, R.: AOP: Does It Make Sense? The Case of Concurrency and Failures. In: Magnusson, B. (ed.) ECOOP 2002. LNCS, vol. 2374, pp. 37–61. Springer, Heidelberg (2002)CrossRefGoogle Scholar
  7. 7.
    Lewis Ship, H.M.: Tapestry in Action. Manning Publications (2004)Google Scholar
  8. 8.
  9. 9.
    Murphy, G.C., Lai, A., Walker, R.J., Robillard, M.P.: Separating Features in Source Code: An Exploratory Study. In: Proceedings of the 23rd International Conference on Software Engineering (ICSE 2001), Toronto, Canada, May 12-19, pp. 275–284. ACM Press, New York (2001)CrossRefGoogle Scholar
  10. 10.
  11. 11.
    Reina, A.M., Torres, J.: Analysing the Navigational Aspect. In: Proceedings of Second Aspect-Oriented Software Development Workshop (AOSD 2002), Germany (February 2002)Google Scholar
  12. 12.
    Rossi, G., Schwabe, D., Lyardet, F.: Improving Web Information Systems with Navigational Patterns. In: Proceedings of the 8th International Conference on WWW, Toronto, Canada, pp. 1667–1678. Elsevier North-Hooland, Inc., New York (1999)Google Scholar
  13. 13.
    Soares, S., Laureano, E., Borba, P.: Implementing distribution and persistence aspects with AspectJ. In: Proceedings of 17th Annual ACM conference on Object-oriented programming, systems, languages, and applications (OOPSLA 2002), Seattle, Washington, November 4-8, pp. 174–190. ACM Press, New York (2002)CrossRefGoogle Scholar
  14. 14.
  15. 15.
    Sun Java Blueprints: Guidelines, Patterns, and Code for End-to-end Applications,
  16. 16.
    Sun Java Center. The Duke’s Bank Application,
  17. 17.
  18. 18.
    Sun Java Center. Java Servlet Technology,

Copyright information

© Springer-Verlag Berlin Heidelberg 2005

Authors and Affiliations

  • Minmin Han
    • 1
  • Christine Hofmeister
    • 1
  1. 1.Computer Science and Engineering DeptLehigh UniversityBethlehemUSA

Personalised recommendations