java - Weld , Tomcat : missing "beans.xml" in META-INF

标签 java tomcat deployment weld

我知道已经有人问过很多类似的问题(例如 thisthis 等),但他们都无法帮助我,所以我决定再次提出它 - 已经挣扎了几个小时,我真的没有主意了。

我有一个 Java EE 项目,其中有一个简单的 servlet,它接受来自 HTML 表单的数据,在外部服务(使用 REST 和 JAX-RS)中执行一些查询并返回结果。我现在的目标是将其部署在独立的 Tomcat 服务器上。我尝试实现它的方法是导出 WAR 工件并将其复制到 Tomcat 的 webapps 目录。

它一直工作到使用 JAX-RS 发送 REST 请求的那一刻 - 然后我总是收到错误:

WELD-ENV-000016:META-INF 中缺少 beans.xml 文件

我根本没有使用这个文件,但正如我所读到的,它必须在那里,即使是空的......所以我尝试将它放在我能想到/读到的任何位置,包括:

/web/META-INF
/web/WEB-INF
/src/main/webapp/META-INF
/src/main/webapp/WEB-INF
/src/main/resources/META-INF
/src/main/resources/WEB-INF

当我检查部署后 Tomcat 创建的输出 .war 文件或目录时,beans.xml 出现在 META-INF 和 WEB-INF 目录中。

初始化 Weld 并执行这些查询在 Intellij IDE 内的单元测试中运行良好 - 这里唯一的要求是将包含 WEB-INF 和 META-INF 的目录标记为“资源根”。

在我的方面配置中,我将包含 WEB-INF 和 META-INF 的目录标记为“Web 资源目录”,并且 *'Web' 方面资源' 包含在我的工件中。

有什么想法吗?我是否从根本上误解了某些东西,这里的内部 Weld 是否需要不同的、单独的 META-INF 或其他东西?

最佳答案

由于没有人回答,我至少会分享我的结论 - 最简单的方法是切换到 TomEE(如果可以接受)。

关于java - Weld , Tomcat : missing "beans.xml" in META-INF,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61012748/

相关文章:

Eclipse Luna - 出现错误 - 'Could not publish server configuration for Tomcat v7.0 Server at localhost. Multiple Contexts have a path of "/abc”

java - JSF/ICEFaces 渲染响应时间很长

tomcat - 如何在同一台服务器上运行多个 TeamCity 实例?

java - 当我尝试发布到我的 spring api 时 403 被禁止?

apache - SonarQube 4.x only with embedded Tomcat -> 你能为 Apache 的代理添加 AJP 支持吗

c# - 以精益方式编写微服务(Windows 服务)部署脚本

java - 根据本地项目构建 Maven JAR

git - 如何使用 Ansible 查看最近的 git 标签?

JavaFX:控制台登录 TextArea + 多线程和任务

java - 是否有映射库可以启动检查正确的 bean 映射?