2013-12-16 2 views
0

Общий вопрос на перехвате C++ метод вызывает ...Перехват C++ вызовы методов (Tuxedo, tpcall)

Существуют ли какие-либо рамки с открытым исходным кодом? Использование Tuxedo (11+) в качестве моего контейнера, поэтому в основном я хочу сделать «вокруг» успешные вызовы tpcall. TSAM от Tuxedo делает это как расширение, но я бы скорее пропустил слон TSAM и ловушку tpcall называет себя.

Идеи?

+0

Возможно, используя LD_PRELOAD для вызова вызовов на tpcall? Накладные расходы могут быть проблемой. Кто-нибудь пробовал загружать динамическую связь с Tuxedo? –

ответ

0

Я думаю, что есть 2 возможных решения:

1) Самый простой из них заключается в реализации tputrace (3в) функции и libutrace.so и поймать tpcall или tpservice там. Недостатком этого подхода является то, что вам придется включить tmtrace для вашего приложения, на которое я бы не стал полагаться на бизнес-функциональность. Это нормально для мониторинга, отладки и т. Д.

2) Внедрение пользовательского плагина TSAM + Tuxedo. Вы можете включить только свой собственный плагин и пропустить mondebug, слоны monshm. Или вы можете полностью пропустить TSAM + и реализовать плагин для недокументированного интерфейса engine/tsam/agent.

I wrote about similar problem for my DIY Tuxedo monitoring

1

Если вы хотите, чтобы перехватить сервис MYSERVICE, вы можете написать написать общую службу с именем INTERCEPTOR и сделать следующее:

  1. Unadvertise MYSERVICE и рекламировать его с именем INTER_MYSERVICE
  2. Реклама перехватчик с именем MYSERVICE
  3. Служба INTERCEPTOR-службы должна смотреть с каким именем она была вызвана (MYSERVICE) и должна переадресовать вызов службе с именем INTER_name, в этом случае INTER_MYSERVICE.

Эта конфигурация может быть выполнена динамически без перезапусков.

Я использую это для отладки/ведения журнала в разработке, где он работает достаточно хорошо. Я не уверен, буду ли я использовать его в производстве. Кроме того, мы используем только типы буфера XOCTET, что делает его проще, но я думаю, что он должен работать и с разными типами буферов.

Также сделать это для сотен услуг одновременно может стать проблемой.

+0

совершенно. Службы Proxies выполнимы, но я хотел получить нечто более общее и неинтрузивное для конфигурации Tuxedo. Оказывается, существует структура аудита, и клиенты могут писать плагины. Можете попробовать, если предварительная загрузка слишком сложна на стороне вызываемого абонента. –