问题标签 [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.
spring-boot - Tomcat 8,Spring Boot,@Configurable LoadTimeWeaving 没有 -javaagent?
我正在尝试设置一个@Configurable
域对象(不由 spring 容器管理)。
我通过添加-javaagent:path/to/spring-instrument.jar
作为 JVM 参数来完成这项工作,但我并不清楚这个 -javaagent 是否必须到位。我在 Tomcat 8 上运行它。我可能误解了文档,但似乎我可以使用另一种机制来实现这一点,特别是这一行:
不要再定义
TomcatInstrumentableClassLoader
和Tomcat 8.0
更高。而是InstrumentableClassLoader
通过策略让 Spring 自动使用 Tomcat 新的原生设施TomcatLoadTimeWeaver
。
下面的代码示例:
那么有没有办法在不指定 -javaagent 的情况下编织这些 @Configrable 对象?我有兴趣了解在作为 WAR 部署到独立 Tomcat 8 服务器和/或在作为“胖”jar 启动时使用嵌入式 Tomcat 8 服务器时是否可以完成此操作。
就目前而言,部署到独立 Tomcat 8 服务器不会引发错误,但上述getMyService()
方法返回 null。作为 fat jar 启动会在启动过程中引发以下错误:
Caused by: java.lang.IllegalStateException: ClassLoader [sun.misc.Launcher$AppClassLoader] does NOT provide an 'addTransformer(ClassFileTransformer)' method. Specify a custom LoadTimeWeaver or start your Java virtual machine with Spring's agent: -javaagent:org.springframework.instrument.jar
我想真正的问题是我如何Specify a custom LoadTimeWeaver
在 Tomcat 8 中使用?正如文档所述,似乎没有任何事情会自动发生,但我可能再次误解了这意味着什么。
c# - CodeCop 和 .NET 4.6 - 为什么不运行?
我最近尝试了 Code Cop 1.3.1 - 一个方法拦截器。
但是在安装 .NET Framework 4.6 时不会运行。
spring - 使用spring aop加载时编织时的问题处理自身内部的方法调用
我的商务舱如下:
和方面类如下:
在春季配置完所有这些bean之后,我打开LTW使用
当然aspectjrt,aspectj-weaver,spring-instrument就位,-javaagent:path/spring-instrument.jar 传给VM选项,aop.xml在META-INF下
当我像这样运行测试时:
结果似乎很完美
但是当我在内部运行调用 sayHello 的测试时
根本没有拦截发生
我使用 LTW 的原因是我希望使用“this”或“super”的方法调用也可以被拦截,但似乎我没有这样做。有人可以帮我指出问题,我错过了什么吗?
- - - - - - - - - - - - - - 编辑 - - - - - - - - - - - ------------
经过一些调试后,我发现我错了
在现实生活中,
我在 com.bussiness 包下有“A 类”,在 com.aspect 包下有“
类 Aspect”,我写的是
aop。 xml 喜欢跟随
这是不正确的,应该是包含类的包需要编织,我将其更改为
它终于起作用了
java - 将方面编织到可执行 jar 并运行它
当任何方法调用任何其他方法时,我编写了一个方面来打印有关 Method 的详细信息。我想排除 java 库。
我正在尝试将方面编织到一个 jAR 文件,然后执行该 JAR。
我长期挣扎并阅读了许多教程,但无法完成任务。
这是方面的代码
我用来生成编织 jar 的命令
命令我试图执行编织的 JAR
错误
Ajc.properties 文件(因为我在找不到某些类型时遇到错误。
java - Spring AOP 和 AspectJ Load-Time Weaving:私有方法将调用两次环绕通知
我将使用 Spring AOP 和 AspectJ Load-Time Weaving 来测量我的代码中特定私有/受保护/公共方法的执行时间。
为此,我编写了以下注释,其中一个我将注释应该测量执行时间的方法:
我还写了以下方面:
我的Spring配置如下:
我还在src/main/resources/META-INF
我的项目目录中放置了以下内容aop.xml
:
我还向我的 POM 添加了以下 Spring AOP 和/或 AspectJ 特定依赖项:
- org.aspectj:aspectjrt:1.8.6
- org.aspectj:aspectjtools:1.8.6
- org.springframework:spring-aop:4.1.6
此外,我org.aspectj:aspectweaver:1.8.6
通过启动我的 Tomcat 来用作 Java 代理。
对于带注释的公共方法和受保护方法,一切正常,但对于带注释的私有方法,我的方面的周围建议将被调用两次,我不知道为什么。
java - 不同类加载器类上的 AOP
我在 jboss 中部署了一个应用程序。其中我有 .war(Web 应用程序)和 .sar(服务层)。这两个是由不同的类加载器加载的。现在我想对 .war 文件中的 .sar 文件中的类应用 AOP。我们在 Web 层使用 JNDI 来引用那些服务(.sar 类)。任何人请让我知道如何将 AOP 应用于 Web 模块的服务层类。
spring - 如何使用 aop.xml 配置我的 spring aop xml 加载时间编织?
我在 spring AOP 上有一个“Hello word”应用程序并由 XML 配置,它看起来像这样:
我的弹簧配置如下所示:
由于受保护的方法,这不起作用,所以我尝试将加载时间编织与 aop.xml 一起使用,如下所示:
方面的源代码:
但它不起作用,只有当我更改为注释配置时。求救
osgi - Eclipse RCP:编织时如何添加内部类
在我的 RCP 应用程序中,我使用 WeavingHook 服务在加载时修改第三方类。我无法对第三方代码进行任何更改,因此我的编织实现必须按原样使用。
除了一个问题,我让它工作。对于我制作的其中一个模块,我实例化了一个内部类。它必须是内部类,因为它依赖于在其中一个超类中定义的内部类。
现在,当第三方代码加载修改后的类时,它的类路径上没有内部类的文件,这仅在我实现编织的插件中可用。如果第三方插件声明了 buddy 策略registered
,我可以在清单中添加Eclipse-RegisterBuddy
指令,但事实并非如此。
是否有某种编织方法可以使修改后的类能够访问通过二进制编织添加的内部匿名类?
我能想到的唯一解决办法就是在二进制编织发生时,将内部类文件复制到第三方代码的bin/目录下。看起来像一个黑客,所以我希望有更好的方法。
java - 使用 @ChangeTracking 关系保存 ManyToMany 会引发 PersistenceException
当我尝试保存 ManyToMany 关系时,我得到一个数据库异常:
这很奇怪,因为我在日志中看到两个实例都已插入:
ChangeTracking 是一个 eclipselink 功能,应用程序需要一个 javaagent 才能运行:
如果没有 ChangeTracking 和它按预期工作的代理,插入就会发生。如果我保存所有者方,它也可以工作(参见注释行)
这些文件可以在 github 上找到:https ://github.com/zbiro/many2many
该示例可以从
java文件:
持久性.xml
构建.gradle
我的问题是它为什么会发生以及如何避免它。
spring - 为什么我不能在带有嵌入式 tomcat 的 Spring Boot Web 中获得 @EnableLoadTimeWeaving
我正在编写一个打包为可执行 jar 文件的 Spring Boot Web 应用程序,我需要加载时间 AspectJ 编织。使用-javaagent
对我来说不是一个选项,因为它需要我们的 DevOps 更改部署工具链,我现在不想处理。这是我的主要课程。
这没有用。我想也许注入InstrumentationLoadTimeWeaver
不能很好地与嵌入式 Tomcat 配合使用。我尝试将其替换为TomcatLoadTimeWeaver
. 但结果是 spring 上下文无法加载并显示以下错误消息。
原因:java.lang.IllegalStateException:无法初始化 TomcatLoadTimeWeaver,因为 Tomcat API 类不可用
spring-boot github 问题上的这个错误得出结论,当前 AspectJ 加载时间编织不能与嵌入式 tomcat 一起使用。我的问题是为什么不可能?我想了解什么是加载时间编织机制,这使得它无法在可执行的 Spring boot web jar 中工作。