• VirtualisationLoader loads VirtualMachines
• VirtualisationLoader chooses VirtualMachine by
... could be any request attr
• Internal resources chosen by current VM
eg PicoContainer, OSUser, OFBiz, Datasource,
• Scheduler runs for every VM
Each VM conﬁgured in a single XML snippet.
- Conﬁgures OFBiz, OSUser etc automatically
- Minimum possible conﬁg (ie automatic <delegator>!)
- Can use any osuser.xml inside <user-management>
• No more static caches!
... looked through 6,700 ‘static’ in *.java
• 38 code changes in JIRA + 4 libs
• No more singletons
ie UserManager.getInstance() result based on VM
• PicoContainer magic - per VM containers
• EntityEngine conﬁguration generated
... modiﬁed OFBiz so EE now reloadable!
• Fixed 7 year old loading bug in OFBizPropertySet
• VMs can use different user management
eg Crowd in one, OFBiz + OSuser in other
• Simpler setup than normal JIRA
• VMs can be loaded / unloaded on the ﬂy
eg move a JIRA VM from one physical server to
another without unloading Java VM
• JIRA VMs can be “loaded” off the internet!
Against 2 VMs in parallel!
* Never ran them before though - probably not 100%!
Java VM JIRAs Memory
1 1 40MB
4 4 170MB
1 4 80MB
* HSQLDB so the data here is all in memory (I suspect results would be much better with MySQL)
** Used data from Extranet JIRA (approx 1000 issues, 20 projects, 250 users)