I'm not quite sure if we're doing multi tenancy the right way yet. I'm still considering a couple of alternatives here:
1) Running each tenant in its own OSGi container. This does not imply each OSGi container actually runs in its own JVM, as it's easy to create a single JVM that runs multiple, isolated containers. Advantages of this system would be mostly a vastly simplified programming model as you don't need to worry about tenants in your application. If services would need to be shared between tenants, we could use remote services to "deploy them to each container". 2) Using a notion of a tenant that is a bit more abstract, where each tenant (or customer) gets not only simply isolation but also a specific quality of service linked to that tenant. Paul Fremantle talks about this in his ApacheCon presentation on "building cloud native software" (see http://pzf.fremantle.org/2010/11/building-cloud-native-software.html) where he discusses the merits of having "coach, business and private jet" service levels. Greetings, Marcel

