如何使用我的注释查找所有类 |野蝇JavaEE



在JavaEE 部署中查找具有特定注释的所有类的最佳方法是什么?我使用WildFly ApplicationServer并创建了自己的注释。在部署开始时,我想找到带有注释的所有类并缓存它们以供以后访问。我必须做些什么来保护资源?

首先,Wildfly具有模块化的类加载结构。在野蝇文档中:

从 JBoss AS 7 开始,类加载与以前版本的 JBoss AS 有很大不同。类加载基于 JBoss 模块项目。与更熟悉的分层类加载环境不同,WildFly 的类加载基于必须定义对其他模块的显式依赖关系的模块。WildFly 中的部署也是模块,除非定义了对这些类的显式依赖关系,否则它们无法访问在应用程序服务器的 jar 中定义的类。

如上所述,如果您有更多的 .ear 或 .war 包,除非定义了显式依赖关系,否则它们无法看到彼此之间的类。每个模块都可以看到自己的类,因此每个模块都应该加载和缓存自己的类。不能使用单个类和单个方法加载所有类。

使用以下代码,您可以看到模块中所有加载的类。

Field f = ClassLoader.class.getDeclaredField("classes");
f.setAccessible(true);
ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
Vector<Class> classes =  (Vector<Class>) f.get(classLoader);

最新更新