在QuartzMDB中使用quartz-ra.rar將應用程序遷移到Jboss AS 6.1中的EJB定時器後,我遇到了上述異常。 (作爲將應用程序升級到wildfly 8.1的一部分)javax.ejb.EJBAccessException:調用者未經授權
在使用以下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()
呼叫。
感謝您的信息,但我想這對**作爲JBoss 6.1不是7.2 ** – 2015-01-22 03:49:55
@KosalaAlmeda是的,你說得對,是這個問題的解釋的錯誤。再次看到我的答案。 – 2015-01-22 16:08:51