2013-12-16 8 views
0

C++ 메서드 호출을 가로채는 일반적인 질문 ...Intercept C++ 메서드 호출 (Tuxedo, tpcall)

어떤 오픈 소스 프레임 워크가 있습니까? 내 컨테이너로 Tuxedo (11+)를 사용하므로 기본적으로 성공적인 tpcall 호출에서 "around"를하고 싶습니다. Tuxedo의 TSAM은 이것을 확장으로 처리하지만 TSAM 코끼리를 건너 뛰고 tpcall이 직접 호출하는 것이 좋습니다.

아이디어가 있으십니까? 당신이 MYSERVICE 서비스를 차단하려면

+0

아마도 LD_PRELOAD를 사용하여 tpcall을 호출 할 수 있습니까? 오버 헤드가 문제 일 수 있습니다. 누구든지 Tuxedo에 대해 사전로드 동적 연결을 시도 했습니까? –

답변

0

나는이 개 가능한 솔루션이 있다고 생각합니다. 이 접근법의 단점은 비즈니스 기능에 의존하지 않는 응용 프로그램에 대해 tmtrace를 켜야한다는 것입니다. 모니터링, 디버깅 등을하는 것이 좋습니다.

2) 맞춤형 TSAM + Tuxedo 플러그인을 구현하십시오. 나만의 플러그인을 사용하고 mondebug, monshm elephants는 건너 뛸 수 있습니다. 또는 TSAM +를 완전히 건너 뛰고 문서화되지 않은 엔진/tsam/에이전트 인터페이스 용 플러그인을 구현할 수 있습니다.

I wrote about similar problem for my DIY Tuxedo monitoring

1

, 당신은 인터셉터라는 일반적인 서비스를 쓰기 작성하고 다음을 수행 할 수

  1. Unadvertise MYSERVICE 및
  2. 이 이름 MYSERVICE으로 인터셉터를 광고 이름 INTER_MYSERVICE으로 광고
  3. INTERCEPTOR 서비스는 호출 된 이름 (MYSERVICE)을 찾아야하며 INTER_name이라는 이름 (이 경우 INTER_MYSERVICE)의 서비스로 호출을 전달해야합니다.

이 구성은 다시 시작하지 않고도 동적으로 수행 할 수 있습니다.

저는 이것을 디버깅/로깅 목적의 개발에서 사용합니다.이 디버깅은 매우 잘 작동합니다. 나는 그것을 생산에 사용할 지 확신 할 수 없다. 또한 XOCTET 버퍼 유형 만 사용하므로 더 쉽게 사용할 수 있지만 여러 버퍼 유형에서도 작동해야한다고 생각합니다.

또한 동시에 수백 개의 서비스를 수행하는 것이 문제가 될 수 있습니다.

1) 가장 간단한 하나 (3C) 기능과 libutrace.so tputrace를 구현하고있다 tpcall 또는 tpservice을 잡을 것입니다 :

+0

는 절대적으로. 프록시 서비스는 가능하지만 Tuxedo 구성에 좀 더 일반적이고 비 간섭적인 무언가가 필요했습니다. 감사 프레임 워크가 있고 고객이 플러그인을 작성할 수 있다고 밝혀졌습니다. 프리로드가 수신자 측에서 너무 어렵다면 시도해보십시오. –