从JBoss AS 7.1.1 Final迁移到JBoss Wildfly 9.0.1的应用程序启动时的EJB异常

时间:2015-07-27 17:07:44

标签: ejb jboss7.x wildfly

我从我正在迁移到JBoss Wildfly的应用程序中收到以下错误,而且我已经用Google搜索了无法找到此特定错误。

有没有人见过这个?

原因和/或解决方案是什么?

我们在Wildfly中看到了这个错误。我们没有看到AS中的错误。

编辑: 启动时出现此错误。使用@Startup批注调用该方法。

12:43:34,442 ERROR [org.jboss.as.ejb3.invocation] (schema_update_thread) WFLYEJB0034: EJB Invocation failed on component DBSchemaUpdateBean for method public void com.mycompany.myappserver.ejb.DBSchemaUpdateBean.processUpdates(com.mycompany.myappserver.config.sql.DBType) throws java.lang.Exception: javax.ejb.EJBAccessException: WFLYEJB0364: Invocation on method: public void com.mycompany.myappserver.ejb.DBSchema
UpdateBean.processUpdates(com.mycompany.myappserver.config.sql.DBType) throws java.lang.Exception of bean: DBSchemaUpdateBean is not allowed
        at org.jboss.as.ejb3.security.AuthorizationInterceptor.processInvocation(AuthorizationInterceptor.java:134)
        at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:340)
        at org.jboss.as.ejb3.security.SecurityContextInterceptor.processInvocation(SecurityContextInterceptor.java:100)
        at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:340)
        at org.jboss.as.ejb3.component.interceptors.ShutDownInterceptorFactory$1.processInvocation(ShutDownInterceptorFactory.java:64)
        at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:340)
        at org.jboss.as.ejb3.component.interceptors.LoggingInterceptor.processInvocation(LoggingInterceptor.java:66)
        at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:340)
        at org.jboss.as.ee.component.NamespaceContextInterceptor.processInvocation(NamespaceContextInterceptor.java:50)
        at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:340)
        at org.jboss.as.ejb3.component.interceptors.AdditionalSetupInterceptor.processInvocation(AdditionalSetupInterceptor.java:54)
        at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:340)
        at org.jboss.invocation.ContextClassLoaderInterceptor.processInvocation(ContextClassLoaderInterceptor.java:64)
        at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:340)
        at org.jboss.invocation.InterceptorContext.run(InterceptorContext.java:356)
        at org.wildfly.security.manager.WildFlySecurityManager.doChecked(WildFlySecurityManager.java:634)
        at org.jboss.invocation.AccessCheckingInterceptor.processInvocation(AccessCheckingInterceptor.java:61)
        at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:340)
        at org.jboss.invocation.InterceptorContext.run(InterceptorContext.java:356)
        at org.jboss.invocation.PrivilegedWithCombinerInterceptor.processInvocation(PrivilegedWithCombinerInterceptor.java:80)
        at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:340)
        at org.jboss.invocation.ChainedInterceptor.processInvocation(ChainedInterceptor.java:61)
        at org.jboss.as.ee.component.ViewService$View.invoke(ViewService.java:195)
        at org.jboss.as.ee.component.ViewDescription$1.processInvocation(ViewDescription.java:185)
        at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:340)
        at org.jboss.invocation.ChainedInterceptor.processInvocation(ChainedInterceptor.java:61)
        at org.jboss.as.ee.component.ProxyInvocationHandler.invoke(ProxyInvocationHandler.java:73)
        at com.mycompany.myappserver.ejb.DBSchemaUpdateBean$$$view31.processUpdates(Unknown Source)
        at com.mycompany.myappserver.ejb.SharedDataBean$1.run(SharedDataBean.java:89)
        at java.lang.Thread.run(Thread.java:744)

2 个答案:

答案 0 :(得分:3)

通过修改独立的xml解决了这个问题。此行已修改为如下所示。我不确定这代表了多大的安全风险,或者是否有更好的方法来解决这个问题。在我看来,这是关闭身份验证(即未经验证的请求将被尊重)。

<subsystem xmlns="urn:jboss:domain:ejb3:3.0">
    ...
    <default-missing-method-permissions-deny-access value="false"/>
</subsystem>

答案 1 :(得分:1)

关键部分是:

  

WFLYEJB0364:调用方法:bean的[blah]:不允许使用DBSchemaUpdateBean

JBAS014502似乎也是一个密切相关的错误(例如here),但更经常被提及。

看起来DBSchemaUpdateBean方法processUpdates使用@RolesAllowed注释,并且由没有允许角色的客户端调用。如果在启动时发生这种情况,那表明这可能是初始化期间的系统调用?我建议检查在初始化期间对此方法的任何调用是否具有正确的角色,并且这些角色配置正确。