Чтобы получить исходный контекст Weblogic для запроса базы данных задач, я делаю следующее:
Properties h = new Properties();
h.put(Context.SECURITY_PRINCIPAL, "weblogic");
h.put(Context.PROVIDER_URL, "t3://localhost:17101");
h.put(Context.SECURITY_CREDENTIALS, "weblogic");
h.put(Context.SECURITY_AUTHENTICATION, "simple");
WLInitialContextFactory test = new WLInitialContextFactory();
test.getInitialContext(h);
Context ctx = null;
ctx = getInitialContext();
WorklistContext wliContext = WorklistContextFactory.getRemoteWorklistContext(ctx, "MyTaskApplication");
Затем я получаю интерфейс TaskQuery со следующим кодом:
WorklistTaskQuery taskQuery = wliContext.getInterfaceForTaskQuery();
и чтобы получить задачи, которые я делаю:
taskQuery.getTasks(query);
, где запрос является объектом com.bea.wli.worklist.api.TaskQuery.
Обратите внимание, что этот код выполняется внутри домена, в котором выполняются задачи.
К сожалению, я получаю следующую ошибку при вызове методов getTasks:
java.lang.SecurityException: [WLI-Worklist:493103]Access denied to resource /taskplans
/Manual:1.0. Applicable policy: Query Caller: principals=[] Method: com.bea.wli.worklist.security.WorklistSecurityManager.assertTaskAccessAllowed
Кажется, что Weblogic игнорирует пользовательский набор в новом начальном контексте и пытается использовать тот, который поступает из браузера. Случилось так, что мне может потребоваться выполнить поиск запросов в фоновых рабочих, которые не имеют сеанса браузера (очевидно).
Может кто-нибудь помочь с этим?