0

Quartz-ra.rar を使用して QuartzMDB から Jboss AS 6.1 の EJB タイマーにアプリケーションを移行した後、上記の例外に遭遇しました。(アプリケーションを wildfly 8.1 にアップグレードする一環として)

以下のejbを使用するジョブで例外が発生します。

@Stateless
@TransactionAttribute(TransactionAttributeType.REQUIRED)
@RolesAllowed({"admin"})
public class PlatformPluginBean implements PlatformPluginRemote {

    // some code here

    public Collection<PlatformPlugin> getPlugins() {
        return new ArrayList<PlatformPlugin>(schemaToPlugin.values());
    }

}

以下は、正常に機能した移行前のジョブです。

@MessageDriven(activationConfig = {
    @ActivationConfigProperty(propertyName = "cronTrigger", propertyValue = "0 0 * * * ?"),
    @ActivationConfigProperty(propertyName = "jobName", propertyValue = "PruneJob")})
@ResourceAdapter("quartz-ra.rar")
@RunAs("admin")
public class PruneJob implements Job {

    @EJB
    private PlatformPluginRemote platformPluginRemote;

    @Override
    public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException {

        for (PlatformPlugin platformPlugin: platformPluginRemote.getPlugins()) {
            // some stuff here
        }
    }
}

以下はejb自動タイマーに変更後の作業です。

@Stateless
@RunAs("admin")
public class PruneJob {

    @EJB
    private PlatformPluginRemote platformPluginRemote;

    @Schedule(hour="*", minute="0", persistent=false)
    public void execute() {

        for (PlatformPlugin platformPlugin: platformPluginRemote.getPlugins()) {
            // some stuff here
        }
    }
}

platformPluginRemote.getPlugins()呼び出し時に例外が発生しました。

4

2 に答える 2

0

@RunAs("admin")何らかの理由で注釈が機能していないようです (jboss バグ?)

ejb の呼び出しの前に次のコードを追加することで、同じことができます。

SecurityContextAssociation.getSecurityContext().setOutgoingRunAs(new RunAsIdentity("admin", "admin"));
于 2015-01-23T05:31:22.340 に答える