如何检查 jar 中是否包含建议
how to check if a jar has advice woven into it
我们有一个 jar 文件,我们希望其中包含交易建议。但是,当我们部署这个 jar 并在运行时期间,我们不断得到 "Unable to locate current JTA transaction"。表明该建议不正确可用。
我找不到任何文章或博客或 material 讨论 verifying/checking 如果方面实际上被编织到一个 jar 文件中。
如果已经有任何页面讨论这个,请指出它。
提前致谢。
使用 javap
工具,您可以验证 class 是否已由 AspectJ 编织。为了快速检查 class 是否在任何地方编织,请检查 class 是否具有 WeaverVersion 属性:
javap -private -verbose com.foo.SomeClass
...
org.aspectj.weaver.WeaverVersion: length = 0xC
00 07 00 00 00 00 01 4F B3 FA 4E D0
...
要验证 class 文件中的各个位置是否已编织,请重复 javap 命令,但在输出中查找您希望编织的方法 - 这些方法是否调用 ajc$
名称前缀方法?这些将代表对 AspectJ 建议的调用。
虽然最简单的判断方法可能是使用 -showWeaveInfo
在首先编译系统并生成编织罐时,出现的编织信息消息是否指示您希望编织的位置?
另一种选择是从 .jar
/.war
中提取实体 .class
文件,预计将被编织并使用 IntelliJ 打开它。 IDE 使用 Java 字节码反编译器将 class 文件显示为可读 .java
文件。
接下来查看是否织入,只看实现的接口。您将得到如下内容:
public class MyEntity implements Cloneable, PersistenceWeaved, PersistenceEntity, PersistenceObject, FetchGroupTracker, PersistenceWeavedFetchGroups, PersistenceWeavedLazy, ChangeTracker, PersistenceWeavedChangeTracking, PersistenceWeavedRest {
...
}
我们有一个 jar 文件,我们希望其中包含交易建议。但是,当我们部署这个 jar 并在运行时期间,我们不断得到 "Unable to locate current JTA transaction"。表明该建议不正确可用。
我找不到任何文章或博客或 material 讨论 verifying/checking 如果方面实际上被编织到一个 jar 文件中。
如果已经有任何页面讨论这个,请指出它。
提前致谢。
使用 javap
工具,您可以验证 class 是否已由 AspectJ 编织。为了快速检查 class 是否在任何地方编织,请检查 class 是否具有 WeaverVersion 属性:
javap -private -verbose com.foo.SomeClass
...
org.aspectj.weaver.WeaverVersion: length = 0xC
00 07 00 00 00 00 01 4F B3 FA 4E D0
...
要验证 class 文件中的各个位置是否已编织,请重复 javap 命令,但在输出中查找您希望编织的方法 - 这些方法是否调用 ajc$
名称前缀方法?这些将代表对 AspectJ 建议的调用。
虽然最简单的判断方法可能是使用 -showWeaveInfo
在首先编译系统并生成编织罐时,出现的编织信息消息是否指示您希望编织的位置?
另一种选择是从 .jar
/.war
中提取实体 .class
文件,预计将被编织并使用 IntelliJ 打开它。 IDE 使用 Java 字节码反编译器将 class 文件显示为可读 .java
文件。
接下来查看是否织入,只看实现的接口。您将得到如下内容:
public class MyEntity implements Cloneable, PersistenceWeaved, PersistenceEntity, PersistenceObject, FetchGroupTracker, PersistenceWeavedFetchGroups, PersistenceWeavedLazy, ChangeTracker, PersistenceWeavedChangeTracking, PersistenceWeavedRest {
...
}