powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Module, action при входе в метод.
10 сообщений из 10, страница 1 из 1
Module, action при входе в метод.
    #38860120
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день.

Есть в Оракле такая шняга.

Код: plsql
1.
2.
3.
DBMS_APPLICATION_INFO.SET_MODULE ( 
   module_name IN VARCHAR2, 
   action_name IN VARCHAR2); 



Помогает при отладках и трассировках. Например админы оракла видят модуль и действие в своих представлениях.

Вобщем когда входим в модуль - сеттим module_name. Когда делаем действие - делаем action_name.
Семантика - пока за кадром. Но в качестве примера модуль = "Statistics" действие = "ProcessBillingStat".

Есть сокращённый синтаксис когда внутри модуля просто менется действие.
Код: plsql
1.
2.
DBMS_APPLICATION_INFO.SET_ACTION (
   action_name IN VARCHAR2); 



Когда действие закончилось и других действий нет - сеттим NULL.

Есть с моей стороны попытка провести аналогию JavaClass - модуль.

JavaMethod - действие.

Пример:

Код: java
1.
2.
3.
4.
5.
6.
7.
public class Statistics{
   public ProcessBillingStat(.....){
         MyJDBCHelper.setModule("Statistics","ProcessBillingStat");
         .........
         MyJDBCHelper.setModule("Statistics",null);
   }
}


Но вызывать MyJDBCHelper - как-то уныло. Как-бы это сделать в отрыве от бизнес кода?

Аннотации? Аспект?

Как-бы вы сделали. Под Spring-ом. Осталось покрыть OVER 100 методов action-ами.

Обсудите.

P.S. Внутри процесса содержится 1 долгоиграющий SQL-запроса которы дёргается через MyBatis (JDBC).

P.S.2. Действие и модуль применяются к Oracle-сеансу.
...
Рейтинг: 0 / 0
Module, action при входе в метод.
    #38860232
Йуный джавистЪ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: java
1.
2.
3.
4.
5.
6.
7.
public class Statistics{
   public ProcessBillingStat(.....){
     return withModule("Statistics", "ProcessBillingStat", () -> {
      //  ...
     });   
   }
}
...
Рейтинг: 0 / 0
Module, action при входе в метод.
    #38860913
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хотелось без корректировки кода. Как-то вот так штоли.
Код: java
1.
2.
3.
4.
5.
public class Statistics{
   @OracleHelper
   public ProcessBillingStat(.....){
   }
}



Или так придётся?

Код: java
1.
2.
3.
   @OracleHelper(module="Stat",act="ProcBillSt")
   public ProcessBillingStat(.....){
   }
...
Рейтинг: 0 / 0
Module, action при входе в метод.
    #38860929
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonКак-бы вы сделали
IMHO даже по заголовки темы сразу всплыло в памяти: CGLIB
...
Рейтинг: 0 / 0
Module, action при входе в метод.
    #38888053
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Леонид. CGLIB это офигенски мега круто. К сож мой мозг сейчас не в состоянии найти
хороший quick-старт по применению этой штуки в моей идее.

Если у вас будут примеры - буду рад.

P.S. Еще забыл. Офигенски важная штука. Тоже реализовать.

Код: plsql
1.
dbms_session.set_identifier(client_id IN VARCHAR2);


http://psoug.org/reference/dbms_session.html
...
Рейтинг: 0 / 0
Module, action при входе в метод.
    #38888778
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonЛеонид. CGLIB это офигенски мега круто. К сож мой мозг сейчас не в состоянии найти хороший quick-старт по применению этой штуки в моей идее.

Если у вас будут примеры - буду рад
У меня чувство, что оно ровно для этого и приспособлено. Какой quick-старт нужен, не очень понятно. Сделать универсальный генератор врапперов и врапить классы. При входе/выходе вызывать MyJDBCHelper.setModule.

Тут две проблемы, как я вижу:
1. Сам генератор врапперов с использованием CGLIB
2. Встроить в приложение.
2.1. Если используете паттерны (вроде же у Вас агира, скрамы и все новомодное) и все классы создаете по модному через фабрики - наверное править фабрику/и
2.2. Заменять все new, на некие другие вызовы. Ну или на паттерны фабрика
2.3. Сделать свой ClassLoader

p.s. Блин, при моей не любви к слову паттерны, аж 3 раза его в сообщении использовал (((
p.p.s.
1. С CGLIB не работал и вообще, средство мне показалось "из пушки по воробьям".
2. Такие технологии предпочитаю без _большой_ необходимости в реальные проекты не встраивать.
3. Поэтому посмотрел, понял, что вещь интересная и для меня не нужная (см.п.2) но "слушок" остался.
p.p.p.s.
Если потребность есть и реально хотите CGLIB в свои проекты пустить, можно попытаться пообщаться. Особенно на под-форуме "Работа" ))) /это шутка, но "в каждой шутке, есть доля не шутки"/
...
Рейтинг: 0 / 0
Module, action при входе в метод.
    #38889089
DDiver
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если спринг используется, то почему бы не использовать его AOP?
Вроде все предпосылке именно для него при такой постановке задачи. CGLIB тут даже не из пушки, а межконтинентальной по бедным птицам.
...
Рейтинг: 0 / 0
Module, action при входе в метод.
    #38889099
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Щас читаю про спринговый ООП. Основной вопрос - как передать аргументы module, action и
как зафиксировать нужный срез. Пока нужных правил не могу придумать.
...
Рейтинг: 0 / 0
Module, action при входе в метод.
    #38889122
DDiver
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,

можно с помощью аспекта получить класс объекта у которого вызван метод и имя метода.
proof
можно аннотировать класс своей аннотацией, как у вас указано ранее, и получив класс выдрать нужные параметры(например имя модуля) а в качестве экшена можно использовать имя метода. Как вариант.
...
Рейтинг: 0 / 0
Module, action при входе в метод.
    #38933116
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Может не взлететь. Мы работаем с пулом. Поэтому .setModule(..), .setAction(...)
я должен дёрнуть в точно той-же Oracle сессии в которой исполняется транзакция
в теле метода.

Если не удаётся зафиксировать сессию - то идея fail.
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Module, action при входе в метод.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]