0

我正在将大型 JavaEE Web 应用程序迁移到多模块 Maven 表单。

ejb-jar.xml当我运行多模块 Web 应用程序时,该 EJB 看不到为特定 EJB 声明的角色。

ejb-jar.xml与我在单个大型 Web 应用程序中使用的相同(运行良好),除了 EJB 的限定名称(包装)发生了变化,新的ejb-jar.xml.

@Resource SessionContext ctx正在工作:它可以看到Principal等。

它只是不再检测到任何角色ejb-jar.xml,所以ctx.isCallerInRole(String)总是失败。

我可以@DeclareRoles在 EJB 中使用注释并且它可以工作(但这不是一个可接受的解决方案,它只是用于诊断)。

ejb-jar.xmlEJB 模块中的位于:

.../src/main/resources/META-INF/ejb-jar.xml

Maven 将其构建为:

.../target/classes/META-INF/ejb-jar.xml

它肯定会成为 EJB 模块的最终目标 jar(我什至已经提取并检查了它)。

部署到与单个大型 Web 应用程序相同的 Glassfish 或 Payara 服务器(它运行良好)。

在部署过程中,我没有收到任何类型的相关日志警告。

感谢有关其他可能阻止系统明显捕获ejb-jar.xml多模块 Web 应用程序项目部署的想法,或有关如何进一步诊断问题的建议。



编辑 2017-03-15:我发现(经过一段时间的睡眠),如果我将ejb-jar.xmlEJB 模块复制(或移动)到.../src/main/webapp/WEB-INF/Web 模块,它会按预期工作。但这并不是一个很好的解决方案,因为我希望不同的 Web 模块能够使用相同的 EJB 模块,这也意味着<security-role>and any <security-role-ref>and<role-link>在一个 Web 模块中而不是 EJB 模块中。我还将 EJB 模块用于 REST 服务(独立于 Web 角色上下文)并且想要相同的角色概念(在 EJB 模块中如此定义)。

4

0 回答 0