【发布时间】:2017-11-09 06:42:44
【问题描述】:
所以,我已将 WSO2 BPS 3.6.0 配置为支持 SSL 和自定义主机名,即 mydomain.domain.com:9445 等,我正在尝试实现 API 订阅工作流 遵循this 文档。
现在我已经执行了以下步骤:
- 将 wso2 bps 的偏移量设置为 2,使用端口:9445 运行良好
-
在 API-M_HOME/business-processes/epr 中的 SubscriptionService.epr 和 SubscriptionCallbackService.epr 中编辑了 wsa:Address 标记 因为 bps 服务器有一个自定义的主机名而不是 localhost(不确定执行此步骤是否正确)
将 epr 文件夹从 API-M_HOME/business-processes/epr 复制粘贴到 BPS_HOME/repository/conf/epr
相应地添加了所需的BPEL 包和人工任务
- 将 b4p-cordination-config.xml 的 TaskCoordinationEnabled 标记设置为位于 BPS_Home\repository\conf 中的 true
考虑其他必需的配置:
在 API Manager 结束时:
- site.json 文件位于 APIM_Home\repository\deployment\server\jaggeryapps\admin\site\conf
{ "theme": { "base": "wso2", "subtheme": "modern" }, "context": "/admin", "request_url": "READ_FROM_REQUEST", "tasksPerPage": 10, "allowedPermission": "/permission/admin/manage/apim_admin", "workflows": { "workFlowServerURL": "https://mydomain.domain.com:9445/services/", }, "ssoConfiguration": { "enabled": "false", "issuer": "API_WORKFLOW_ADMIN", "identityProviderURL": "https://localhost:9443/samlsso", "keyStorePassword": "", "identityAlias": "", "keyStoreName": "", "verifyAssertionValidityPeriod": "true", "audienceRestrictionsEnabled": "true", "responseSigningEnabled": "true", "assertionSigningEnabled": "true", "assertionEncryptionEnabled": "false", "idpInit" : "false", "idpInitSSOURL" : "https://localhost:9443/samlsso?spEntityID=API_WORKFLOW_ADMIN", "externalLogoutPage" : "https://localhost:9443/samlsso?slo=true" }, "reverseProxy": { "enabled": false, // values true , false , "auto" - will look for X-Forwarded-* headers "host": "sample.proxydomain.com", // If reverse proxy do not have a domain name use IP "context": "" //"regContext":"" // Use only if different path is used for registry } }
在 BPS 结束时:
问题:现在,每当用户导航到 APIM 商店并订阅任何 API 时,APIM 管理控制台都会列出订阅请求。当我从提供的 ddl 中选择 APPROVE 并单击 COMPLETE 按钮时,记录就会消失。但是,这是我在 WSO2 的 CMD 窗口中看到的错误:
APIM 的 cmd 窗口
[2017-11-09 00:13:17,022] 信息 - TimeoutHandler 此引擎将 在 GLOBAL_TIMEOUT 之后过期所有回调:120 秒,无论 超时操作,在指定或可选超时后
[2017-11-09 00:13:17,164] 错误 - TargetHandler I/O 错误:主机名 主机验证失败:localhost javax.net.ssl.SSLException: 主机名验证失败:localhost 在 org.apache.synapse.transport.http.conn.ClientSSLSetupHandler.verify(C lentSSLSetupHandler.java:171) 在 org.apache.http.nio.reactor.ssl.SSLIOSession.doHandshake(SSLIOSession .java:308) 在 org.apache.http.nio.reactor.ssl.SSLIOSession.isAppInputReady(SSLIOSes sion.java:410) 在 org.apache.http.impl.nio.reactor.AbstractIODispatch.inputReady(摘要 ctIODispatch.java:119) 在 org.apache.http.impl.nio.reactor.BaseIOReactor.可读(BaseIOReactor .java:159) 在 org.apache.http.impl.nio.reactor.AbstractIOReactor.processEvent(Abstr actIOReactor.java:338) 在 org.apache.http.impl.nio.reactor.AbstractIOReactor.processEvents(Abst ractIOReactor.java:316) 在 org.apache.http.impl.nio.reactor.AbstractIOReactor.execute(AbstractIO 反应堆.java:277) 在 org.apache.http.impl.nio.reactor.BaseIOReactor.execute(BaseIOReactor. 爪哇:105) 在 org.apache.http.impl.nio.reactor.AbstractMultiworkerIOReactor$Worker。 运行(AbstractMultiworkerIOReactor.java:586) 在 java.lang.Thread.run(Thread.java:745)
[2017-11-09 00:13:17,188] 警告 - EndpointContext 端点:AnonymousEndpoint w 第 i 个地址 https://localhost:9443/store/site/blocks/workflow/workflow-listener/ ajax/workflow-listener.jag 将被标记为 SUSPENDED 因为它失败了
[2017-11-09 00:13:17,193] 警告 - EndpointContext 暂停端点 : 带有地址的匿名端点 https://localhost:9443/store/site/blocks/workflow/workflo w-listener/ajax/workflow-listener.jag - 当前挂起持续时间是: 30000ms - 下一次重试时间:Thu Nov 09 00:13:47 EST 2017
[2017-11-0900:13:17,201] 信息 - LogMediator 状态 = 执行默认“故障” 序列,ERROR_CODE = 101500,ERROR_MESSAGE = 发件人错误
[2017-11-09 00:14:17,238] INFO - SourceHandler Writer null 时 调用 informWriterError [2017-11-09 00:14:17,238] WARN - 读取请求 t 后 SourceHandler 连接超时: http-incoming-1 套接字超时:60000 远程地址:/10.10.30.130 :49249
[2017-11-09 00:14:24,671] 错误 - AxisEngine 端点 未找到操作的参考 (EPR) 是 /services/WorkflowCallbackService 和 WSA Action = null。如果这 EPR 以前可以访问,请联系服务器管理员 托。 org.apache.axis2.AxisFault:端点引用 (EPR) 未找到操作是 /services/WorkflowCallbackService 和 WSA 行动=空。如果以前可以访问此 EPR,请联系 服务器管理员。 在 org.apache.axis2.engine.DispatchPhase.checkPostConditions(DispatchPha se.java:102) 在 org.apache.axis2.engine.Phase.invoke(Phase.java:329) 在 org.apache.axis2.engine.AxisEngine.invoke(AxisEngine.java:261) 在 org.apache.axis2.engine.AxisEngine.receive(AxisEngine.java:167) 在 org.apache.synapse.transport.passthru.ServerWorker.processNonEntityEn 关闭RESTHandler(ServerWorker.java:325) 在 org.apache.synapse.transport.passthru.ServerWorker.run(ServerWorker.j 艾娃:158) 在 org.apache.axis2.transport.base.threads.NativeWorkerPool$1.run(Native WorkerPool.java:172) 在 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor. 爪哇:1142) 在 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor .java:617) 在 java.lang.Thread.run(Thread.java:745) [2017-11-09 00:14:24,673] 错误 - ServerWorker 错误处理 GET 请求: /services/WorkflowCallbackService org.apache.axis2.AxisFault: 未找到操作的端点参考 (EPR) 是 /services/WorkflowCallbackService 和 WSA Action = null。如果这 EPR 以前可以访问,请联系服务器 行政人员。 在 org.apache.axis2.engine.DispatchPhase.checkPostConditions(DispatchPha se.java:102) 在 org.apache.axis2.engine.Phase.invoke(Phase.java:329) 在 org.apache.axis2.engine.AxisEngine.invoke(AxisEngine.java:261) 在 org.apache.axis2.engine.AxisEngine.receive(AxisEngine.java:167) 在 org.apache.synapse.transport.passthru.ServerWorker.processNonEntityEn 关闭RESTHandler(ServerWorker.java:325) 在 org.apache.synapse.transport.passthru.ServerWorker.run(ServerWorker.j 艾娃:158) 在 org.apache.axis2.transport.base.threads.NativeWorkerPool$1.run(Native WorkerPool.java:172) 在 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor. 爪哇:1142) 在 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor .java:617) 在 java.lang.Thread.run(Thread.java:745)
BPS 的 cmd 窗口:
[2017-11-09 00:14:16,738] 错误 {org.wso2.carbon.bpel.core.ode.integration.Partn erService} - 错误 向 Axis2 发送消息以获取 ODE mex {PartnerRoleMex#hqejbhc nphrcr2a32g83oh [PID {http://workflow.subscription.apimgt.carbon.wso2.org}订阅 iptionApprovalWorkFlowProcess-1] 调用 org.apache.ode.bpel.epr.WSAEndpoint@705 fc38f.resumeEvent(...) 状态 REQUEST} org.apache.axis2.AxisFault:读取超时 在 org.apache.axis2.AxisFault.makeFault(AxisFault.java:430) 在 org.apache.axis2.transport.http.HTTPSender.sendViaPost(HTTPSender.jav 答:199) 在 org.apache.axis2.transport.http.HTTPSender.send(HTTPSender.java:77) 在 org.apache.axis2.transport.http.CommonsHTTPTransportSender.writeMessa geWithCommons(CommonsHTTPTransportSender.java:451) 在 org.apache.axis2.transport.http.CommonsHTTPTransportSender.invoke(Com monsHTTPTransportSender.java:278) 在 org.apache.axis2.engine.AxisEngine.send(AxisEngine.java:442) 在 org.apache.axis2.description.OutOnlyAxisOperationClient.executeImpl(O utOnlyAxisOperation.java:297) 在 org.apache.axis2.client.OperationClient.execute(OperationClient.java: 149) 在 org.wso2.carbon.bpel.core.ode.integration.utils.AxisServiceUtils.invo keService(AxisServiceUtils.java:323) 在 org.wso2.carbon.bpel.core.ode.integration.PartnerService.invoke(Partn erService.java:333) 在 org.wso2.carbon.bpel.core.ode.integration.BPELMessageExchangeContextI mpl.invokePartner(BPELMessageExchangeContextImpl.java:43) 在 org.apache.ode.bpel.engine.BpelRuntimeContextImpl.invoke(BpelRuntimeC ontextImpl.java:897) 在 org.apache.ode.bpel.runtime.INVOKE.run(INVOKE.java:130) 在 sun.reflect.GeneratedMethodAccessor54.invoke(未知来源) 在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces sorImpl.java:43) 在 java.lang.reflect.Method.invoke(Method.java:483) 在 org.apache.ode.jacob.vpu.JacobVPU$JacobThreadImpl.run(JacobVPU.java:4 51) 在 org.apache.ode.jacob.vpu.JacobVPU.execute(JacobVPU.java:139) 在 org.apache.ode.bpel.engine.BpelRuntimeContextImpl.execute(BpelRuntime ContextImpl.java:1002) 在 org.apache.ode.bpel.engine.PartnerLinkMyRoleImpl.invokeInstance(Partn erLinkMyRoleImpl.java:250) 在 org.apache.ode.bpel.engine.BpelProcess$1.invoke(BpelProcess.java:288)
at org.apache.ode.bpel.engine.BpelProcess.invokeProcess(BpelProcess.java:224) 在 org.apache.ode.bpel.engine.BpelProcess.invokeProcess(BpelProcess.java :279) 在 org.apache.ode.bpel.engine.BpelProcess.handleJobDetails(BpelProcess.j 艾娃:434) 在 org.apache.ode.bpel.engine.BpelEngineImpl.onScheduledJob(BpelEngineIm pl.java:558) 在 org.apache.ode.bpel.engine.BpelServerImpl.onScheduledJob(BpelServerIm pl.java:467) 在 org.apache.ode.scheduler.simple.SimpleScheduler$RunJob$1.call(SimpleS 调度程序.java:633) 在 org.apache.ode.scheduler.simple.SimpleScheduler$RunJob$1.call(SimpleS 调度程序.java:627) 在 org.apache.ode.scheduler.simple.SimpleScheduler.execTransaction(Simpl eScheduler.java:298) 在 org.apache.ode.scheduler.simple.SimpleScheduler.execTransaction(Simpl eScheduler.java:253) 在 org.apache.ode.scheduler.simple.SimpleScheduler$RunJob.call(SimpleSch eduler.java:627) 在 org.apache.ode.scheduler.simple.SimpleScheduler$RunJob.call(SimpleSch eduler.java:611) 在 java.util.concurrent.FutureTask.run(FutureTask.java:266) 在 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor. 爪哇:1142) 在 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor .java:617) 在 java.lang.Thread.run(Thread.java:745) 引起:java.net.SocketTimeoutException:读取超时 在 java.net.SocketInputStream.socketRead0(本机方法) 在 java.net.SocketInputStream.read(SocketInputStream.java:150) 在 java.net.SocketInputStream.read(SocketInputStream.java:121) 在 sun.security.ssl.InputRecord.readFully(InputRecord.java:465) 在 sun.security.ssl.InputRecord.read(InputRecord.java:503) 在 sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:961) 在 sun.security.ssl.SSLSocketImpl.readDataRecord(SSLSocketImpl.java:918)
at sun.security.ssl.AppInputStream.read(AppInputStream.java:105) at java.io.BufferedInputStream.fill(BufferedInputStream.java:246) at java.io.BufferedInputStream.read(BufferedInputStream.java:265) at org.apache.commons.httpclient.HttpParser.readRawLine(HttpParser.java:78) 在 org.apache.commons.httpclient.HttpParser.readLine(HttpParser.java:106 ) 在 org.apache.commons.httpclient.HttpConnection.readLine(HttpConnection. 爪哇:1116) 在 org.apache.commons.httpclient.MultiThreadedHttpConnectionManager$Http ConnectionAdapter.readLine(MultiThreadedHttpConnectionManager.java:1413) 在 org.apache.commons.httpclient.HttpMethodBase.readStatusLine(HttpMetho dBase.java:1973) 在 org.apache.commons.httpclient.HttpMethodBase.readResponse(HttpMethodB ase.java:1735) 在 org.apache.commons.httpclient.HttpMethodBase.execute(HttpMethodBase.j 艾娃:1098) 在 org.apache.commons.httpclient.HttpMethodDirector.executeWithRetry(Htt pMethodDirector.java:398) 在 org.apache.commons.httpclient.HttpMethodDirector.executeMethod(HttpMe thodDirector.java:171) 在 org.apache.commons.httpclient.HttpClient.executeMethod(HttpClient.jav 一个:397) 在 org.apache.axis2.transport.http.AbstractHTTPSender.executeMethod(Abst ractHTTPSender.java:659) 在 org.apache.axis2.transport.http.HTTPSender.sendViaPost(HTTPSender.jav 答:195) ... 34 更多
这可能是什么问题?任何的想法?让我知道。谢谢
请注意,API STATE CHANGE 的 bps 工作流程在相同的配置下也能正常工作
【问题讨论】: