拦截C ++方法调用的一般问题......
是否有任何开源框架?使用Tuxedo(11+)作为我的容器,所以基本上我想在成功的tpcall调用上做“周围”。来自Tuxedo的TSAM将此作为扩展,但我宁愿跳过TSAM大象并自己陷入tpcall调用。
想法?
答案 0 :(得分:1)
如果要拦截服务MYSERVICE,可以编写一个名为INTERCEPTOR的通用服务,并执行以下操作:
此配置可以动态完成,无需重新启动。
我将它用于开发中的调试/日志记录目的,它可以很好地运行。我不确定我是否会在生产中使用它。此外,我们只使用XOCTET缓冲区类型,这使得它更容易,但我认为它也适用于不同的缓冲区类型。
同时为数百个服务执行此操作可能会成为一个问题。
答案 1 :(得分:0)
我认为有两种可能的解决方案:
1)最简单的方法是实现tputrace(3c)函数和libutrace.so并在那里捕获tpcall或tpservice。这种方法的缺点是你必须为你的应用程序打开tmtrace,我不会依赖它来实现业务功能。它适用于监控,调试等。
2)实现自定义TSAM + Tuxedo插件。您可以只启用自己的插件并跳过mondebug,monshm elephants。或者您可以完全跳过TSAM +并为未记录的引擎/ tsam /代理接口实现插件。