// 通过ObjectStore获取所有的StorageArea对象,CEUtil是我封装的一个获取ObjectStore 的工具类
ObjectStore os = CEUtil.getStore();
StorageAreaSet areaSet = os.get_StorageAreas();
执行以上代码,ObjectStore 获取成功,获取StorageArea时出现如下错误:
Exception in thread "main" com.filenet.api.exception.EngineRuntimeException: FNRCS0005E: SECURITY_INVALID_CREDENTIALS: Access to the Content Engine was not allowed because the Content Engine API library or the Web Service Interface (WSI) Listener could not find the required security context information. Expected credentials were not found in the security context.
at com.filenet.apiimpl.wsi.ClientOperation.getCredential(ClientOperation.java:361)
at com.filenet.apiimpl.wsi.ClientOperation.getSoapEnvelopeSecurity(ClientOperation.java:294)
at com.filenet.apiimpl.wsi.ServiceSessionNst.bStartXmlDocument(ServiceSessionNst.java:847)
at com.filenet.apiimpl.wsi.ServiceSessionNst.cReqRespPath(ServiceSessionNst.java:155)
at com.filenet.apiimpl.wsi.ServiceSessionNst.getObjects(ServiceSessionNst.java:104)
at com.filenet.apiimpl.util.SessionHandle.getObjects(SessionHandle.java:381)
at com.filenet.apiimpl.core.Session.callGetObjects(Session.java:122)
at com.filenet.apiimpl.core.Session.executeGetObject(Session.java:327)
at com.filenet.apiimpl.core.Session.getProperty(Session.java:450)
at com.filenet.apiimpl.property.PropertyImpl.fetchValue(PropertyImpl.java:355)
at com.filenet.apiimpl.property.PropertyImpl.getObjectValue(PropertyImpl.java:295)
at com.filenet.apiimpl.property.PropertyImpl.getObjectValue(PropertyImpl.java:276)
at com.filenet.apiimpl.property.PropertyImpl.getIndependentObjectSetValue(PropertyImpl.java:589)
at com.filenet.apiimpl.property.PropertiesImpl.getIndependentObjectSetValue(PropertiesImpl.java:1191)
at com.filenet.apiimpl.core.ObjectStoreImpl.get_StorageAreas(ObjectStoreImpl.java:621)
错误原因:
我虽然正确的或得到了ObjectStore,但是当我获得到ObjectStore的同时,执行了如下代码:
UserContext uc = UserContext.get();
。。。。
uc.popSubject(); // 提前结束了认证。
解决方案:
对ObjectSotre操作完成后,再结束认证。