2

EJB タイマーは常にUNAUTHENTICATEDユーザーと共に実行されます。入れてみました@RunAsがうまくいきませんでした。リフレクションで値を変更しようとしましたが、うまくいきませんでした。これからリモート EJB を呼び出す必要があり、権限を持つユーザーが必要です。

@Resource
private SessionContext context;

@Schedule(second= "*/5", minute = "*", hour = "*", persistent = false)
public void executa(){

    Principal callerPrincipal = context.getCallerPrincipal();
    final Field field = getField(callerPrincipal.getClass(), "name");
    field.setAccessible(true);

    try {
        field.set(callerPrincipal,"MYUSER");
    } catch (IllegalAccessException e) {
        e.printStackTrace();
    }

    this.iMyRemoteEjb.doWork()
 }
4

0 に答える 0