问题标签 [load-time-weaving]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
6 回答
7087 浏览

spring - jetty-maven-plugin 和 loadTimeWeaver

似乎无法让我的 spring webapp 与 jetty-maven 插件一起使用

我总是得到

虽然我有:

  • 将 MAVEN_OPTS 设置为 javaagent:/Users/blabla/.m2/repository/org/springframework/spring-instrument/3.1.3.RELEASE/spring-instrument-3.1.3.RELEASE.jar
  • 将 JAVA_OPTIONS 设置为相同的东西
  • 将 dep 添加到spring-instrumentspring-aspects
  • 添加jvmArgs-javaagent:....jetty-maven-plugin 配置
0 投票
1 回答
4457 浏览

java - Spring maven 项目 BeanCreationException

我已经升级到 Spring 源代码 3.1.0,但我不确定为什么我的项目无法再找到

我已确保在我的构建路径中添加服务器运行时库,但我仍然以BeancreationExceptions. 堆栈跟踪:

主要说明它与 RelectiveLoadTimeWeaver 有问题,

我曾经能够更新我的服务器的 context.xml 并添加 InstrumentalLoadtimeWeaver 加载器,但它不再有效。

编辑:完整的堆栈跟踪

0 投票
2 回答
521 浏览

maven - Junit 由于 Aspect 而失败

我有一个基于注释的自定义安全框架。当遇到方法的安全注释时,我使用 aspectj maven 插件来编织方面。

我使用 jenkins 来构建项目,并且为编译设置了 aspectj maven 插件目标,如下所示。

当junit运行时出现问题。由于它已经在方法中编织了与安全相关的注释,因此单元测试失败。

有没有办法让junits工作然后进行aspectj编织?由于我单独使用 .aj 文件,我不确定如何设置加载时间编织。

对此的任何帮助表示赞赏。

问候

0 投票
2 回答
4184 浏览

java - OSGi WeavingHook 示例

有人有使用 OSGi 4.3+ Weaving Hook Service 的例子吗?AspectJ、ASM、JavaAssist 怎么样?有人真的在使用 OSGi WeavingHooks 吗?

OSGi Core 5.0.0 第 56.2 节中的示例简单地省略了实际的编织,并说“最终的编织留给读者作为练习”。

我的目标是:

  1. 创建一个可以放在字段(基元或对象)上的注释(@MyAnnotation)。
  2. 创建一个 org.osgi.framework.hooks.weaving.WeavingHook 以使用该注释编织类
  3. 使用加载时编织来切入具有该注释的字段的任何修改
  4. 触发字段被修改的 EventAdmin 事件。
  5. 动态更新来自 WeavingHook 的包连接以连接到 EventAdmin 包。

我的问题主要是#3。

我目前正在尝试使用 AspectJ WeavingAdaptor进行编织,但是在将方面库放入其中时遇到问题,因为它期望构造函数中的java.net.URL[] aspectURLs是罐子或目录它可以在文件系统上找到,而不是捆绑包。另外,我不确定如何通过回调到 GeneratedClassHandler 的acceptClass(String name, bytes[])方法来处理编织器生成的任何新类。

也许 WeavingAdaptor 不是开始编织的正确位置?或者也许我不应该使用 AspectJ?

MyAnnotation.java

MyWeavingHook.java

我的方面.aj

MyTestClass.java

我可以使用 Spring AOP,但我希望它适用于任何包,而不仅仅是通过 Spring 或 Blueprint 实例化的 bean。此外,Equinox Weaving 似乎还没有使用 OSGi 编织钩子规范,我不想被 Equinox 束缚。如果其他方法效果更好,我可以毫无问题地废弃 AspectJ。

参考一个类似的问题:使用 OSGi 时是否可以进行字节码操作?

更新:

最终结果是我刚刚使用 Equinox Aspects 并将其安装到 Karaf 中。是 3 个捆绑包、一个库和一个系统属性。我会一直使用它,直到他们将它更新为我们的 OSGi 编织,或者我编写自己的 OSGi 编织钩子以使用类似于 Equinox Aspects 的 AspectJ 代码。我不喜欢让 Equinox Aspects 工作所需的编织指标,因为它在要编织的包中的 AspectJ RT 上引入了 require-bundle/reexport 或 import-package。应该在捆绑包之外动态添加和建议此依赖项。

0 投票
2 回答
929 浏览

spring - 在不在我的项目中的类上加载时间编织

我正在尝试使用 Spring 为我创建的项目中的几个类提供加载时间编织。当我调用一个不在本地项目中的类时,我无法让它工作。

我创建了一个名为的类ExampleClass,当我在其中执行@Around一个方法时,我可以看到我对返回所做的修改,但是当我尝试对返回做同样的事情时,String我无法得到任何结果。

这是我的Aspect代码:

这是我对该代码的调用:

的内容my-context.xml只是一个<context:load-time-weaver />.

我有一个aop.xml定义,正如我所说的适用于一个类,但不适用于另一个类:

我是否遗漏了什么,或者这是 Spring 和 AspectJ 的限制?

0 投票
1 回答
388 浏览

aspectj - 编译类文件的类型间声明

是否可以在加载时编织时使用 AspectJ 在编译的类文件上进行类型间声明?

举个例子:我编译了一些 Groovy 代码,想用 IDT 添加字段或方法。

0 投票
0 回答
93 浏览

java - 任何与 JRockit 的 Weaving/AOP API 等效的 OpenJDK?

我对JRockit 的内置编织/AOP 支持印象深刻。OpenJDK 上的 AOP 编织是否有任何类似易于使用的支持?

我尝试检测的代码通常是通过 Maven 加载的,因此连接到类加载器以例如安装编织类加载器可能很困难。基于 JMTI 的解决方案可能实用,也可能不实用。

0 投票
1 回答
751 浏览

tomcat - 部署到单个 JVM 的所有应用程序的 AspectJ LTW

我已将我的 aspectJ 方面捆绑到单个 War (aspectsWar.war) 文件中,并将其部署到具有现有正在运行的应用程序的应用程序服务器上,并在 tomcat 服务器上使用带有 javaagent 的 LTW 编织。

我可以看到切面拦截了 aspectWar.war 上的调用,但看不到在同一 jvm 上运行的其他应用程序上。

有没有办法让我的aspectj方面识别和编织所有其他正在运行的应用程序(最好不必修改各个war文件),可能是通过对应用服务器的一些自定义类加载更改......

注意:这是单独使用 aspectJ,没有任何与 Spring 相关的集成。

请指教。

0 投票
1 回答
1534 浏览

spring - AspectJ 方面没有使用 @RequestMapping 注释编织 Spring MVC 方法

我有一个独立的 aspectJ 库(与 spring 没有任何关系),我将它添加到应用程序服务器类路径中,以使用加载时间编织来监视正在运行的应用程序

该切面与所有方法(域、服务、DAO ...)完美配合,但由于某种原因,即使切入点表达式与控制器类和方法名称匹配,它也无法识别带有 @RequestMapping 注释的 Spring MVC 方法

对于需要单独处理的 Spring MVC 控制器映射方法(或通常来自其他框架的控制器)是否有不同的规则。

该切面编织到 @Controller 类中的其他公共和私有方法中,但没有专门编织到 @RequestMapping 方法中。

注意:我不是在寻找特定于 Spring MVC 的解决方案(除非它是唯一的选择),我希望能够编织到任何类型的类和方法中,而不管框架如何,而无需修改正在运行的应用程序。

这是我的代码。

}

}

0 投票
0 回答
633 浏览

spring - Spring Tomcat6“没有可用的LoadTimeWeaver”代码配置的webapp上下文错误

我正在开发一个基于 Spring 3.2.1 的 webapp (RestFull Services) 以部署在 Tomcat 6 服务器上。由于来自其他自定义依赖项项目的 Jpa、事务和功能,我必须启用 loadTime 编织。为此,我首先在 app /META-INF 中配置了我的 context.xml,并添加了:

然后我将spring-instrument-3.2.1.RELEASE.jarspring-instrument-tomcat-3.2.1.RELEASE.jar放在我的 tomcat/lib 文件夹中。

并将 web.xml 配置为用户 annotationBasedConfiguration

Webapp 使用没有 XML 的代码配置,所以我创建了一个 @Configuration 注释类,例如:

当我尝试启动应用程序时,我收到错误

因此,起初在我看来,LoadTimeWeaving 配置不正确,但在尝试任何可能的解决方法一天后,我仍然没有找到解决方案。

我能看到的唯一奇怪的事情是那一行日志:

在我看来,在应用程序上下文中创建了两个具有相同名称(“LoadTimeWeaver”??)的不同 bean,具有不同的定义,并且这两个 bean 在某种程度上存在冲突。

织布工是否有可能使用 context:load-time-weaver 创建(它存在于从导入的 jar 加载的上下文文件中)和在我的新上下文中使用 @EnableLoadTimeWeaving 创建的那个在某种程度上发生了冲突?有没有办法只使用最后一个来覆盖两者之一?