Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Помогите с тестированием 
:(
    Опции темы
3,14
  Дата 10.9.2007, 10:20 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1614
Регистрация: 18.6.2004
Где: Н. Новгород

Репутация: 6
Всего: 24



Может кого заинтересует данный проект. Суть состоит в следующем, однажды мне совершенно надоело перекомпилировать по часу свой проект, только для того чтоб вставить в определённое место печать Stack Trace-а. Так я взялся за написание проекта, к-ый бы позволял при подгрузке класса добавлять в его методы вызовы неких логиррующих функций.
Вот, собственно, пример:
Возьмём обычный HelloWorld:
Код

public class HelloWorld {

    public static void main(String [] args) {
        System.out.println("Hello world ;)");
    }

}


Подключаем мой jar (advdebug.jar), создаём класс-логгер:
Код

public class Logger1 {
    public static void log() {
        System.out.println("this is a logger 1");
    }
    
    public static void log(String msg) {
        System.out.println("logger 1, message received: " + msg);
    }
}


Пишем конфиг для тулзы:
Код

[loggers]
name=logger1
logger1.type=Logger1
logger1.method=log
logger1.params=:
logger1.filter=advdebug.patching.ReturnFilter:advdebug.patching.StartFilter

[targets]
name=target1
target1.type=HelloWorld
target1.method=main
target1.logger=logger1


И собственно процес запуска:
java -Djava.system.class.loader=advdebug.DebugClassLoader  -classpath .;../;../advdebug.jar HelloWorld

Как результат, на экран выводится следующее:
Цитата

this is a logger 1
Hello world ;)
this is a logger 1


Вот архив, к-ый содержит jar-файл для работы. Доку, с описанием параметров конфигурации. и простейшие примеры: http://files.unn.ru/1647856956
А если кому то понадобятся сорцы, то они тут: http://files.unn.ru/9485734334

Это сообщение отредактировал(а) 3,14 - 10.9.2007, 10:21


--------------------
Может быть, это только мой бред,
Может быть, жизнь не так хороша,
Может быть, я не выйду на свет,
Но я летал, когда пела душа...
PM MAIL   Вверх
Maksym
Дата 10.9.2007, 10:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


.
***


Профиль
Группа: Участник Клуба
Сообщений: 1456
Регистрация: 19.8.2005
Где: Odessa, Black Sea

Репутация: 14
Всего: 62



3,14
Очень интересно, гляну.
ЗЫ. Сталкивался с такой же задачей. Решил посредством AspectJ.

PM MAIL   Вверх
Tony
Дата 10.9.2007, 12:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1159
Регистрация: 3.3.2006
Где: Riga

Репутация: нет
Всего: 12



Классная идея. Если бы либа могла вставлять автоматом takvot
Код

  try{
    //some code
}catch(Exception e){
     
}
после:
  try{
    //some code
}catch(Exception e){
     logger.error(e);
}



--------------------
user posted image
user posted image
PM MAIL Skype   Вверх
3,14
Дата 10.9.2007, 13:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1614
Регистрация: 18.6.2004
Где: Н. Новгород

Репутация: 6
Всего: 24



Цитата(Tony @  10.9.2007,  12:54 Найти цитируемый пост)
Классная идея. Если бы либа могла вставлять автоматом takvot

Вызов логгера в catch блоках дописать легко. Вот чтоб туда исключение передавалось - уже сложнее. Нужно посмотреть. Но try/catch блоки уже должны быть в исходно коде.

Добавлено @ 13:03
Цитата(Maksym @  10.9.2007,  10:33 Найти цитируемый пост)
ЗЫ. Сталкивался с такой же задачей. Решил посредством AspectJ.

Кинь, пожалуйста, ссылку как этот средствами AspectJ сделать.

Это сообщение отредактировал(а) 3,14 - 10.9.2007, 13:05


--------------------
Может быть, это только мой бред,
Может быть, жизнь не так хороша,
Может быть, я не выйду на свет,
Но я летал, когда пела душа...
PM MAIL   Вверх
Maksym
Дата 10.9.2007, 13:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


.
***


Профиль
Группа: Участник Клуба
Сообщений: 1456
Регистрация: 19.8.2005
Где: Odessa, Black Sea

Репутация: 14
Всего: 62



3,14
Join Points and Pointcuts

Добавлено через 4 минуты и 19 секунд
Создание аспектов для обработки исключений в AspectJ тоже неплохо реализованы.
PM MAIL   Вверх
w1nd
Дата 11.9.2007, 00:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вертилятор
***


Профиль
Группа: Завсегдатай
Сообщений: 1077
Регистрация: 22.3.2006
Где: Москва

Репутация: 20
Всего: 54



Java agents, однако (1.5+). С помощью этого механизма можно добавлять/удалять свои инъекции в любой класс во время исполнения. И никаких побочных эффектов, в отличие от своего системного загрузчика.

Это сообщение отредактировал(а) w1nd - 11.9.2007, 00:05


--------------------
user posted imageuser posted image
PM MAIL ICQ   Вверх
3,14
Дата 11.9.2007, 11:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1614
Регистрация: 18.6.2004
Где: Н. Новгород

Репутация: 6
Всего: 24



w1nd, у нас java 1.4 используется. Тут от меня ничего не зависит. Но на будущее обязательно запомню.

Maksym, на сколько я понял, AspectJ опять же выполняет что то вроде компиляции. А мне нужно чтоб положил на сервер конфиги и заработало (на сервере могут стоять разные версии релизов, и перекомпилировать под каждый - не совсем good).


--------------------
Может быть, это только мой бред,
Может быть, жизнь не так хороша,
Может быть, я не выйду на свет,
Но я летал, когда пела душа...
PM MAIL   Вверх
Maksym
Дата 11.9.2007, 13:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


.
***


Профиль
Группа: Участник Клуба
Сообщений: 1456
Регистрация: 19.8.2005
Где: Odessa, Black Sea

Репутация: 14
Всего: 62



Цитата(3 @ 14, 11.9.2007,  11:46 Найти цитируемый пост)
Maksym, на сколько я понял, AspectJ опять же выполняет что то вроде компиляции. А мне нужно чтоб положил на сервер конфиги и заработало (на сервере могут стоять разные версии релизов, и перекомпилировать под каждый - не совсем good). 

Да, приложение "затачивается" под аспекты. Похоже, я не уловил нюанса твоей задачи.
Значит то что ты сделал тем более интересно!  smile 
PM MAIL   Вверх
3,14
Дата 14.9.2007, 10:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1614
Регистрация: 18.6.2004
Где: Н. Новгород

Репутация: 6
Всего: 24



w1nd, кинь ссылку на java agents...


--------------------
Может быть, это только мой бред,
Может быть, жизнь не так хороша,
Может быть, я не выйду на свет,
Но я летал, когда пела душа...
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
javastic
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0495 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.