当前位置: 首页 > 知识库问答 >
问题:

字节伙伴拦截器/通知之间的类共享

东郭良弼
2023-03-14

我试图通过java应用程序中的所有外部调用传递监视/跟踪信息。为了使其透明,我尝试使用byte-buddy,但在使其工作时遇到了一些困难。

为了跟踪每个传入的(http)请求,我截获了HttpServlet。service(),从HttpServletRequest中提取令牌头,并将其放在名为TokenHolder的类中的静态ThreadLocal中。

为了跟踪每个传出(超文本传输协议)请求,我拦截HttpURLConnection并添加我从同一个ThreadLocalTokenHolder)中获得的令牌标头。

我的问题是,TokenHolder似乎被初始化了两次,我的两个拦截器没有向同一个线程本地(ThreadLocal)进行写入/读取,我找不到方法。

我想问题是,HttpURLConnection存在于bootclasspath中,而servlet API不存在。

额外问题:是否可以拦截URL。openConnection()?这是我的第一个想法,但我从来没有这样做过,因为我假设URL类是在代理之前加载的(因为URL类加载器),但我不知道是否有解决html" target="_blank">方法。

共有1个答案

柴正祥
2023-03-14

是的,您可以注册一个重新定义策略,其中Byte-Buddy转换以前加载的类。但要做到这一点,您确实需要避免添加方法或字段。这通常只能通过使用建议来完成。

类需要存在于引导加载器上也是对的。您可以通过将类放置在jar中并使用Instrument接口中的指定方法将类注入引导加载器。

 类似资料:
  • 我必须将注释XmlElementWrapper和XmlElement添加到列表类型的字段,但是这些注释需要名称。我想把属性名设置为字段名。我愿意: 这是我的拦截器: 这是目标类的一部分: 但我有一个例外: [public static void factory.framework.SetterListInterceptor.getter(java.lang.reflect.Method)、publ

  • 我正在尝试用Byte Buddy拦截构造函数调用,这是我的示例代码: 我看到了这个相关的问题,但是,我得到了一个冲突异常(就好像构造函数被定义了两次)。

  • 如何在构造函数拦截器中启动对象字段? 我在Buddy代码中创建了一个字节构造函数。 构造函数首先将参数保存到私有字段。然后它创建集合。然后它调用以下拦截器来填充该集合。 最好在拦截器中实例化variableNamedField字段,因为事实证明,每次创建新的类实例时,variableNamedField字段都是用相同的HashMap对象实例化的。但是,我只能通过@FieldValue注释将现有字段

  • 我在使用Byte Buddy时遇到了一个简单的问题,下面是我的代码: 我希望工作并将调用转发到受人尊敬的拦截器实例,但是我得到这个异常: 最奇怪的部分在异常消息的最后: 我做错了什么?

  • 京东金融 App介绍 [京东金融](jr.jd.com)京东金融是京东数字科技集团旗下专注于金融科技服务的重要业务板块。 京东金融始终基于强大的数字科技能力,致力于为让消费者享受专业、安全的数字金融服务,旗下包含个人和企业两大服务体系。 在个人金融领域,“京东金融App”作为载体,通过独有的大数据技术及人工智能风控能力,携手400多家银行、120余家保险公司、110余家基金公司,已为过亿的消费者精

  • 我正在使用Byte Buddy生成JPA实体和JPA存储库。我能够生成JPA实体,但无法继续生成相应的JPA存储库。以下是代表个人和实体的代码, 我可以使用Bute Buddy生成上述内容,如下所示, 现在我想生成相应的Spring boot Jpa报告,如下所示, 如何用Generic属性创建这个接口。这也能(使用动态代码生成)持久化Person对象吗?