Общий вопрос о перехвате вызовов метода C ++ …
Существуют ли фреймворки с открытым исходным кодом? Используя Tuxedo (11+) в качестве моего контейнера, так что в основном я хочу сделать «вокруг» на успешных вызовах tpcall. TSAM из Tuxedo делает это как расширение, но я бы предпочел пропустить слона TSAM и перехватывать вызовы tpcall самостоятельно.
Идеи?
Я думаю, что есть 2 возможных решения:
1) Самый простой — реализовать функцию tputrace (3c) и libutrace.so и перехватить там tpcall или tpservice. Недостатком этого подхода является то, что вам придется включить tmtrace для вашего приложения, которое я бы не использовал для бизнес-функциональности. Это хорошо для мониторинга, отладки и т. Д.
2) Реализовать собственный плагин TSAM + Tuxedo. Вы можете включить только свой собственный плагин и пропустить mondebug, monshm elephants. Или вы можете полностью пропустить TSAM + и внедрить плагин для недокументированного интерфейса engine / tsam / agent.
Я написал о подобной проблеме для моего DIY мониторинга смокинга
Если вы хотите перехватить службу MYSERVICE, вы можете написать написать общую службу с именем INTERCEPTOR и сделать следующее:
Эта конфигурация может быть выполнена динамически без перезапусков.
Я использую это для целей отладки / регистрации в разработке, где это работает довольно хорошо. Я не уверен, буду ли я использовать это в производстве. Также мы используем только типы буферов XOCTET, что облегчает эту задачу, но я думаю, что оно должно работать и с различными типами буферов.
Также выполнение этой задачи для сотен сервисов одновременно может стать проблемой.