|
|
|
Корректировка байт-кода на лету.
|
|||
|---|---|---|---|
|
#18+
При помощи Instrumentation можно корректировать код классов на этапе старта java. Можно ли как-то аналогично это делать когда программы уже работает (вообщем в произвольный момент)? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.03.2012, 09:39:44 |
|
||
|
Корректировка байт-кода на лету.
|
|||
|---|---|---|---|
|
#18+
drewha, полиморфизма не хватает? ______________________________________________ "Сделай настолько просто, насколько это возможно, но не проще". © А. Эйнштейн. AutoPOI.ru — ГИС-технологии для Oracle ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.03.2012, 09:44:50 |
|
||
|
Корректировка байт-кода на лету.
|
|||
|---|---|---|---|
|
#18+
Нужно менять поведение программы, от которой нет исходников. Причем здесь полиморфизм? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.03.2012, 09:46:53 |
|
||
|
Корректировка байт-кода на лету.
|
|||
|---|---|---|---|
|
#18+
drewhaНужно менять поведение программы, от которой нет исходников. Причем здесь полиморфизм? ничего личного, просто смешная задача :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.03.2012, 09:48:52 |
|
||
|
Корректировка байт-кода на лету.
|
|||
|---|---|---|---|
|
#18+
drewhaПри помощи Instrumentation можно корректировать код классов на этапе старта java. Можно ли как-то аналогично это делать когда программы уже работает (вообщем в произвольный момент)? Точно так же можно корректировать и во время работы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.03.2012, 09:53:14 |
|
||
|
Корректировка байт-кода на лету.
|
|||
|---|---|---|---|
|
#18+
drewhaПри помощи Instrumentation можно корректировать код классов на этапе старта java. Можно ли как-то аналогично это делать когда программы уже работает (вообщем в произвольный момент)? Если разработчики кода заложили его возможность расширения без изменения, то исходники не нужны. Это классический принцип ООП (open/close). Иначе надо знать задачу шире. Варианты разные - начиная от AOP и заканчивая изменения byte-кода в runtime. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.03.2012, 10:06:22 |
|
||
|
Корректировка байт-кода на лету.
|
|||
|---|---|---|---|
|
#18+
BlazkowiczdrewhaПри помощи Instrumentation можно корректировать код классов на этапе старта java. Можно ли как-то аналогично это делать когда программы уже работает (вообщем в произвольный момент)? Точно так же можно корректировать и во время работы. Можно немного подробней про это? Если при старте - вешается агент (ClassFileTransformer) и в методе public byte[] transform (ч/з который проходят все классы) изменяется байткод. Как сделать подобное в произвольный момент? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.03.2012, 10:23:20 |
|
||
|
Корректировка байт-кода на лету.
|
|||
|---|---|---|---|
|
#18+
Instrumentation.redefineClasses() в любой момент можно вызвать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.03.2012, 10:35:09 |
|
||
|
Корректировка байт-кода на лету.
|
|||
|---|---|---|---|
|
#18+
LeonidvdrewhaПри помощи Instrumentation можно корректировать код классов на этапе старта java. Можно ли как-то аналогично это делать когда программы уже работает (вообщем в произвольный момент)? Если разработчики кода заложили его возможность расширения без изменения, то исходники не нужны. Это классический принцип ООП (open/close). Иначе надо знать задачу шире. Варианты разные - начиная от AOP и заканчивая изменения byte-кода в runtime. Не заложили. Программа писалась давно, авторов нет, плюс она обфусцирована (все что осталось - это jar'ы). Функциональности там много, изменения нужны небольшие, т.ч. заново переписывать не эффективно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.03.2012, 10:38:19 |
|
||
|
Корректировка байт-кода на лету.
|
|||
|---|---|---|---|
|
#18+
BlazkowiczInstrumentation.redefineClasses() в любой момент можно вызвать. И не забыть включить эту фичу в манифесте javaagent jar. Есть мнение, что включение этой штуки тормозит сервер примерно так же как и -Xdebug, но точных данных нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.03.2012, 10:57:43 |
|
||
|
Корректировка байт-кода на лету.
|
|||
|---|---|---|---|
|
#18+
rrrrrrrrИ не забыть включить эту фичу в манифесте javaagent jar. Есть мнение, что включение этой штуки тормозит сервер примерно так же как и -Xdebug, но точных данных нет. В доке оба способа описаны: http://docs.oracle.com/javase/7/docs/api/java/lang/instrument/package-summary.html Вообще интересно как jvisualvm классы инструментирует для профилирования. Свободно ведь цепляется к JVM с дефолтными настройками. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.03.2012, 11:02:57 |
|
||
|
Корректировка байт-кода на лету.
|
|||
|---|---|---|---|
|
#18+
LeonidvЕсли разработчики кода заложили его возможность расширения без изменения, то исходники не нужны. Это классический принцип ООП (open/close). Для Hot Code Replace как-то ортогонально был ли язык ООП-типа или нет. Это другое направление IMHO. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.03.2012, 15:01:16 |
|
||
|
Корректировка байт-кода на лету.
|
|||
|---|---|---|---|
|
#18+
maytonLeonidvЕсли разработчики кода заложили его возможность расширения без изменения, то исходники не нужны. Это классический принцип ООП (open/close). Для Hot Code Replace как-то ортогонально был ли язык ООП-типа или нет. Это другое направление IMHO. Речь шла не об этом. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.03.2012, 15:03:53 |
|
||
|
Корректировка байт-кода на лету.
|
|||
|---|---|---|---|
|
#18+
А как получить экземпляр Instrumentation чтобы вызвать redefineClasses? Запоминать его в статической переменной когда при старте вызывается ClassFileTransformer.premain()? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.03.2012, 10:03:54 |
|
||
|
Корректировка байт-кода на лету.
|
|||
|---|---|---|---|
|
#18+
drewhaА как получить экземпляр Instrumentation чтобы вызвать redefineClasses? Запоминать его в статической переменной когда при старте вызывается ClassFileTransformer.premain()? через агента: http://docs.oracle.com/javase/7/docs/api/java/lang/instrument/package-summary.html ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.03.2012, 10:10:13 |
|
||
|
Корректировка байт-кода на лету.
|
|||
|---|---|---|---|
|
#18+
BlazkowiczdrewhaА как получить экземпляр Instrumentation чтобы вызвать redefineClasses? Запоминать его в статической переменной когда при старте вызывается ClassFileTransformer.premain()? через агента: http://docs.oracle.com/javase/7/docs/api/java/lang/instrument/package-summary.html А можно чуть подробнее, что-то я так и не понял. Через агента - это, как я понял, при старте jvm. А как после, в нужное время? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.03.2012, 10:51:46 |
|
||
|
Корректировка байт-кода на лету.
|
|||
|---|---|---|---|
|
#18+
drewhaBlazkowiczпропущено... через агента: http://docs.oracle.com/javase/7/docs/api/java/lang/instrument/package-summary.html А можно чуть подробнее, что-то я так и не понял. Через агента - это, как я понял, при старте jvm. А как после, в нужное время? Тем более метод Instrumentation.redefineClasses() не public. Что-то я совсем запутался. Может у кого-нибудь похожий код есть (чтобы сделать инструментирование 2-й раз)? Заранее спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.03.2012, 11:25:50 |
|
||
|
Корректировка байт-кода на лету.
|
|||
|---|---|---|---|
|
#18+
drewha, Мне кажется Вам поможет это: http://dhruba.name/2010/02/07/creation-dynamic-loading-and-instrumentation-with-javaagents/ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.03.2012, 12:11:23 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=37728985&tid=2132165]: |
0ms |
get settings: |
17ms |
get forum list: |
21ms |
check forum access: |
8ms |
check topic access: |
8ms |
track hit: |
82ms |
get topic data: |
24ms |
get forum data: |
6ms |
get page messages: |
118ms |
get tp. blocked users: |
3ms |
| others: | 338ms |
| total: | 625ms |

| 0 / 0 |
