从Managed Bean调用@PermitAll方法时,为什么会出现此EJBAccessException?

时间:2015-12-27 21:45:30

标签: java-ee wildfly

我正在使用JSF webapp学习JavaEE。 我有一个由Managed Bean支持的JSF视图,它使用无状态服务来处理事物。

Managed Bean:

@ManagedBean
@RequestScoped
public class TeamBean implements Serializable {

    private static final long serialVersionUID = 1L;

    @Inject
    private TeamApplication teamApplication;

    public void add(){
        teamApplication.createTeam(); // Actually I wanted to call createTeam("name")
    }
}

这是我的服务

@Stateless
public class TeamApplication {

    @PermitAll
    public boolean createTeam(String name){
        //do stuff
    }


    public void createTeam(){
        createTeam("name");
    }

}

事情是: 如果我调用createTeam(“Name”),我会得到一个EJBAccessException, 但调用createTeam(),后者又调用createTeam(“name”)。 我得到的例外:

  

bean的createTeam(java.lang.String):不允许使用TeamApplication

有没有办法从托管bean调用安全的EJB?

btw:我疯狂地使用了9

btw2:我必须停用default-missing-method-permissions-deny-access才能使用非带注释的方法

btw3:一旦我开始工作,createTeam将不会是@PermitAll。它将有@RolesAllowed(“角色”)

编辑:

查看日志,我得到:

  

DEBUG [org.jboss.security](默认任务-34)PBOX00282:失败   实例化类Database:java.lang.ClassNotFoundException:Database   来自[Module“deployment.webapp.war:main”来自Service Module Loader]

一些研究引导我独立:

<security-domain name="my-security" cache-type="no-cache">
                    <authentication>
                        <login-module **code="Database"** flag="required">

我认为我使用的例子来自wildfly 8.2,我正在使用wildfly 9.这可能会导致问题。 我将查找要使用的正确代码值。 https://docs.jboss.org/author/display/WFLY8/Security+subsystem+configuration

1 个答案:

答案 0 :(得分:0)

答案是: 我跟着this tutorial并且通过配置standalone.xml(在授权部分中)出错。我删除它并且它有效。