我正在使用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