SlideShare une entreprise Scribd logo
1  sur  35
Как забыть про редеплой




                  Поганшев Сергей
План
 Редеплоймент - проблема?
 Каким образом JRebel решает проблему
  редеплоймента?
 Стоимость и альтернативы
 Практика использования JRebel
 LiveRebel
 Редеплоймент - проблема?
 Каким образом JRebel решает проблему
  редеплоймента?
 Стоимость и альтернативы
 Практика использования JRebel
 LiveRebel
   java.lang.OutOfMemoryError: PermGen
    space

   java.util.zip.ZipException: error in
    opening zip file

   DEPLOYMENTS IN ERROR: Deployment
    "vfszip:/D:/jboss-
    5.1.0.GA/server/default/deploy/Enhanc
    ed-QC-ejb.jar/" is in error due to
    the following reason(s):
    java.lang.IllegalStateException…
 Редеплоймент - проблема?
 Каким образом JRebel решает проблему
  редеплоймента?
 Стоимость и альтернативы
 Практика использования JRebel
 LiveRebel
Настройка (Eclipse)
 Установить плагин
 Активировать лицензию
 Активировать сервер
 Отметить проекты
 Запустить сервер
 Profit!
За кулисами
   rebel.xml:
<application>
  <classpath>
    <dir name="C:/project/workspace/TestRebel/bin"/>
  </classpath>
  <web>
    <link target="/">
      <dir name="C:/project/workspace/TestRebel/webapp"/>
    </link>
  </web>
</application>

   Опции сервера:
-javaagent:c:jrebeljrebel.jar
Пример
public class TestClient {
  public TestClient() {
    System.out.println("Constructor");
  }

    public static void main(String... args) {
      TestClient client = new TestClient();
      while (true) {
        client.sayHello();
        Thread.sleep(1000);
      }
    }

    private void sayHello() {
      System.out.println("Hello");
    }

}
Пример                                      Constructor
                                                Hello
public class TestClient {                       Hello
  public TestClient() {                         JRebel: Reloading
    System.out.println("Constructor");          class 'TestClient'.
  }                                             Hello2
                                                Hello2
    public static void main(String... args) {
      TestClient client = new TestClient();
      while (true) {
        client.sayHello();
        Thread.sleep(1000);
      }
    }

    private void sayHello() {
      System.out.println("Hello2");
    }

}
Пример                                      Hello2
                                                Hello2
public class TestClient {                       Hello2
  private String field = “field value”;         JRebel: Reloading
                                                class 'TestClient'.
    public TestClient() {                       field value
      System.out.println("Constructor");        field value
    }
    public static void main(String... args) {
      TestClient client = new TestClient();
      while (true) {
        client.sayHello();
        Thread.sleep(1000);
      }
    }
    private void sayHello() {
      newMethod();
    }
    private void newMethod() {
      System.out.println(field);
    }
}
JRebel Remote
   На сервере
set JAVA_OPTS=-javaagent:/path/to/jrebel.jar
-Drebel.remoting_plugin=true

   rebel-remote.xml:
<rebel-remote>
  <id>MyFancyApplication</id>
  <url>http://servername:8080/MyFancyApplication/</url>
</rebel-remote>
 Редеплоймент - проблема?
 Каким образом JRebel решает проблему
  редеплоймента?
 Стоимость и альтернативы
 Практика использования JRebel
 LiveRebel
Альтернативы
 HotSwap
 Dynamic Code Evolution VM
 Javaleon
 fakereplace
 Glass Ghost
 Play! Framework
Альтернативы
 HotSwap
 Dynamic Code Evolution VM
 Javaleon
 fakereplace
 Glass Ghost
 Play! Framework
 Редеплоймент - проблема?
 Каким образом JRebel решает проблему
  редеплоймента?
 Стоимость и альтернативы
 Практика использования JRebel
 LiveRebel
Практика использования
 Нужно знать ограничения и особенности
 Unlocker
 @Transactional
 Служба продажи
 «Все таки редеплой»
Пример                                      Hello2
                                                Hello2
public class TestClient {                       Hello2
  private String field = “field value”;         JRebel: Reloading
                                                class 'TestClient'.
    public TestClient() {                       field value
      System.out.println("Constructor");        field value
    }
    public static void main(String... args) {
      TestClient client = new TestClient();
      while (true) {
        client.sayHello();
        Thread.sleep(1000);
      }
    }
    private void sayHello() {
      newMethod();
    }
    private void newMethod() {
      System.out.println(field);
    }
}
Пример                                      Hello2
                                                Hello2
public class TestClient {                       Hello2
  private String field = “field value”;         JRebel: Reloading
                                                class 'TestClient'.
    public TestClient() {                       null
      System.out.println("Constructor");        null
    }
    public static void main(String... args) {
      TestClient client = new TestClient();
      while (true) {
        client.sayHello();
        Thread.sleep(1000);
      }
    }
    private void sayHello() {
      newMethod();
    }
    private void newMethod() {
      System.out.println(field);
    }
}
Пример                                      Hello2
                                                Hello2
public class TestClient {                       Hello2
  private String field;                         JRebel: Reloading
                                                class 'TestClient'.
    public TestClient() {                       field value
      System.out.println("Constructor");        field value
    }
    public static void main(String... args) {
      TestClient client = new TestClient();
      while (true) {
        client.sayHello();
        Thread.sleep(1000);
      }
    }
    private void sayHello() {
      newMethod();
    }
    private void newMethod() {
      field = "field value";
      System.out.println(field);
    }
}
Практика использования
 Нужно знать ограничения и особенности
 Unlocker
 @Transactional
 Служба продажи
 «Все таки редеплой»
 Редеплоймент - проблема?
 Каким образом JRebel решает проблему
  редеплоймента?
 Стоимость и альтернативы
 Практика использования JRebel
 LiveRebel
Как забыть про редеплой
Вопросы?



                  Поганшев Сергей

Contenu connexe

Tendances

PVS-Studio в 2021 - Примеры ошибок
PVS-Studio в 2021 - Примеры ошибокPVS-Studio в 2021 - Примеры ошибок
PVS-Studio в 2021 - Примеры ошибокAndrey Karpov
 
Поговорим о JavaScript, основы и современные тенденции развития языка
Поговорим о JavaScript, основы и современные тенденции развития языкаПоговорим о JavaScript, основы и современные тенденции развития языка
Поговорим о JavaScript, основы и современные тенденции развития языкаAlexander Kucherenko
 
Объектно-ориентированное программирование. Лекция 7 и 8.
Объектно-ориентированное программирование. Лекция 7 и 8. Объектно-ориентированное программирование. Лекция 7 и 8.
Объектно-ориентированное программирование. Лекция 7 и 8. Dima Dzuba
 
Очередной скучный доклад про логгирование
Очередной скучный доклад про логгированиеОчередной скучный доклад про логгирование
Очередной скучный доклад про логгированиеPython Meetup
 
Использование юнит-тестов для повышения качества разработки
Использование юнит-тестов для повышения качества разработкиИспользование юнит-тестов для повышения качества разработки
Использование юнит-тестов для повышения качества разработкиvictor-yastrebov
 
Статический анализ кода
Статический анализ кода Статический анализ кода
Статический анализ кода Pavel Tsukanov
 
Антон Полухин, Немного о Boost
Антон Полухин, Немного о BoostАнтон Полухин, Немного о Boost
Антон Полухин, Немного о BoostSergey Platonov
 
Никита Глушков, К вопросу о реализации кроссплатформенных фреймворков
Никита Глушков, К вопросу о реализации кроссплатформенных фреймворковНикита Глушков, К вопросу о реализации кроссплатформенных фреймворков
Никита Глушков, К вопросу о реализации кроссплатформенных фреймворковSergey Platonov
 
Legacy: как победить в гонке (Joker)
Legacy: как победить в гонке (Joker)Legacy: как победить в гонке (Joker)
Legacy: как победить в гонке (Joker)Victor_Cr
 
Шишки, набитые за 15 лет использования акторов в C++
Шишки, набитые за 15 лет использования акторов в C++Шишки, набитые за 15 лет использования акторов в C++
Шишки, набитые за 15 лет использования акторов в C++Yauheni Akhotnikau
 
Java осень 2014 занятие 3
Java осень 2014 занятие 3Java осень 2014 занятие 3
Java осень 2014 занятие 3Technopark
 
Юрий Ефимочев, Компилируемые в реальном времени DSL для С++
Юрий Ефимочев, Компилируемые в реальном времени DSL для С++ Юрий Ефимочев, Компилируемые в реальном времени DSL для С++
Юрий Ефимочев, Компилируемые в реальном времени DSL для С++ Sergey Platonov
 
Java осень 2014 занятие 5
Java осень 2014 занятие 5Java осень 2014 занятие 5
Java осень 2014 занятие 5Technopark
 
Григорий Демченко, Асинхронность и неблокирующая синхронизация
Григорий Демченко, Асинхронность и неблокирующая синхронизацияГригорий Демченко, Асинхронность и неблокирующая синхронизация
Григорий Демченко, Асинхронность и неблокирующая синхронизацияSergey Platonov
 
Александр Тарасенко, Использование python для автоматизации отладки С/C++ код...
Александр Тарасенко, Использование python для автоматизации отладки С/C++ код...Александр Тарасенко, Использование python для автоматизации отладки С/C++ код...
Александр Тарасенко, Использование python для автоматизации отладки С/C++ код...Sergey Platonov
 
Лекция 11. Тестирование.
Лекция 11. Тестирование.Лекция 11. Тестирование.
Лекция 11. Тестирование.Roman Brovko
 
Полухин Антон, Как делать не надо: C++ велосипедостроение для профессионалов
Полухин Антон, Как делать не надо: C++ велосипедостроение для профессионаловПолухин Антон, Как делать не надо: C++ велосипедостроение для профессионалов
Полухин Антон, Как делать не надо: C++ велосипедостроение для профессионаловSergey Platonov
 
Борис Сазонов, RAII потоки и CancellationToken в C++
Борис Сазонов, RAII потоки и CancellationToken в C++Борис Сазонов, RAII потоки и CancellationToken в C++
Борис Сазонов, RAII потоки и CancellationToken в C++Sergey Platonov
 
Александр Фокин, Рефлексия в C++
Александр Фокин, Рефлексия в C++Александр Фокин, Рефлексия в C++
Александр Фокин, Рефлексия в C++Sergey Platonov
 
Григорий Демченко, Универсальный адаптер
Григорий Демченко, Универсальный адаптерГригорий Демченко, Универсальный адаптер
Григорий Демченко, Универсальный адаптерSergey Platonov
 

Tendances (20)

PVS-Studio в 2021 - Примеры ошибок
PVS-Studio в 2021 - Примеры ошибокPVS-Studio в 2021 - Примеры ошибок
PVS-Studio в 2021 - Примеры ошибок
 
Поговорим о JavaScript, основы и современные тенденции развития языка
Поговорим о JavaScript, основы и современные тенденции развития языкаПоговорим о JavaScript, основы и современные тенденции развития языка
Поговорим о JavaScript, основы и современные тенденции развития языка
 
Объектно-ориентированное программирование. Лекция 7 и 8.
Объектно-ориентированное программирование. Лекция 7 и 8. Объектно-ориентированное программирование. Лекция 7 и 8.
Объектно-ориентированное программирование. Лекция 7 и 8.
 
Очередной скучный доклад про логгирование
Очередной скучный доклад про логгированиеОчередной скучный доклад про логгирование
Очередной скучный доклад про логгирование
 
Использование юнит-тестов для повышения качества разработки
Использование юнит-тестов для повышения качества разработкиИспользование юнит-тестов для повышения качества разработки
Использование юнит-тестов для повышения качества разработки
 
Статический анализ кода
Статический анализ кода Статический анализ кода
Статический анализ кода
 
Антон Полухин, Немного о Boost
Антон Полухин, Немного о BoostАнтон Полухин, Немного о Boost
Антон Полухин, Немного о Boost
 
Никита Глушков, К вопросу о реализации кроссплатформенных фреймворков
Никита Глушков, К вопросу о реализации кроссплатформенных фреймворковНикита Глушков, К вопросу о реализации кроссплатформенных фреймворков
Никита Глушков, К вопросу о реализации кроссплатформенных фреймворков
 
Legacy: как победить в гонке (Joker)
Legacy: как победить в гонке (Joker)Legacy: как победить в гонке (Joker)
Legacy: как победить в гонке (Joker)
 
Шишки, набитые за 15 лет использования акторов в C++
Шишки, набитые за 15 лет использования акторов в C++Шишки, набитые за 15 лет использования акторов в C++
Шишки, набитые за 15 лет использования акторов в C++
 
Java осень 2014 занятие 3
Java осень 2014 занятие 3Java осень 2014 занятие 3
Java осень 2014 занятие 3
 
Юрий Ефимочев, Компилируемые в реальном времени DSL для С++
Юрий Ефимочев, Компилируемые в реальном времени DSL для С++ Юрий Ефимочев, Компилируемые в реальном времени DSL для С++
Юрий Ефимочев, Компилируемые в реальном времени DSL для С++
 
Java осень 2014 занятие 5
Java осень 2014 занятие 5Java осень 2014 занятие 5
Java осень 2014 занятие 5
 
Григорий Демченко, Асинхронность и неблокирующая синхронизация
Григорий Демченко, Асинхронность и неблокирующая синхронизацияГригорий Демченко, Асинхронность и неблокирующая синхронизация
Григорий Демченко, Асинхронность и неблокирующая синхронизация
 
Александр Тарасенко, Использование python для автоматизации отладки С/C++ код...
Александр Тарасенко, Использование python для автоматизации отладки С/C++ код...Александр Тарасенко, Использование python для автоматизации отладки С/C++ код...
Александр Тарасенко, Использование python для автоматизации отладки С/C++ код...
 
Лекция 11. Тестирование.
Лекция 11. Тестирование.Лекция 11. Тестирование.
Лекция 11. Тестирование.
 
Полухин Антон, Как делать не надо: C++ велосипедостроение для профессионалов
Полухин Антон, Как делать не надо: C++ велосипедостроение для профессионаловПолухин Антон, Как делать не надо: C++ велосипедостроение для профессионалов
Полухин Антон, Как делать не надо: C++ велосипедостроение для профессионалов
 
Борис Сазонов, RAII потоки и CancellationToken в C++
Борис Сазонов, RAII потоки и CancellationToken в C++Борис Сазонов, RAII потоки и CancellationToken в C++
Борис Сазонов, RAII потоки и CancellationToken в C++
 
Александр Фокин, Рефлексия в C++
Александр Фокин, Рефлексия в C++Александр Фокин, Рефлексия в C++
Александр Фокин, Рефлексия в C++
 
Григорий Демченко, Универсальный адаптер
Григорий Демченко, Универсальный адаптерГригорий Демченко, Универсальный адаптер
Григорий Демченко, Универсальный адаптер
 

Similaire à JRebel

Инструментация среды исполнения в арсенале тестировщика
Инструментация среды исполнения в арсенале тестировщикаИнструментация среды исполнения в арсенале тестировщика
Инструментация среды исполнения в арсенале тестировщикаSQALab
 
"Погружение в Robolectric" Дмитрий Костырев (Avito)
"Погружение в Robolectric"  Дмитрий Костырев (Avito)"Погружение в Robolectric"  Дмитрий Костырев (Avito)
"Погружение в Robolectric" Дмитрий Костырев (Avito)AvitoTech
 
Юнит-тестирование и Google Mock. Влад Лосев, Google
Юнит-тестирование и Google Mock. Влад Лосев, GoogleЮнит-тестирование и Google Mock. Влад Лосев, Google
Юнит-тестирование и Google Mock. Влад Лосев, Googleyaevents
 
C#. От основ к эффективному коду
C#. От основ к эффективному кодуC#. От основ к эффективному коду
C#. От основ к эффективному кодуVasiliy Deynega
 
10. java lecture generics&collections
10. java lecture generics&collections10. java lecture generics&collections
10. java lecture generics&collectionsMERA_school
 
Веселая ферма. Соседи.
Веселая ферма. Соседи.Веселая ферма. Соседи.
Веселая ферма. Соседи.Doomer Samoiloff
 
C# Desktop. Занятие 03.
C# Desktop. Занятие 03.C# Desktop. Занятие 03.
C# Desktop. Занятие 03.Igor Shkulipa
 
ук 03.001.02 2011
ук 03.001.02 2011ук 03.001.02 2011
ук 03.001.02 2011etyumentcev
 
Deep Dive C# by Sergey Teplyakov
Deep Dive  C# by Sergey TeplyakovDeep Dive  C# by Sergey Teplyakov
Deep Dive C# by Sergey TeplyakovAlex Tumanoff
 
NetworkUA - 2012 - Introduction TypeScript
NetworkUA - 2012 - Introduction TypeScript NetworkUA - 2012 - Introduction TypeScript
NetworkUA - 2012 - Introduction TypeScript Dmytro Mindra
 
Некоторые паттерны реализации полиморфного поведения в C++ – Дмитрий Леванов,...
Некоторые паттерны реализации полиморфного поведения в C++ – Дмитрий Леванов,...Некоторые паттерны реализации полиморфного поведения в C++ – Дмитрий Леванов,...
Некоторые паттерны реализации полиморфного поведения в C++ – Дмитрий Леванов,...Yandex
 
Ciklum .NET Saturday - Introduction to TypeScript
Ciklum .NET Saturday - Introduction to TypeScriptCiklum .NET Saturday - Introduction to TypeScript
Ciklum .NET Saturday - Introduction to TypeScriptDmytro Mindra
 
[JAM 1.1] Clean Code (Paul Malikov)
[JAM 1.1] Clean Code (Paul Malikov)[JAM 1.1] Clean Code (Paul Malikov)
[JAM 1.1] Clean Code (Paul Malikov)Evgeny Kaziak
 
Java весна 2013 лекция 9
Java весна 2013 лекция 9Java весна 2013 лекция 9
Java весна 2013 лекция 9Technopark
 
JPoint 2016 - Etudes of DIY Java profiler
JPoint 2016 - Etudes of DIY Java profilerJPoint 2016 - Etudes of DIY Java profiler
JPoint 2016 - Etudes of DIY Java profilerAnton Arhipov
 
JPoint 2015 - Javassist на службе Java-разработчика
JPoint 2015 - Javassist на службе Java-разработчикаJPoint 2015 - Javassist на службе Java-разработчика
JPoint 2015 - Javassist на службе Java-разработчикаAnton Arhipov
 

Similaire à JRebel (20)

Thread
ThreadThread
Thread
 
Инструментация среды исполнения в арсенале тестировщика
Инструментация среды исполнения в арсенале тестировщикаИнструментация среды исполнения в арсенале тестировщика
Инструментация среды исполнения в арсенале тестировщика
 
Mocks and stubs
Mocks and stubsMocks and stubs
Mocks and stubs
 
"Погружение в Robolectric" Дмитрий Костырев (Avito)
"Погружение в Robolectric"  Дмитрий Костырев (Avito)"Погружение в Robolectric"  Дмитрий Костырев (Avito)
"Погружение в Robolectric" Дмитрий Костырев (Avito)
 
Юнит-тестирование и Google Mock. Влад Лосев, Google
Юнит-тестирование и Google Mock. Влад Лосев, GoogleЮнит-тестирование и Google Mock. Влад Лосев, Google
Юнит-тестирование и Google Mock. Влад Лосев, Google
 
C#. От основ к эффективному коду
C#. От основ к эффективному кодуC#. От основ к эффективному коду
C#. От основ к эффективному коду
 
10. java lecture generics&collections
10. java lecture generics&collections10. java lecture generics&collections
10. java lecture generics&collections
 
Веселая ферма. Соседи.
Веселая ферма. Соседи.Веселая ферма. Соседи.
Веселая ферма. Соседи.
 
C# Desktop. Занятие 03.
C# Desktop. Занятие 03.C# Desktop. Занятие 03.
C# Desktop. Занятие 03.
 
ук 03.001.02 2011
ук 03.001.02 2011ук 03.001.02 2011
ук 03.001.02 2011
 
Deep Dive C# by Sergey Teplyakov
Deep Dive  C# by Sergey TeplyakovDeep Dive  C# by Sergey Teplyakov
Deep Dive C# by Sergey Teplyakov
 
NetworkUA - 2012 - Introduction TypeScript
NetworkUA - 2012 - Introduction TypeScript NetworkUA - 2012 - Introduction TypeScript
NetworkUA - 2012 - Introduction TypeScript
 
Некоторые паттерны реализации полиморфного поведения в C++ – Дмитрий Леванов,...
Некоторые паттерны реализации полиморфного поведения в C++ – Дмитрий Леванов,...Некоторые паттерны реализации полиморфного поведения в C++ – Дмитрий Леванов,...
Некоторые паттерны реализации полиморфного поведения в C++ – Дмитрий Леванов,...
 
java
javajava
java
 
Ciklum .NET Saturday - Introduction to TypeScript
Ciklum .NET Saturday - Introduction to TypeScriptCiklum .NET Saturday - Introduction to TypeScript
Ciklum .NET Saturday - Introduction to TypeScript
 
[JAM 1.1] Clean Code (Paul Malikov)
[JAM 1.1] Clean Code (Paul Malikov)[JAM 1.1] Clean Code (Paul Malikov)
[JAM 1.1] Clean Code (Paul Malikov)
 
Java весна 2013 лекция 9
Java весна 2013 лекция 9Java весна 2013 лекция 9
Java весна 2013 лекция 9
 
JPoint 2016 - Etudes of DIY Java profiler
JPoint 2016 - Etudes of DIY Java profilerJPoint 2016 - Etudes of DIY Java profiler
JPoint 2016 - Etudes of DIY Java profiler
 
JPoint 2015 - Javassist на службе Java-разработчика
JPoint 2015 - Javassist на службе Java-разработчикаJPoint 2015 - Javassist на службе Java-разработчика
JPoint 2015 - Javassist на службе Java-разработчика
 
C sharp deep dive
C sharp deep diveC sharp deep dive
C sharp deep dive
 

Plus de Alex Tumanoff

Sql server 2019 New Features by Yevhen Nedaskivskyi
Sql server 2019 New Features by Yevhen NedaskivskyiSql server 2019 New Features by Yevhen Nedaskivskyi
Sql server 2019 New Features by Yevhen NedaskivskyiAlex Tumanoff
 
Odessa .net-user-group-sql-server-2019-hidden-gems by Denis Reznik
Odessa .net-user-group-sql-server-2019-hidden-gems by Denis ReznikOdessa .net-user-group-sql-server-2019-hidden-gems by Denis Reznik
Odessa .net-user-group-sql-server-2019-hidden-gems by Denis ReznikAlex Tumanoff
 
Azure data bricks by Eugene Polonichko
Azure data bricks by Eugene PolonichkoAzure data bricks by Eugene Polonichko
Azure data bricks by Eugene PolonichkoAlex Tumanoff
 
Sdlc by Anatoliy Anthony Cox
Sdlc by  Anatoliy Anthony CoxSdlc by  Anatoliy Anthony Cox
Sdlc by Anatoliy Anthony CoxAlex Tumanoff
 
Kostenko ux november-2014_1
Kostenko ux november-2014_1Kostenko ux november-2014_1
Kostenko ux november-2014_1Alex Tumanoff
 
Java 8 in action.jinq.v.1.3
Java 8 in action.jinq.v.1.3Java 8 in action.jinq.v.1.3
Java 8 in action.jinq.v.1.3Alex Tumanoff
 
"Drools: декларативная бизнес-логика в Java-приложениях" by Дмитрий Контрерас...
"Drools: декларативная бизнес-логика в Java-приложениях" by Дмитрий Контрерас..."Drools: декларативная бизнес-логика в Java-приложениях" by Дмитрий Контрерас...
"Drools: декларативная бизнес-логика в Java-приложениях" by Дмитрий Контрерас...Alex Tumanoff
 
Sql saturday azure storage by Anton Vidishchev
Sql saturday azure storage by Anton VidishchevSql saturday azure storage by Anton Vidishchev
Sql saturday azure storage by Anton VidishchevAlex Tumanoff
 
Navigation map factory by Alexey Klimenko
Navigation map factory by Alexey KlimenkoNavigation map factory by Alexey Klimenko
Navigation map factory by Alexey KlimenkoAlex Tumanoff
 
Serialization and performance by Sergey Morenets
Serialization and performance by Sergey MorenetsSerialization and performance by Sergey Morenets
Serialization and performance by Sergey MorenetsAlex Tumanoff
 
Игры для мобильных платформ by Алексей Рыбаков
Игры для мобильных платформ by Алексей РыбаковИгры для мобильных платформ by Алексей Рыбаков
Игры для мобильных платформ by Алексей РыбаковAlex Tumanoff
 
Android sync adapter
Android sync adapterAndroid sync adapter
Android sync adapterAlex Tumanoff
 
Async clinic by by Sergey Teplyakov
Async clinic by by Sergey TeplyakovAsync clinic by by Sergey Teplyakov
Async clinic by by Sergey TeplyakovAlex Tumanoff
 
Bdd by Dmitri Aizenberg
Bdd by Dmitri AizenbergBdd by Dmitri Aizenberg
Bdd by Dmitri AizenbergAlex Tumanoff
 
Неформальные размышления о сертификации в IT
Неформальные размышления о сертификации в ITНеформальные размышления о сертификации в IT
Неформальные размышления о сертификации в ITAlex Tumanoff
 
Разработка расширений Firefox
Разработка расширений FirefoxРазработка расширений Firefox
Разработка расширений FirefoxAlex Tumanoff
 
"AnnotatedSQL - провайдер с плюшками за 5 минут" - Геннадий Дубина, Senior So...
"AnnotatedSQL - провайдер с плюшками за 5 минут" - Геннадий Дубина, Senior So..."AnnotatedSQL - провайдер с плюшками за 5 минут" - Геннадий Дубина, Senior So...
"AnnotatedSQL - провайдер с плюшками за 5 минут" - Геннадий Дубина, Senior So...Alex Tumanoff
 
Patterns of parallel programming
Patterns of parallel programmingPatterns of parallel programming
Patterns of parallel programmingAlex Tumanoff
 
Lambda выражения и Java 8
Lambda выражения и Java 8Lambda выражения и Java 8
Lambda выражения и Java 8Alex Tumanoff
 

Plus de Alex Tumanoff (20)

Sql server 2019 New Features by Yevhen Nedaskivskyi
Sql server 2019 New Features by Yevhen NedaskivskyiSql server 2019 New Features by Yevhen Nedaskivskyi
Sql server 2019 New Features by Yevhen Nedaskivskyi
 
Odessa .net-user-group-sql-server-2019-hidden-gems by Denis Reznik
Odessa .net-user-group-sql-server-2019-hidden-gems by Denis ReznikOdessa .net-user-group-sql-server-2019-hidden-gems by Denis Reznik
Odessa .net-user-group-sql-server-2019-hidden-gems by Denis Reznik
 
Azure data bricks by Eugene Polonichko
Azure data bricks by Eugene PolonichkoAzure data bricks by Eugene Polonichko
Azure data bricks by Eugene Polonichko
 
Sdlc by Anatoliy Anthony Cox
Sdlc by  Anatoliy Anthony CoxSdlc by  Anatoliy Anthony Cox
Sdlc by Anatoliy Anthony Cox
 
Kostenko ux november-2014_1
Kostenko ux november-2014_1Kostenko ux november-2014_1
Kostenko ux november-2014_1
 
Java 8 in action.jinq.v.1.3
Java 8 in action.jinq.v.1.3Java 8 in action.jinq.v.1.3
Java 8 in action.jinq.v.1.3
 
"Drools: декларативная бизнес-логика в Java-приложениях" by Дмитрий Контрерас...
"Drools: декларативная бизнес-логика в Java-приложениях" by Дмитрий Контрерас..."Drools: декларативная бизнес-логика в Java-приложениях" by Дмитрий Контрерас...
"Drools: декларативная бизнес-логика в Java-приложениях" by Дмитрий Контрерас...
 
Spring.new hope.1.3
Spring.new hope.1.3Spring.new hope.1.3
Spring.new hope.1.3
 
Sql saturday azure storage by Anton Vidishchev
Sql saturday azure storage by Anton VidishchevSql saturday azure storage by Anton Vidishchev
Sql saturday azure storage by Anton Vidishchev
 
Navigation map factory by Alexey Klimenko
Navigation map factory by Alexey KlimenkoNavigation map factory by Alexey Klimenko
Navigation map factory by Alexey Klimenko
 
Serialization and performance by Sergey Morenets
Serialization and performance by Sergey MorenetsSerialization and performance by Sergey Morenets
Serialization and performance by Sergey Morenets
 
Игры для мобильных платформ by Алексей Рыбаков
Игры для мобильных платформ by Алексей РыбаковИгры для мобильных платформ by Алексей Рыбаков
Игры для мобильных платформ by Алексей Рыбаков
 
Android sync adapter
Android sync adapterAndroid sync adapter
Android sync adapter
 
Async clinic by by Sergey Teplyakov
Async clinic by by Sergey TeplyakovAsync clinic by by Sergey Teplyakov
Async clinic by by Sergey Teplyakov
 
Bdd by Dmitri Aizenberg
Bdd by Dmitri AizenbergBdd by Dmitri Aizenberg
Bdd by Dmitri Aizenberg
 
Неформальные размышления о сертификации в IT
Неформальные размышления о сертификации в ITНеформальные размышления о сертификации в IT
Неформальные размышления о сертификации в IT
 
Разработка расширений Firefox
Разработка расширений FirefoxРазработка расширений Firefox
Разработка расширений Firefox
 
"AnnotatedSQL - провайдер с плюшками за 5 минут" - Геннадий Дубина, Senior So...
"AnnotatedSQL - провайдер с плюшками за 5 минут" - Геннадий Дубина, Senior So..."AnnotatedSQL - провайдер с плюшками за 5 минут" - Геннадий Дубина, Senior So...
"AnnotatedSQL - провайдер с плюшками за 5 минут" - Геннадий Дубина, Senior So...
 
Patterns of parallel programming
Patterns of parallel programmingPatterns of parallel programming
Patterns of parallel programming
 
Lambda выражения и Java 8
Lambda выражения и Java 8Lambda выражения и Java 8
Lambda выражения и Java 8
 

JRebel

  • 1. Как забыть про редеплой Поганшев Сергей
  • 2.
  • 3. План  Редеплоймент - проблема?  Каким образом JRebel решает проблему редеплоймента?  Стоимость и альтернативы  Практика использования JRebel  LiveRebel
  • 4.  Редеплоймент - проблема?  Каким образом JRebel решает проблему редеплоймента?  Стоимость и альтернативы  Практика использования JRebel  LiveRebel
  • 5. java.lang.OutOfMemoryError: PermGen space  java.util.zip.ZipException: error in opening zip file  DEPLOYMENTS IN ERROR: Deployment "vfszip:/D:/jboss- 5.1.0.GA/server/default/deploy/Enhanc ed-QC-ejb.jar/" is in error due to the following reason(s): java.lang.IllegalStateException…
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.  Редеплоймент - проблема?  Каким образом JRebel решает проблему редеплоймента?  Стоимость и альтернативы  Практика использования JRebel  LiveRebel
  • 12. Настройка (Eclipse)  Установить плагин  Активировать лицензию  Активировать сервер  Отметить проекты  Запустить сервер  Profit!
  • 13.
  • 14.
  • 15. За кулисами  rebel.xml: <application> <classpath> <dir name="C:/project/workspace/TestRebel/bin"/> </classpath> <web> <link target="/"> <dir name="C:/project/workspace/TestRebel/webapp"/> </link> </web> </application>  Опции сервера: -javaagent:c:jrebeljrebel.jar
  • 16.
  • 17. Пример public class TestClient { public TestClient() { System.out.println("Constructor"); } public static void main(String... args) { TestClient client = new TestClient(); while (true) { client.sayHello(); Thread.sleep(1000); } } private void sayHello() { System.out.println("Hello"); } }
  • 18. Пример Constructor Hello public class TestClient { Hello public TestClient() { JRebel: Reloading System.out.println("Constructor"); class 'TestClient'. } Hello2 Hello2 public static void main(String... args) { TestClient client = new TestClient(); while (true) { client.sayHello(); Thread.sleep(1000); } } private void sayHello() { System.out.println("Hello2"); } }
  • 19. Пример Hello2 Hello2 public class TestClient { Hello2 private String field = “field value”; JRebel: Reloading class 'TestClient'. public TestClient() { field value System.out.println("Constructor"); field value } public static void main(String... args) { TestClient client = new TestClient(); while (true) { client.sayHello(); Thread.sleep(1000); } } private void sayHello() { newMethod(); } private void newMethod() { System.out.println(field); } }
  • 20.
  • 21.
  • 22. JRebel Remote  На сервере set JAVA_OPTS=-javaagent:/path/to/jrebel.jar -Drebel.remoting_plugin=true  rebel-remote.xml: <rebel-remote> <id>MyFancyApplication</id> <url>http://servername:8080/MyFancyApplication/</url> </rebel-remote>
  • 23.  Редеплоймент - проблема?  Каким образом JRebel решает проблему редеплоймента?  Стоимость и альтернативы  Практика использования JRebel  LiveRebel
  • 24.
  • 25. Альтернативы  HotSwap  Dynamic Code Evolution VM  Javaleon  fakereplace  Glass Ghost  Play! Framework
  • 26.
  • 27. Альтернативы  HotSwap  Dynamic Code Evolution VM  Javaleon  fakereplace  Glass Ghost  Play! Framework
  • 28.  Редеплоймент - проблема?  Каким образом JRebel решает проблему редеплоймента?  Стоимость и альтернативы  Практика использования JRebel  LiveRebel
  • 29. Практика использования  Нужно знать ограничения и особенности  Unlocker  @Transactional  Служба продажи  «Все таки редеплой»
  • 30. Пример Hello2 Hello2 public class TestClient { Hello2 private String field = “field value”; JRebel: Reloading class 'TestClient'. public TestClient() { field value System.out.println("Constructor"); field value } public static void main(String... args) { TestClient client = new TestClient(); while (true) { client.sayHello(); Thread.sleep(1000); } } private void sayHello() { newMethod(); } private void newMethod() { System.out.println(field); } }
  • 31. Пример Hello2 Hello2 public class TestClient { Hello2 private String field = “field value”; JRebel: Reloading class 'TestClient'. public TestClient() { null System.out.println("Constructor"); null } public static void main(String... args) { TestClient client = new TestClient(); while (true) { client.sayHello(); Thread.sleep(1000); } } private void sayHello() { newMethod(); } private void newMethod() { System.out.println(field); } }
  • 32. Пример Hello2 Hello2 public class TestClient { Hello2 private String field; JRebel: Reloading class 'TestClient'. public TestClient() { field value System.out.println("Constructor"); field value } public static void main(String... args) { TestClient client = new TestClient(); while (true) { client.sayHello(); Thread.sleep(1000); } } private void sayHello() { newMethod(); } private void newMethod() { field = "field value"; System.out.println(field); } }
  • 33. Практика использования  Нужно знать ограничения и особенности  Unlocker  @Transactional  Служба продажи  «Все таки редеплой»
  • 34.  Редеплоймент - проблема?  Каким образом JRebel решает проблему редеплоймента?  Стоимость и альтернативы  Практика использования JRebel  LiveRebel
  • 35. Как забыть про редеплой Вопросы? Поганшев Сергей