jrebel

35
Как забыть про редеплой Поганшев Сергей

Upload: alex-tumanoff

Post on 26-Dec-2014

1.684 views

Category:

Technology


0 download

DESCRIPTION

 

TRANSCRIPT

Page 1: JRebel

Как забыть про редеплой

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

Page 2: JRebel
Page 3: JRebel

ПланРедеплоймент - проблема?Каким образом JRebel решает

проблему редеплоймента?Стоимость и альтернативыПрактика использования JRebelLiveRebel

Page 4: JRebel

Редеплоймент - проблема?Каким образом JRebel решает

проблему редеплоймента?Стоимость и альтернативыПрактика использования JRebelLiveRebel

Page 5: JRebel

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/Enhanced-QC-ejb.jar/" is in error due to the following reason(s): java.lang.IllegalStateException…

Page 6: JRebel
Page 7: JRebel
Page 8: JRebel
Page 9: JRebel
Page 10: JRebel
Page 11: JRebel

Редеплоймент - проблема?Каким образом JRebel решает

проблему редеплоймента?Стоимость и альтернативыПрактика использования JRebelLiveRebel

Page 12: JRebel

Настройка (Eclipse)Установить плагинАктивировать лицензиюАктивировать серверОтметить проекты Запустить серверProfit!

Page 13: JRebel
Page 14: JRebel
Page 15: JRebel

За кулисами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:\jrebel\jrebel.jar

Page 16: JRebel
Page 17: JRebel

Пример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");

}

}

Page 18: JRebel

Пример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("Hello2");

}

}

ConstructorHelloHelloJRebel: Reloading class 'TestClient'.Hello2Hello2

Page 19: JRebel

Пример Hello2Hello2Hello2JRebel: Reloading class 'TestClient'.field valuefield value

public class TestClient {private String field = “field

value”;

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() {newMethod();

}private void newMethod() {

System.out.println(field);}

}

Page 20: JRebel
Page 21: JRebel
Page 22: JRebel

JRebel RemoteНа сервере

rebel-remote.xml:

set JAVA_OPTS=-javaagent:/path/to/jrebel.jar -Drebel.remoting_plugin=true

<rebel-remote><id>MyFancyApplication</id><url>http://servername:8080/MyFancyApplication/

</url></rebel-remote>

Page 23: JRebel

Редеплоймент - проблема?Каким образом JRebel решает

проблему редеплоймента?Стоимость и альтернативыПрактика использования JRebelLiveRebel

Page 24: JRebel
Page 25: JRebel

АльтернативыHotSwapDynamic Code Evolution VMJavaleonfakereplaceGlass GhostPlay! Framework

Page 26: JRebel
Page 27: JRebel

АльтернативыHotSwapDynamic Code Evolution VMJavaleonfakereplaceGlass GhostPlay! Framework

Page 28: JRebel

Редеплоймент - проблема?Каким образом JRebel решает

проблему редеплоймента?Стоимость и альтернативыПрактика использования JRebelLiveRebel

Page 29: JRebel

Практика использованияНужно знать ограничения и

особенностиUnlocker@TransactionalСлужба продажи«Все таки редеплой»

Page 30: JRebel

Пример Hello2Hello2Hello2JRebel: Reloading class 'TestClient'.field valuefield value

public class TestClient {private String field = “field

value”;

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() {newMethod();

}private void newMethod() {

System.out.println(field);}

}

Page 31: JRebel

Пример Hello2Hello2Hello2JRebel: Reloading class 'TestClient'.nullnull

public class TestClient {private String field = “field

value”;

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() {newMethod();

}private void newMethod() {

System.out.println(field);}

}

Page 32: JRebel

Пример Hello2Hello2Hello2JRebel: Reloading class 'TestClient'.field valuefield value

public class TestClient {private String field;

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() {newMethod();

}private void newMethod() {

field = "field value";System.out.println(field);

}}

Page 33: JRebel

Практика использованияНужно знать ограничения и

особенностиUnlocker@TransactionalСлужба продажи«Все таки редеплой»

Page 34: JRebel

Редеплоймент - проблема?Каким образом JRebel решает

проблему редеплоймента?Стоимость и альтернативыПрактика использования JRebelLiveRebel

Page 35: JRebel

Как забыть про редеплой

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

Вопросы?