当我尝试调用本地EJB时,我得到EJBAccessException在Wildfly 8.2上运行我迁移的Glassfish Web应用程序。我发现JBoss文档除了海峡前进之外都需要帮助,即请不要链接到JBoss文档。
我的EJB上没有@DeclareRoles
符号表示现在它很简单。我尝试使用和不使用安全领域other
添加jboss-web和jboss-ejb3来将bean绑定到领域。但我仍然得到同样的例外。
我已经阅读过这些教程,但无法让它发挥作用。我使用MongoDB和JDBC安全领域设置对我帮助不大。但是现在我绕过了用户角色身份验证。
Migrating a Java EE App from GlassFish to WildFly
Invoke EJB from WildFly safely 和其他人
如何在我的Web应用程序中在Wildfly上运行本地EJB?
@Stateless
public class MyBean {
public String sayHello() {
...
的JBoss-web.xml中
<jboss-web>
<security-domain>other</security-domain>
</jboss-web>
的JBoss-ejb3.xml
<assembly-descriptor>
<s:security>
<!-- Even wildcard * is supported -->
<ejb-name>*</ejb-name>
<!-- Name of the security domain which is configured in the EJB3 subsystem -->
<s:security-domain>other</s:security-domain>
</s:security>
</assembly-descriptor>
答案 0 :(得分:3)
在WildFly 8中,在安全bean中没有明确安全配置的此类方法将被视为与@DenyAll
配置的方法类似。
可以通过每个bean级别或每个部署级别的jboss-ejb3.xml
部署描述符来控制此行为,如下所示:
<?xml version="1.0" encoding="UTF-8"?>
<jboss:jboss
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:jboss="http://www.jboss.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:s="urn:security:1.1"
version="3.1" impl-version="2.0">
<assembly-descriptor>
<s:security>
<!-- Even wildcard * is supported where * is equivalent to all EJBs in the deployment -->
<ejb-name>FooBean</ejb-name>
<s:missing-method-permissions-deny-access>false</s:missing-method-permissions-deny-access>
</s:security>
</assembly-descriptor>
</jboss:jboss>
将missing-method-permissions-deny-access
设置为false
可以为所有用户访问此类方法,即行为将切换为与@PermitAll
类似。