在 Wildfly 上调用本地 EJB 时出现 EJBAccessException
EJBAccessException when invoke local EJB on Wildfly
当我尝试调用本地 EJB 时,我得到 EJBAccessException 运行我在 Wildfly 8.2 上迁移的 Glassfish Web 应用程序。我找到了 JBoss 文档,而不是 strait forward 并且需要帮助,即请不要 link 到 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>
在 WildFly 8 中,在安全 bean 中没有明确安全配置的此类方法将被视为类似于具有 @DenyAll
配置的方法。
可以通过 jboss-ejb3.xml
部署描述符在每个 bean 级别或每个部署级别控制此行为,如下所示:
<?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
。
当我尝试调用本地 EJB 时,我得到 EJBAccessException 运行我在 Wildfly 8.2 上迁移的 Glassfish Web 应用程序。我找到了 JBoss 文档,而不是 strait forward 并且需要帮助,即请不要 link 到 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>
在 WildFly 8 中,在安全 bean 中没有明确安全配置的此类方法将被视为类似于具有 @DenyAll
配置的方法。
可以通过 jboss-ejb3.xml
部署描述符在每个 bean 级别或每个部署级别控制此行为,如下所示:
<?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
。