【问题标题】:Wildfly 24 - Module Annotations not working?Wildfly 24 - 模块注释不起作用?
【发布时间】:2023-02-17 11:33:57
【问题描述】:

我在 Wildfly 24 中部署我的应用程序时遇到一些问题。 我创建了一个模块,其中包含一些有助于部署执行的 jar。其中一些 Jar 具有 @Entity 和 @WebService 等注释。

根据 Wildfly 文档,我在 standalone.xml 中创建了一个全局模块,例如:

<global-modules>
        <module name="server.defs" annotations="true" />
</global-modules>

此外,我已经(通过 Maven)为模块中的 jar 和部署的 jar 创建了 jandex 索引。打开罐子时,我可以在 META-INF 文件夹中看到 jandex.idx。为此,我在 pom.xml 中使用了以下内容:

<plugin>
      <groupId>org.jboss.jandex</groupId>
      <artifactId>jandex-maven-plugin</artifactId>
      <version>1.1.1</version>
      <executions>
               <execution>
                     <id>make-index</id>
                      <goals>
                                <goal>jandex</goal>
                      </goals>
                </execution>
        </executions>
</plugin>

但是当我启动服务器时,它就像没有解析注释一样。 Hibernate 无法找到带有@Entity 注释的类,并且无法部署模块中使用@WebService 注释的类。

如果我不使用模块,一切都会正确部署.. 任何人都知道问题是什么?

谢谢你!

【问题讨论】:

  • 模块不会,也不能真的被扫描以查找像那样的 Web 组件。没有上下文,因为它与部署相关联。
  • 谢谢你的回答。只是一些后续问题: - 那么如果不扫描模块声明中的这个“annotations = true”的目的是什么? - 使用全局目录结果是否相同? - 有没有比部署所有带有我在模块中的注释的 jar 更好的方法?
  • 这可能取决于注释。例如,CDI 注释可能会像 bean 可以存在于 JAR 中一样工作。但是,@WebServlet 等注释需要 Web 部署才能工作。我必须阅读规范,但我不认为它会扫描 servlet 的依赖关系。我可能是错的。简而言之,这完全取决于 :) annotations="true" 虽然只是意味着您在模块中证明了 Jandex 索引。

标签: java maven module annotations wildfly


【解决方案1】:

我让项目处于待机状态一段时间,现在我重新启动了它。回答最初的问题,是的,您可以在模块目录中添加带注释的类。

只要确保所需的每个依赖项都包含在 module.xml 中即可。你不需要任何 ' annotations="true" '。

【讨论】:

    猜你喜欢
    • 2014-08-22
    • 2020-07-03
    • 1970-01-01
    • 2020-04-08
    • 1970-01-01
    • 1970-01-01
    • 2014-08-14
    • 1970-01-01
    • 2022-07-15
    相关资源
    最近更新 更多