The JBoss Extensible Server
JBoss is an extensible, reflective, and dynamically reconfigurable Java application server. It includes a set of components that implement the J2EE specification, but its scope goes well beyond J2EE. JBoss is open-ended middleware, in the sense that users can extend middleware services by dynamically deploying new components into a running server. We believe that no other application server currently o.ers such a degree of extensibility. This paper focuses on two major architectural parts of JBoss: its middleware component model, based on the JMX model, and its meta-level architecture for generalized EJBs. The former requires a novel class loading model, which JBoss implements. The latter includes a powerful and flexible remote method invocation model, based on dynamic proxies, and relies on systematic usage of interceptors as aspect-oriented programming artifacts.
KeywordsVirtual Machine Service Component Java Virtual Machine Application Component Management Interface
- 1.J. Bloch. Effective Java. The Java Series. Addison-Wesley, 2001.Google Scholar
- 2.F. Buschmann, R. Meunier, H. Rohnert, P. Sommerlad, and M. Stal. Pattern-Oriented Software Architecture: A System of Patterns. Wiley, 1996.Google Scholar
- 3.E. Checchet, J. Marguerite, and W. Zwanepoel. Performance and scalability of EJB applications. In Conference on Object-Oriented Programming, Systems, Languages, and Applications (OOPSLA’02), 2002.Google Scholar
- 4.M. Clarke, G. S. Blair, G. Coulson, and N. Parlavantzas. An efficient component model for the construction of adaptive middleware. In Middleware 2001 — IFIP/ACM International Conference on Distributed Systems Platforms, volume 2218 of LNCS, pages 160–178. Springer-Verlag, 2001.Google Scholar
- 5.M. Dahm. Byte code engineering with the BCEL API. Technical Report B-17-98, Freie Universität Berlin — Institut für Informatik, 1998.Google Scholar
- 6.L. Deri. A Component-Based Architecture for Open, Independently Extensible Distributed Systems. PhD thesis, University of Berne, Switzerland, 1997.Google Scholar
- 7.L. Deri. Yasmin: A component-based architecture for software applications. In 8th International Workshop on Software Technology and Engineering Practice (STEP’97), pages 4–12, London, July 1997. IEEE Computer Society. Also published as IBM Research Report RZ 2899.Google Scholar
- 9.J. Ferber. Computational reflection in class-based object-oriented languages. In Proceedings of the 4th Conference on Object-Oriented Programming, Systems, Languages, and Applications (OOPSLA’89), pages 317–326, 1989.Google Scholar
- 11.E. Gamma, R. Helm, R. Johnson, and J. Vlissides. Design Patterns — Elements of Reusable Object-Oriented Software. Addison-Wesley, 1995.Google Scholar
- 12.S. D. Halloway. Component Development for the Java Platform. Addison-Wesley, 2002.Google Scholar
- 14.T. Jewell. EJB 2 and J2EE packaging, part II, July 2001. Available in O’Reilly’s On Java web site (http://www.onjava.com).
- 15.C. G. Jung. java.lang.ClassLoader.loadClassInternal (String) is too restrictive. Bug report submitted to java.sun.com (bug id 4670071), April 2002.Google Scholar
- 16.G. Kiczales, J. Lamping, A. Mendhekar, C. Maeda, C. V. Lopes, J.-M. Loingtier, and J. Irwin. Aspect-oriented programming. In ECOOP’97 — Object-Oriented Programming, 11th European Conference, volume 1241 of LNCS, pages 220–242. Springer-Verlag, 1997.Google Scholar
- 18.S. Liang and G. Bracha. Dynamic class loading in the Java virtual machine. In Conference on Object-Oriented Programming, Systems, Languages, and Applications (OOPSLA’98), pages 36–44, 1998.Google Scholar
- 19.J. Lindfors, M. Fleury, and The JBoss Group. JMX: Managing J2EE with Java Management Extensions. SAMS, 2002.Google Scholar
- 21.B. Peterson. Understanding J2EE application server class loading architectures, May 2002. Available in TheServerSide.com (http://www.theserverside.com).
- 22.D. Schmidt, M. Stal, H. Rohnert, and F. Buschmann. Pattern-Oriented Software Architecture: Patterns for Concurrent and Networked Objects. Wiley, 2000.Google Scholar
- 23.SourceForge.net. Monthly download statistics for JBoss, December 2002. http://sf.net/project/stats/index.php?report=months&groupid=22866.
- 24.S. Stark and The JBoss Group. JBoss Administration and Development, Edition 2.JBoss Group, 2002.Google Scholar
- 25.Sun Microsystems. Enterprise JavaBeans Specification, Version 2.0, 2001. http://java.sun.com/ejb/.
- 26.Sun Microsystems. Java 2-Platform Enterprise Edition Spec., v1.3, 2001. http://java.sun.com/j2ee/.
- 27.Sun Microsystems. Java Management Extensions — Instrumentation and Agent Specification, v1.1, 2002. http://java.sun.com/jmx/.
- 28.C. Szyperski. Component Software: Beyond Object-Oriented Programming. Addison-Wesley, 1998.Google Scholar
- 29.G. J. Vecellio, W. M. Thomas, and R. M. Sanders. Containers for predictable behavior of component-based software. In Proceedings of the 5th ICSE Workshop on Component-Based Software Engineering: Benchmarks for Predictable Assembly, Orlando, Florida, USA, 2002. Carnegie-Mellon Software Engineering Institute.Google Scholar