为了让 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 忽略了新初始上下文中的用户集,并尝试使用来自浏览器的用户集。碰巧我可能需要在没有浏览器会话的后台工作人员中进行查询搜索(显然)。
有人能帮忙吗?