Payara 5.2021.7容器自动部署EJB报错但手动部署正常问题咨询
你遇到的差异和自动部署、手动部署的部署类型识别逻辑不同有关,Payara并没有强制要求所有自动部署的应用都必须包含EJB。
具体差异点
- Docker启动阶段调用的是Payara的自动部署扫描逻辑,当你放到自动部署目录的应用包后缀为
.jar时,扫描逻辑会优先按EJB JAR包的规则做校验:如果包内没有带EJB注解的类,也没有META-INF/ejb-jar.xml描述文件,就会抛出Invalid ejb jar [my application]: it contains zero ejb.的错误。 - 管理UI手动部署时,默认启用了宽松的部署类型自动检测逻辑,会扫描包内的全量配置、类注解匹配正确的应用类型(比如普通Java SE应用、MicroProfile应用、Web fragment包等),不会默认按EJB JAR的规则强制校验,因此部署可以正常完成。
可行的修复方案
- 如果你的应用是Web应用,直接打包为
.war格式再放到自动部署目录,就能直接避开EJB JAR的校验逻辑 - 如果必须使用
.jar格式部署,可以在Jar包的META-INF目录下新增空的payara-application.xml文件,明确告诉Payara这是普通应用,不需要走EJB校验 - 也可以修改Docker启动时的Payara启动参数,给自动部署逻辑指定应用类型,强制跳过EJB校验规则
内容的提问来源于stack exchange,提问作者WhatTheWhat
相关产品推荐
相关产品推荐

