SlideShare ist ein Scribd-Unternehmen logo
1 von 18
Zero redeployment with JRebel




                          Minh Hoang TO

                          Portal Team
Agenda

 1. JRebel


 2. GateIn zero-redeployment


 3. How does JRebel work?




             www.exoplatform.com - Copyright 2012 eXo Platform   2
JRebel



www.exoplatform.com - Copyright 2012 eXo Platform   3
- Developer(s): Zero Turnaround

- Written in: Java

- License: Proprietary

- Highlighted features:

   Immediately visible code changes without redeploying

   Easy installation and simple configuration



                          www.exoplatform.com - Copyright 2012 eXo Platform   4
Free license plans


OSS plan

Commiters of Open Source projects have access to free license


Social plan


Free license in exchange of privileged to post on Twitter/Facebook account




                    www.exoplatform.com - Copyright 2012 eXo Platform        5
GateIn zero-deployment



     www.exoplatform.com - Copyright 2012 eXo Platform   6
GateIn code changes in IDE are reflected immediately on browser without the
need of redeploying. Say GOODBYE to tedious redeploy work



 Productive dev environment applicable to any eXo product:

         Social, Wiki, Forum, ECMS, Platform




                     www.exoplatform.com - Copyright 2012 eXo Platform        7
Demo



- Targeted Maven artifacts:

 exo.portal.webui.portal (basic UI components of GateIn portal)

 exo.portlet.exoadmin (core portlets of GateIn)


- Expectation:

 Code changes on portal/portlet components from those two artifacts take
 effect on browser without the need of redeploying .war to Tomcat




                      www.exoplatform.com - Copyright 2012 eXo Platform    8
Before demo

1. Customize packaging/tomcat/pkg/src/main/resources/tomcat/bin/gatein-dev.sh




2. Generate rebel.xml in targeted Maven artifacts


3. Build and run GateIn




                      www.exoplatform.com - Copyright 2012 eXo Platform     9
rebel.xml




            www.exoplatform.com - Copyright 2012 eXo Platform   10
rebel.xml




            www.exoplatform.com - Copyright 2012 eXo Platform   11
JRebel agent starts




               www.exoplatform.com - Copyright 2012 eXo Platform   12
Demo starting ...



  www.exoplatform.com - Copyright 2012 eXo Platform   13
How does JRebel work?



     www.exoplatform.com - Copyright 2012 eXo Platform   14
Object & Class

        MyObject obj = new MyObject();

        Class<?> type = obj.getClass();


1. Behavior of method call on 'obj' is determined by 'type'

2. 'type' is identified by MyObject.class bytecode and context ClassLoader of the
   code MyObject obj = new MyObject();

3. Once loaded, 'type' could not be unloaded or changed (class loader holds a
vector of loaded classes)

4. JRebel approach to redefine 'type'

   Black box as JRebel is not open source! But described as a combination of

       Instrumentation API + Byte code handling + Class loader

                       www.exoplatform.com - Copyright 2012 eXo Platform        15
Class redefinition




               www.exoplatform.com - Copyright 2012 eXo Platform   16
MANIFEST.MF




              www.exoplatform.com - Copyright 2012 eXo Platform   17
JRebel agent


The code in AgentInstall is likely to be




                       www.exoplatform.com - Copyright 2012 eXo Platform   18

Weitere ähnliche Inhalte

Was ist angesagt?

Implementing Test Automation in Agile Projects
Implementing Test Automation in Agile ProjectsImplementing Test Automation in Agile Projects
Implementing Test Automation in Agile ProjectsDominik Dary
 
Single Sourcing RAP and RCP - Desktop and web clients from a single code base
Single Sourcing RAP and RCP - Desktop and web clients from a single code baseSingle Sourcing RAP and RCP - Desktop and web clients from a single code base
Single Sourcing RAP and RCP - Desktop and web clients from a single code baseRalf Sternberg
 
How we Test at eBay Europe
How we Test at eBay EuropeHow we Test at eBay Europe
How we Test at eBay EuropeMichael Palotas
 
iOS Automation Frameworks evaluation
iOS Automation Frameworks evaluationiOS Automation Frameworks evaluation
iOS Automation Frameworks evaluationSerghei Moret
 
Selenium Interview Questions And Answers | Selenium Interview Questions | Sel...
Selenium Interview Questions And Answers | Selenium Interview Questions | Sel...Selenium Interview Questions And Answers | Selenium Interview Questions | Sel...
Selenium Interview Questions And Answers | Selenium Interview Questions | Sel...Simplilearn
 
"Architecting and testing large iOS apps: lessons from Facebook". Adam Ernst,...
"Architecting and testing large iOS apps: lessons from Facebook". Adam Ernst,..."Architecting and testing large iOS apps: lessons from Facebook". Adam Ernst,...
"Architecting and testing large iOS apps: lessons from Facebook". Adam Ernst,...Yandex
 
Eclipse 2011 Hot Topics
Eclipse 2011 Hot TopicsEclipse 2011 Hot Topics
Eclipse 2011 Hot TopicsLars Vogel
 
Selenium training12 1
Selenium training12 1Selenium training12 1
Selenium training12 1AmanCSE1
 
Jbossworld Presentation
Jbossworld PresentationJbossworld Presentation
Jbossworld PresentationDan Hinojosa
 
Java days Lviv 2015
Java days Lviv 2015Java days Lviv 2015
Java days Lviv 2015Alex Theedom
 
Debot android debugging library
Debot android debugging libraryDebot android debugging library
Debot android debugging libraryTomoaki Imai
 
p2, your savior or your achilles heel? Everything an Eclipse team needs to kn...
p2, your savior or your achilles heel? Everything an Eclipse team needs to kn...p2, your savior or your achilles heel? Everything an Eclipse team needs to kn...
p2, your savior or your achilles heel? Everything an Eclipse team needs to kn...irbull
 
2017 03 25 Microsoft Hacks, How to code efficiently
2017 03 25 Microsoft Hacks, How to code efficiently2017 03 25 Microsoft Hacks, How to code efficiently
2017 03 25 Microsoft Hacks, How to code efficientlyBruno Capuano
 

Was ist angesagt? (16)

Implementing Test Automation in Agile Projects
Implementing Test Automation in Agile ProjectsImplementing Test Automation in Agile Projects
Implementing Test Automation in Agile Projects
 
Single Sourcing RAP and RCP - Desktop and web clients from a single code base
Single Sourcing RAP and RCP - Desktop and web clients from a single code baseSingle Sourcing RAP and RCP - Desktop and web clients from a single code base
Single Sourcing RAP and RCP - Desktop and web clients from a single code base
 
How we Test at eBay Europe
How we Test at eBay EuropeHow we Test at eBay Europe
How we Test at eBay Europe
 
iOS Automation Frameworks evaluation
iOS Automation Frameworks evaluationiOS Automation Frameworks evaluation
iOS Automation Frameworks evaluation
 
Selenium Interview Questions And Answers | Selenium Interview Questions | Sel...
Selenium Interview Questions And Answers | Selenium Interview Questions | Sel...Selenium Interview Questions And Answers | Selenium Interview Questions | Sel...
Selenium Interview Questions And Answers | Selenium Interview Questions | Sel...
 
"Architecting and testing large iOS apps: lessons from Facebook". Adam Ernst,...
"Architecting and testing large iOS apps: lessons from Facebook". Adam Ernst,..."Architecting and testing large iOS apps: lessons from Facebook". Adam Ernst,...
"Architecting and testing large iOS apps: lessons from Facebook". Adam Ernst,...
 
Eclipse 2011 Hot Topics
Eclipse 2011 Hot TopicsEclipse 2011 Hot Topics
Eclipse 2011 Hot Topics
 
Selenium training12 1
Selenium training12 1Selenium training12 1
Selenium training12 1
 
Jbossworld Presentation
Jbossworld PresentationJbossworld Presentation
Jbossworld Presentation
 
Java days Lviv 2015
Java days Lviv 2015Java days Lviv 2015
Java days Lviv 2015
 
Debot android debugging library
Debot android debugging libraryDebot android debugging library
Debot android debugging library
 
p2, your savior or your achilles heel? Everything an Eclipse team needs to kn...
p2, your savior or your achilles heel? Everything an Eclipse team needs to kn...p2, your savior or your achilles heel? Everything an Eclipse team needs to kn...
p2, your savior or your achilles heel? Everything an Eclipse team needs to kn...
 
Android programming-basics
Android programming-basicsAndroid programming-basics
Android programming-basics
 
Java By Sai NagaVenkata BuchiBabu Manepalli
Java By Sai NagaVenkata BuchiBabu ManepalliJava By Sai NagaVenkata BuchiBabu Manepalli
Java By Sai NagaVenkata BuchiBabu Manepalli
 
Introduction to Eclipse IDE
Introduction to Eclipse IDEIntroduction to Eclipse IDE
Introduction to Eclipse IDE
 
2017 03 25 Microsoft Hacks, How to code efficiently
2017 03 25 Microsoft Hacks, How to code efficiently2017 03 25 Microsoft Hacks, How to code efficiently
2017 03 25 Microsoft Hacks, How to code efficiently
 

Ähnlich wie Zero redeployment with JRebel

How to develop an iOS application
How to develop an iOS applicationHow to develop an iOS application
How to develop an iOS applicationLe Quang
 
javagruppen.dk - e4, the next generation Eclipse platform
javagruppen.dk - e4, the next generation Eclipse platformjavagruppen.dk - e4, the next generation Eclipse platform
javagruppen.dk - e4, the next generation Eclipse platformTonny Madsen
 
Eclipse Overview
Eclipse Overview Eclipse Overview
Eclipse Overview Lars Vogel
 
Eclipse Demo Camp 2010 - Eclipse e4 – The Status and the Future
Eclipse Demo Camp 2010 - Eclipse e4 – The Status and the FutureEclipse Demo Camp 2010 - Eclipse e4 – The Status and the Future
Eclipse Demo Camp 2010 - Eclipse e4 – The Status and the FutureTonny Madsen
 
IOC and AOP presentation
IOC and AOP presentationIOC and AOP presentation
IOC and AOP presentationthanhc0110m
 
IOC and AOP presentation
IOC and AOP presentationIOC and AOP presentation
IOC and AOP presentationthanhc0110m
 
Building Eclipse Plugins with Tycho
Building Eclipse Plugins with TychoBuilding Eclipse Plugins with Tycho
Building Eclipse Plugins with Tychojsievers
 
[Devoxx Morocco 2015] Apache Cordova In Action
[Devoxx Morocco 2015] Apache Cordova In Action[Devoxx Morocco 2015] Apache Cordova In Action
[Devoxx Morocco 2015] Apache Cordova In ActionHazem Saleh
 
React Native for multi-platform mobile applications
React Native for multi-platform mobile applicationsReact Native for multi-platform mobile applications
React Native for multi-platform mobile applicationsMatteo Manchi
 
Electron - cross platform desktop applications made easy
Electron - cross platform desktop applications made easyElectron - cross platform desktop applications made easy
Electron - cross platform desktop applications made easyUlrich Krause
 
Effective JavaFX architecture with FxObjects
Effective JavaFX architecture with FxObjectsEffective JavaFX architecture with FxObjects
Effective JavaFX architecture with FxObjectsSrikanth Shenoy
 
eXoer on the grill: eXo Add-ons factory using Docker and Codenvy
eXoer on the grill: eXo Add-ons factory using Docker and CodenvyeXoer on the grill: eXo Add-ons factory using Docker and Codenvy
eXoer on the grill: eXo Add-ons factory using Docker and CodenvyeXo Platform
 
Baruco 2014 - Rubymotion Workshop
Baruco 2014 - Rubymotion WorkshopBaruco 2014 - Rubymotion Workshop
Baruco 2014 - Rubymotion WorkshopBrian Sam-Bodden
 
Ewebkit basic (Web rendering enging of EFL)
Ewebkit basic (Web rendering enging of EFL)Ewebkit basic (Web rendering enging of EFL)
Ewebkit basic (Web rendering enging of EFL)ryuan choi
 
Build UI of the Future with React 360
Build UI of the Future with React 360Build UI of the Future with React 360
Build UI of the Future with React 360RapidValue
 
Plug yourself in and your app will never be the same (1 hr edition)
Plug yourself in and your app will never be the same (1 hr edition)Plug yourself in and your app will never be the same (1 hr edition)
Plug yourself in and your app will never be the same (1 hr edition)Mikkel Flindt Heisterberg
 
Django simplified : by weever mbakaya
Django simplified : by weever mbakayaDjango simplified : by weever mbakaya
Django simplified : by weever mbakayaMbakaya Kwatukha
 

Ähnlich wie Zero redeployment with JRebel (20)

How to develop an iOS application
How to develop an iOS applicationHow to develop an iOS application
How to develop an iOS application
 
I os
I osI os
I os
 
javagruppen.dk - e4, the next generation Eclipse platform
javagruppen.dk - e4, the next generation Eclipse platformjavagruppen.dk - e4, the next generation Eclipse platform
javagruppen.dk - e4, the next generation Eclipse platform
 
Eclipse Overview
Eclipse Overview Eclipse Overview
Eclipse Overview
 
Codename one
Codename oneCodename one
Codename one
 
Eclipse Demo Camp 2010 - Eclipse e4 – The Status and the Future
Eclipse Demo Camp 2010 - Eclipse e4 – The Status and the FutureEclipse Demo Camp 2010 - Eclipse e4 – The Status and the Future
Eclipse Demo Camp 2010 - Eclipse e4 – The Status and the Future
 
IOC and AOP presentation
IOC and AOP presentationIOC and AOP presentation
IOC and AOP presentation
 
IOC and AOP presentation
IOC and AOP presentationIOC and AOP presentation
IOC and AOP presentation
 
Building Eclipse Plugins with Tycho
Building Eclipse Plugins with TychoBuilding Eclipse Plugins with Tycho
Building Eclipse Plugins with Tycho
 
Development withforce
Development withforceDevelopment withforce
Development withforce
 
[Devoxx Morocco 2015] Apache Cordova In Action
[Devoxx Morocco 2015] Apache Cordova In Action[Devoxx Morocco 2015] Apache Cordova In Action
[Devoxx Morocco 2015] Apache Cordova In Action
 
React Native for multi-platform mobile applications
React Native for multi-platform mobile applicationsReact Native for multi-platform mobile applications
React Native for multi-platform mobile applications
 
Electron - cross platform desktop applications made easy
Electron - cross platform desktop applications made easyElectron - cross platform desktop applications made easy
Electron - cross platform desktop applications made easy
 
Effective JavaFX architecture with FxObjects
Effective JavaFX architecture with FxObjectsEffective JavaFX architecture with FxObjects
Effective JavaFX architecture with FxObjects
 
eXoer on the grill: eXo Add-ons factory using Docker and Codenvy
eXoer on the grill: eXo Add-ons factory using Docker and CodenvyeXoer on the grill: eXo Add-ons factory using Docker and Codenvy
eXoer on the grill: eXo Add-ons factory using Docker and Codenvy
 
Baruco 2014 - Rubymotion Workshop
Baruco 2014 - Rubymotion WorkshopBaruco 2014 - Rubymotion Workshop
Baruco 2014 - Rubymotion Workshop
 
Ewebkit basic (Web rendering enging of EFL)
Ewebkit basic (Web rendering enging of EFL)Ewebkit basic (Web rendering enging of EFL)
Ewebkit basic (Web rendering enging of EFL)
 
Build UI of the Future with React 360
Build UI of the Future with React 360Build UI of the Future with React 360
Build UI of the Future with React 360
 
Plug yourself in and your app will never be the same (1 hr edition)
Plug yourself in and your app will never be the same (1 hr edition)Plug yourself in and your app will never be the same (1 hr edition)
Plug yourself in and your app will never be the same (1 hr edition)
 
Django simplified : by weever mbakaya
Django simplified : by weever mbakayaDjango simplified : by weever mbakaya
Django simplified : by weever mbakaya
 

Mehr von Minh Hoang

Yolo Family TechTalk
Yolo Family TechTalkYolo Family TechTalk
Yolo Family TechTalkMinh Hoang
 
ElasticSearch Introduction
ElasticSearch IntroductionElasticSearch Introduction
ElasticSearch IntroductionMinh Hoang
 
Modularize JavaScript with RequireJS
Modularize JavaScript with RequireJSModularize JavaScript with RequireJS
Modularize JavaScript with RequireJSMinh Hoang
 
Regular Expression
Regular ExpressionRegular Expression
Regular ExpressionMinh Hoang
 
Java Performance Tuning
Java Performance TuningJava Performance Tuning
Java Performance TuningMinh Hoang
 
Gatein Presentation
Gatein PresentationGatein Presentation
Gatein PresentationMinh Hoang
 

Mehr von Minh Hoang (7)

Yolo Family TechTalk
Yolo Family TechTalkYolo Family TechTalk
Yolo Family TechTalk
 
ElasticSearch Introduction
ElasticSearch IntroductionElasticSearch Introduction
ElasticSearch Introduction
 
Modularize JavaScript with RequireJS
Modularize JavaScript with RequireJSModularize JavaScript with RequireJS
Modularize JavaScript with RequireJS
 
Servlet 3.0
Servlet 3.0Servlet 3.0
Servlet 3.0
 
Regular Expression
Regular ExpressionRegular Expression
Regular Expression
 
Java Performance Tuning
Java Performance TuningJava Performance Tuning
Java Performance Tuning
 
Gatein Presentation
Gatein PresentationGatein Presentation
Gatein Presentation
 

Zero redeployment with JRebel

  • 1. Zero redeployment with JRebel Minh Hoang TO Portal Team
  • 2. Agenda 1. JRebel 2. GateIn zero-redeployment 3. How does JRebel work? www.exoplatform.com - Copyright 2012 eXo Platform 2
  • 4. - Developer(s): Zero Turnaround - Written in: Java - License: Proprietary - Highlighted features: Immediately visible code changes without redeploying Easy installation and simple configuration www.exoplatform.com - Copyright 2012 eXo Platform 4
  • 5. Free license plans OSS plan Commiters of Open Source projects have access to free license Social plan Free license in exchange of privileged to post on Twitter/Facebook account www.exoplatform.com - Copyright 2012 eXo Platform 5
  • 6. GateIn zero-deployment www.exoplatform.com - Copyright 2012 eXo Platform 6
  • 7. GateIn code changes in IDE are reflected immediately on browser without the need of redeploying. Say GOODBYE to tedious redeploy work Productive dev environment applicable to any eXo product: Social, Wiki, Forum, ECMS, Platform www.exoplatform.com - Copyright 2012 eXo Platform 7
  • 8. Demo - Targeted Maven artifacts: exo.portal.webui.portal (basic UI components of GateIn portal) exo.portlet.exoadmin (core portlets of GateIn) - Expectation: Code changes on portal/portlet components from those two artifacts take effect on browser without the need of redeploying .war to Tomcat www.exoplatform.com - Copyright 2012 eXo Platform 8
  • 9. Before demo 1. Customize packaging/tomcat/pkg/src/main/resources/tomcat/bin/gatein-dev.sh 2. Generate rebel.xml in targeted Maven artifacts 3. Build and run GateIn www.exoplatform.com - Copyright 2012 eXo Platform 9
  • 10. rebel.xml www.exoplatform.com - Copyright 2012 eXo Platform 10
  • 11. rebel.xml www.exoplatform.com - Copyright 2012 eXo Platform 11
  • 12. JRebel agent starts www.exoplatform.com - Copyright 2012 eXo Platform 12
  • 13. Demo starting ... www.exoplatform.com - Copyright 2012 eXo Platform 13
  • 14. How does JRebel work? www.exoplatform.com - Copyright 2012 eXo Platform 14
  • 15. Object & Class MyObject obj = new MyObject(); Class<?> type = obj.getClass(); 1. Behavior of method call on 'obj' is determined by 'type' 2. 'type' is identified by MyObject.class bytecode and context ClassLoader of the code MyObject obj = new MyObject(); 3. Once loaded, 'type' could not be unloaded or changed (class loader holds a vector of loaded classes) 4. JRebel approach to redefine 'type' Black box as JRebel is not open source! But described as a combination of Instrumentation API + Byte code handling + Class loader www.exoplatform.com - Copyright 2012 eXo Platform 15
  • 16. Class redefinition www.exoplatform.com - Copyright 2012 eXo Platform 16
  • 17. MANIFEST.MF www.exoplatform.com - Copyright 2012 eXo Platform 17
  • 18. JRebel agent The code in AgentInstall is likely to be www.exoplatform.com - Copyright 2012 eXo Platform 18