Update (01 Feb 2018)
- mRUBiS as an exemplar for model-based architectural self-adaptation is now available at GitHub. It provides a simulator and architectural runtime model of mRUBiS to develop, evaluate, and compare self-adaptation solutions.
- The real prototype of mRUBiS realized with EJB3 technology, deployable to the GlassFish application server, and extended with the ten filter components is available at GitHub. The previous prototype without the ten filter components is available below for download.
In the context of our research on Models@run.time for Engineering Self-Adaptive Software, we employ mRUBiS, the modular Rice University Bidding System, which is an online marketplace realized with the Enterprise Java Beans 3 (EJB3) technology, as an application example. Originally, RUBiS (Rice University Bidding System) "is an auction site prototype modeled after eBay.com that is used to evaluate application design patterns and application servers performance scalability" (cf. RUBiS website). We re-engineered RUBiS to mRUBiS based on two goals. First, we modularized the architecture of RUBiS by having multiple, explicit components (multiple EJB modules for different services of RUBiS). Second, we migrated RUBiS from EJB2 to EJB3. Thereby, we extended the original version with additional services such as an Inventory Service.
Having a modularized or component-based architecture allows us to evaluate architectural adaptation strategies that add or remove components or connections between components. The following figure shows the architecture of mRUBiS.
Status and Availability
mRUBiS has been completely implemented targeting the GlassFish application server. The mRUBiS application is available for download:
Recently, we extended mRUBiS with additional ten components forming a pipe of filters that aim for improving the quality of search results. The resulting architecture is illustrated by the following figure. This extended mRUBiS is available at GitHub.
We would like to thank the RUBiS team for initiating and maintaining the free and open source RUBiS project.