2016-08-05 34 views
0

我在Eclipse Neon中有一个Java EE项目,包含Java 1.8,JSF 2.2,JPA 2.1,部署在WildFly 10.0上。我使用的安全注解如下:带有@RolesAllowed的Java @Statless EJB能否从没有安全注解的类继承方法?

@Stateless 
@RolesAllowed("SysAdmin") 
public class EJBImpl extends POJOSuperClass implements EJBInterface { 
    /* ... */ 
} 

的事情是:POJOSuperClass不使用安全注解:

public abstract class POJOSuperClass { 
    public void someMethod() { 
     /* ... */ 
    } 

    /* ... */ 
} 

当JSF的bean调用的EJBImpl实例的继承someMethod(),我得到一个例外,即使登录身份有角色SysAdmin用户:

ERROR ... EJB Invocation failed on component EJBImpl for method public abstract void POJOSuperClass.someMethod(): javax.ejb.EJBAccessException: WFLYEJB0364: Invocation on method: public abstract void POJOSuperClass.someMethod() of bean: EJBImpl is not allowed 

如果我添加@PermitAll注释POJOSuperClass,它的工作原理是我想要的(如果没有例外,如果以管理员身份登录,则不会例外),但是我想保留POJOSuperClass,这是我在不同项目中重复使用的类,没有这些注释(如果我'如果我使用超类的注解,我不得不在其子类中使用它,但是我不想在其他不使用JAAS的项目中使用它)。

我该如何做到这一点?

+0

会发生什么事,如果你删除'@RolesAllowed(翻转的瞬间访问“SysAdmin”)',并将它放在'SysAdmin'访问的方法上? – ujulu

+0

问题是'EJBImpl'继承了'POJOSuperClass'中'SysAdmin'访问的方法,我不想在超类中有任何注释... –

回答

1

指的​​

基本上类级别的注解仅适用于由类定义的方法,而不是由父类中定义的方法。术语“类的所有适用的商业方法”只是意味着是在类本身声明的方法,而不是任何超

你必须明确地委派的所有方法,即你不叫任何继承方法POJOSuperClassEJBImpl直接,而是使用EJBImpl作为“入口点”门面和POJOSuperClass作为一种“静态工具类”。

另一种可能性是颠倒的安全机制,即缺少方法许可人会否认,在这样能够延长你的jboss-ejb3.xml类似

<?xml version="1.1" encoding="UTF-8"?> 
<jboss:ejb-jar xmlns:jboss="http://www.jboss.com/xml/ns/javaee" 
       xmlns="http://java.sun.com/xml/ns/javaee" 
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
       xsi:schemaLocation="http://www.jboss.com/xml/ns/javaee http://www.jboss.org/j2ee/schema/jboss-ejb3-2_0.xsd http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/ejb-jar_3_1.xsd" 
       version="3.1" 
       xmlns:s="urn:security:1.1" 
       impl-version="2.0"> 

    <assembly-descriptor> 
     <s:security> 
      <ejb-name>*</ejb-name> 
      <s:missing-method-permissions-deny-access>false</s:missing-method-permissions-deny-access> 
     </s:security> 
    </assembly-descriptor> 
</jboss:ejb-jar> 
相关问题