JavaEE:使用Glassfish / Payara的多模块Maven项目:EJB模块

时间:2017-03-14 11:13:14

标签: maven java-ee glassfish ejb ejb-jar.xml

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

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

ejb-jar.xml与单个大型Web应用程序(工作正常)中的ejb-jar.xml完全相同,除了EJB的限定名称(打包)的更改之外,已经在新@Resource SessionContext ctx

Principal正在运行:它可以看到ejb-jar.xml等。

它只是不再检测ctx.isCallerInRole(String)中的任何角色,因此@DeclareRoles总是失败。

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

EJB模块中的.../src/main/resources/META-INF/ejb-jar.xml 位于:

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

Maven将其构建为:

ejb-jar.xml

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

部署到与单个大型Web应用程序相同的Glassfish或Payara服务器(工作正常)。

在部署期间,我没有收到任何相关的任何相关警告警告。

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

编辑2017-03-15:我发现(经过一段时间的睡眠)如果我将.../src/main/webapp/WEB-INF/从EJB模块复制(或移动)到Web模块的<security-role>,它就会按预期工作。但这不是一个解决方案,因为我希望不同的Web模块能够使用相同的EJB模块,这也意味着<security-role-ref>和任何<role-link>class MainClass { public static void main(String args[]) { String str = "reverse me! also lets check"; System.out.println("The initial string is --->> " + str); for (int i = 0; i < str.length(); i++) { //Keep iterating each letter from one end to another. str = str.substring(1, str.length() - i) + str.substring(0, 1) + str.substring(str.length() - i, str.length()); } System.out.println("The reversed string is ---->> " + str); for (int i = 0, j = 0; i < str.length(); i++) { if(str.charAt(i) == ' ' || i == (str.length() - 1)) { //Just to know the start of each word int k = j; //the below if condition is for considering the last word. if(i == (str.length() - 1)) i++; while(j < i) { j++; str = str.substring(0, k) //(i-j) is the length of each word + str.substring(k + 1, (k + 1) + i - j) + str.substring(k, k + 1) + str.substring((k + 1) + i - j, i) + str.substring(i); if(j == i) { //Extra j++ for considering the empty white space j++; } } } } System.out.println("The reversed string but not the reversed words is ---->> " + str); } } 都在一个Web模块而不是EJB模块。我也将EJB模块用于REST服务(独立于Web角色上下文),并且需要相同的角色概念(在EJB模块中定义)。

0 个答案:

没有答案