2

我正在使用 Oracle WebCenter Portal 和 SOA/BPEL。我已经按照此处的指南创建了一个自定义工作列表应用程序 (portlet):

甲骨文文档

它显示为 portlet,因此部署很好。当我访问这个 portlet 页面时,它给了我以下错误。

ORABPEL-30503:验证服务中的无效令牌错误。验证服务中的无效令牌错误。在 getTokenType 中收到无效令牌。验证是否传递了正确的令牌

这是我的代码片段,以及下面的完整堆栈跟踪。

Map<IWorkflowServiceClientConstants.CONNECTION_PROPERTY, String> properties = new HashMap<IWorkflowServiceClientConstants.CONNECTION_PROPERTY, String>();
properties.put(IWorkflowServiceClientConstants.CONNECTION_PROPERTY.CLIENT_TYPE, WorkflowServiceClientFactory.SOAP_CLIENT);
properties.put(IWorkflowServiceClientConstants.CONNECTION_PROPERTY.SOAP_END_POINT_ROOT, "http://<hostname>:<port>");
IWorkflowServiceClient  wfSvcClient = WorkflowServiceClientFactory.getWorkflowServiceClient(WorkflowServiceClientFactory.SOAP_CLIENT,properties, null);
ITaskQueryService querySvc = wfSvcClient.getTaskQueryService();
IWorkflowContext wfCtx = querySvc.authenticate(userName,password.toCharArray(),null);

我认为代码是正确的,因为如果我使用不正确的凭据,它会给出“验证用户错误”。但是当我使用正确的凭据时,它会给出:

SEVERE: <.> getTokenType: invalid token: a0a4daf4-33ad-4bdf-91d0-c7e22e70efc9;;W3JtvUSwovCa7zQLbYhVjAB8yAfYcPrl6iECyPso9bjnlUp6qzy50EApOPEQmV/3nKWySh+41yNhD4Rl8Ati72glbm1DL6wm/6Kc0nwkXCZaBFE13wFClSdg4m1a4CBqeAEC6TWNdV45mB9popu3phvDTl8LKbfq3mBv/MHTAWSmY/XnqSF+nVtH/Hq3wTOLMQ73aonamjhuKGDzVfFk6pogBKXBOqPZnbhTjfLeu/oGeBjLkwWdIC0F0wrohjgL SEVERE: <.> Invalid Token Error in Verification Service. Invalid Token Error in Verification Service. Received invalid token in getTokenType. Verify that correct token is passed.

ORABPEL-30503

Invalid Token Error in Verification Service. Invalid Token Error in Verification Service. Received invalid token in getTokenType. Verify that correct token is passed.

    at oracle.bpel.services.workflow.verification.impl.Token.getTokenType(Token.java:545)   at oracle.bpel.services.workflow.verification.impl.Token.<init>(Token.java:188)     at oracle.bpel.services.workflow.verification.impl.WorkflowContext.getWorkflowContextFromJAXBObject(WorkflowContext.java:795)   at oracle.bpel.services.workflow.verification.impl.WorkflowContext.getWorkflowContextFromElement(WorkflowContext.java:746)  at oracle.bpel.services.workflow.query.client.AbstractDOMTaskQueryServiceClient.authenticate(AbstractDOMTaskQueryServiceClient.java:186)    at oracle.bpel.services.workflow.query.client.AbstractDOMTaskQueryServiceClient.authenticate(AbstractDOMTaskQueryServiceClient.java:205)    at com.kpit.cams.UAPWorklistMain.main(UAPWorklistMain.java:329)
4

1 回答 1

1

下面来自 Oracle 支持文档的解决方案为我解决了这个问题。总之,这是导致问题的服务器和 jdev 之间的 jar 不匹配。

==================================================== ========================

您无法成功获取 BPM 上下文。检索上下文时不会出现异常,但在尝试使用它时会看到异常:BPM-70684

异常 exception.70684.type:错误 exception.70684.severity:2 exception.70684.name:无效的身份验证上下文。exception.70684.description:无效的身份验证上下文已通过。exception.70684.fix:确保通过了有效的身份验证上下文。

已知以下异常与同一问题相关: 原因:java.util.HashMap 中 oracle.bpel.services.workflow.verification.impl.WorkflowContext.hashCode(WorkflowContext.java:583) 中的 java.lang.NullPointerException .get(HashMap.java:300) 在 oracle.bpel.services.workflow.common.ThreadLocalCache.isContextValidated(ThreadLocalCache.java:146) 在 oracle.bpel.services.workflow.verification.impl.VerificationService.validateNotNullWorkflowContext(VerificationService.java :1824) 在 oracle.bpel.services.workflow.verification.impl.VerificationService.validateContext(VerificationService.java:1806)

使用 adminContext [user=null][sessionKey=null][token=null][requester=null][objectId=null] <<.> 验证服务无法解析用户身份时代表用户 weblogic 进行身份验证时出错。在身份存储库中找不到用户 null。请求中的工作流上下文令牌不能为空。

ORABPEL-30511

验证服务无法解析用户身份。在身份存储库中找不到用户 null。请求中的工作流上下文令牌不能为空。

在 oracle.bpel.services.workflow.verification.impl.LocalCacheManager.lookupUser(LocalCacheManager.java:600)

引起:ORABPEL-10501

非法论据。非法论据。这是因为作为参数传递了一个意外的值(可能为 null)。检查错误堆栈并修复错误原因。如果错误无法修复,请联系 Oracle 支持服务。

在 oracle.tip.pc.services.identity.jps.AuthorizationServiceImpl.lookupUser(AuthorizationServiceImpl.java:236) 在 oracle.tip.pc.services.identity.jps.IdentityServiceImpl.lookupUser(IdentityServiceImpl.java:183) 在 oracle.bpel .services.workflow.verification.impl.LocalCacheManager.lookupUser(LocalCacheManager.java:596)

我们在 ADF 应用程序中嵌入了 BPM 任务流列表。它在下面给出以下错误] <.> Invalid Token Error in Verification Service.[[ Invalid Token Error in Verification Service。在 null 中收到无效令牌。验证是否传递了正确的令牌。ORABPEL-30503

此外,如果您从上下文中记录用户名,您会发现它为空。原因

客户端应用程序和服务器上的 bpm-services.jar 可能不匹配。在客户端和服务器上使用的 SOA/BPM 相关 jar 必须相同,否则可能会出现意外问题。

解决方案

从服务器复制 bpm-services.jar 将客户端应用程序上的 bpm-services.jar 替换为来自服务器的 bpm-services.jar 确保在应用任何补丁后,在客户端应用程序中替换服务器上的 jar。这也适用于在 JDeveloper 中使用 jar,由于未在开发和服务器机器上应用补丁,这些 jar 可能会变得不同步。您可能需要将位于 JDeveloper/soa/modules/oracle.soa.workflow_11.1.1/bpm-services.jar 的 bpm-services.jar 替换为位于此处的 [soa_install_dir]/soa/modules/oracle.soa.workflow_11 .1.1/bpm-services.jar。

于 2016-04-06T13:19:05.433 回答