• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
JIRA Virtualisation

JIRA Virtualisation



Virtualising JIRA (a large J2EE application) by modifying it to have multiple customer 'machines' with in a single deployed WAR context.

Virtualising JIRA (a large J2EE application) by modifying it to have multiple customer 'machines' with in a single deployed WAR context.



Total Views
Views on SlideShare
Embed Views



5 Embeds 31

http://extranet.atlassian.com 14
http://www.slideshare.net 8
https://extranet.atlassian.com 7
http://bbain@extranet.atlassian.com 1
http://www.techgig.com 1



Upload Details

Uploaded via as Adobe PDF

Usage Rights

CC Attribution-NonCommercial-ShareAlike LicenseCC Attribution-NonCommercial-ShareAlike LicenseCC Attribution-NonCommercial-ShareAlike License

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
Post Comment
Edit your comment

    JIRA Virtualisation JIRA Virtualisation Presentation Transcript

    • GOAL: 2 Customers In 1 JIRA Install
    • WTF?
    • Normal JIRA Files & Database Indexes Application Data - Spring JIRA Context - /build/jira.war Tomcat - http://jira.spring.com Java Virtual Machine - /Library/Java/Home
    • Two Customers Files & Files & Database Indexes Database Indexes Application Data Application Data Spring JIRA Apache JIRA Context - /build/jira.war Context - /build/jira.war Tomcat - http://jira.spring.com Tomcat - http://jira.apache.org Java Virtual Machine - /Library/Java/Home Java Virtual Machine - /Library/Java/Home
    • JIRA Virtual Machines Database Files Database Files spring-db /data/spring apache-db /data/apache Application Data Application Data Spring JIRA Apache JIRA http://jira.spring.com http://jira.apache.org Context - /build/jira.war Tomcat - http://*.com Java Virtual Machine - /Library/Java/Home One Java VM. One Tomcat. One WAR. Two Hosts.
    • Challenges
    • static = f!*k
    • Thread = holy f!*k
    • How? • VirtualisationLoader loads VirtualMachines • VirtualisationLoader chooses VirtualMachine by host name ... could be any request attr • Internal resources chosen by current VM eg PicoContainer, OSUser, OFBiz, Datasource, File Locations... • Scheduler runs for every VM
    • Configuration Each VM configured in a single XML snippet. - Configures OFBiz, OSUser etc automatically - Minimum possible config (ie automatic <delegator>!) - Can use any osuser.xml inside <user-management>
    • JIRA Changes • 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 configuration generated ... modified OFBiz so EE now reloadable! • Fixed 7 year old loading bug in OFBizPropertySet
    • Demo
    • Results
    • Neat Features • 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 fly eg move a JIRA VM from one physical server to another without unloading Java VM • JIRA VMs can be “loaded” off the internet!
    • Func Tests? ~90% Pass 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)