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

如何避免在使用aop.xml进出战争文件时运行多个AsheJ编织器

屈昊天
2023-03-14

我有一个war文件,其中包含许多AsheJ方面和一个aop.xml文件,其中指定了这些方面适用的包。我通过将这一行添加到我的Spring配置中来启用aop加载时间编织Spring:

<context:load-time-weaver/>

这将启动我的应用程序服务器的默认weaver:org。springframework。仪器类加载。weblogic。WebLogicLoadTimeWeaver。

问题是,我们还有另一个方面

正如我所见,这两个织工似乎发生了冲突:

[ChangeAwareClassLoader@70b2974f] warning define generated class failed -- (LinkageError) loader (instance of  weblogic/utils/classloaders/ChangeAwareClassLoader): attempted  duplicate class definition for name: "x/y/MyClassImpl$AjcClosure1"
loader (instance of  weblogic/utils/classloaders/ChangeAwareClassLoader): attempted  duplicate class definition for name: "x/y/MyClassImpl$AjcClosure1"
java.lang.LinkageError: loader (instance of  weblogic/utils/classloaders/ChangeAwareClassLoader): attempted  duplicate class definition for name: "x/y/MyClassImpl$AjcClosure1"

我想知道是否有一种方法可以让战争使用javaagent行定义的aspectjweaver,这样我只有1个weaver在运行?请注意,我不想将我的方面从战争移动到系统类路径,因为它们对其他库有许多依赖关系。

任何指导非常感谢!

谢谢

共有1个答案

拓拔俊德
2023-03-14

我想知道您是否可以使用其中一个特殊属性来配置AspectJ LTW以关闭与代理相关的weaver,这样就不会创建它,而是使用备用属性。基本上在启动时设置此系统属性:

-Daj.weaving.loadersToSkip=org.springframework.instrument.classloading.weblogic.WebLogicLoadTimeWeaver
 类似资料:
  • 问题内容: 避免同一脚本的两个实例同时运行的典型方法如下: 有没有更好的方法来锁定shell脚本中的文件,从而避免出现竞争状况?必须使用目录代替吗? 问题答案: 是的,示例脚本中确实存在竞争条件。您可以使用bash的选项,以便在比赛和其他测试脚本潜行时出现比赛失败。 以下是一个示例代码片段(受本文启发),说明了该机制:

  • 我有一个分布式任务队列,其中的任务如下所示: 这里有一个竞争条件:如果任务队列软件在完全相同的时间启动其中两个任务,它们都将从数据库中获得相同的<code>old_path</code>,并且竞争失败者的取消链接调用失败(将失败者的新路径从未来的取消链接中孤立出来)。 有没有办法让我构建它来绕过这场比赛?如果需要,我可以从当前设计中抛出几乎任何东西。具体来说,我使用的是PostgreSQL,Pyt

  • 问题内容: 我正在执行超过1.5 TB数据的Hadoop作业,并进行了大量模式匹配。我有几台机器,每台机器都有16GB的RAM,我总是用这些数据来完成这项工作(我正在使用Hive)。 我想知道如何在文件中优化设置选项,所以我的工作不会失败。甚至可以设置此选项以使我的工作不会失败吗? 当我设置为1.5 GB并从查询中删除了一半的模式匹配时,作业成功运行。那么,如果该选项不能帮助避免作业失败,那么该选

  • 问题内容: 我们有两个不同的Web应用程序,我们想将一场战争的几个控制器扩展到另一场战争。 我们正在使用maven来构建项目。 包括战争,我们已经将其作为 无法建立给类未找到异常。 谁能帮我实现这个目标? 我收到错误Maven构建失败: 问题答案: 您可以定义war插件以生成一个单独的jar文件,该文件可以通过分类器根据配置进行使用: 之后,您可以将其用作其他项目中的单独依赖项。但是最好用它制作一

  • 每当打开Hibernate会话时,我都想使用AsheJ添加一个过滤器。我创建了一个方面并为我自己的类测试了它,它起作用了,但是对于Hibernate会话它什么也不做。 我创建了一个META-INF/aop。资源中的xml: 当我开始我的程序时,我得到以下异常: 我遵循了这些教程: 教程1教程2 我发现我必须按照异常的指示传递JVM参数,所以我尝试在构建梯度中执行以下操作: 根据IntelliJ,a

  • 我正在使用 Kubernetes 作为容器编排器构建一个微服务应用程序。该应用程序现已启动并运行,但我有其他问题。那是在我的服务中,我每天都有一个计划任务运行,当服务部署时,将运行多个服务实例(通过设置副本编号),创建多个同时运行的任务。我期望的是只有一个服务任务实例将运行,而不是多个实例。有什么技术可以处理这种情况吗? 库伯内特斯 Asp.net核心构建微服务 CI/CD的基岩实现 Fabrik