1

因此,我已将 WSO2 BPS 3.6.0 配置为支持 SSL 和自定义主机名,即mydomain.domain.com:9445等,并且我正在尝试按照文档实施API 订阅工作流。

现在我已经执行了以下步骤:

  • 将 wso2 bps 的偏移量设置为 2 并且在端口:9445 上运行良好
  • 编辑了位于 API-M_HOME/business-processes/epr 中的SubscriptionService.eprSubscriptionCallbackService.epr中的wsa:Address标签,因为 bps 服务器具有自定义主机名而不是 localhost(不确定执行此步骤是否正确)

    SubscriptionService.epr 在此处输入图像描述 SubscriptionCallBackService.epr 在此处输入图像描述

  • 将 epr 文件夹从 API-M_HOME/business-processes/epr 复制粘贴到 BPS_HOME/repository/conf/epr

  • 相应地添加了所需的BPEL 包人工任务

  • 从 APIM 导航到 carbon 控制台并编辑了workflow-extensions.xml,如下所示 在此处输入图像描述

  • b4p-cordination-config.xml的TaskCoordinationEnabled标记设置为true,位于 BPS_Home\repository\conf

考虑其他必需的配置:

在 API 管理器端

  • 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
  }
}
  • api-manager.xml 中的工作流配置 在此处输入图像描述

在 BPS 端

  • 碳.xml 在此处输入图像描述

问题:现在,每当用户导航到 APIM 商店并订阅任何 API 时,APIM 管理控制台都会列出订阅请求。当我从提供的 ddl 中选择 APPROVE 并单击 COMPLETE 按钮时,记录就会消失。但是,这是我在 WSO2 的 CMD 窗口中看到的错误:

APIM 的 cmd 窗口

[2017-11-09 00:13:17,022] INFO - TimeoutHandler 此引擎将在 GLOBAL_TIMEOUT:120 秒后过期所有回调,无论超时操作如何,在指定或可选超时之后

reactor.AbstractIOReactor.processEvents(Abst ractIOReactor.java:316) 在 org.apache.http.impl.nio.reactor.AbstractIOReactor.execute(AbstractIO Reactor.java:277) 在 org.apache.http.impl.nio.reactor。 BaseIOReactor.execute(BaseIOReactor.java:105) 在 org.apache.http.impl.nio.reactor.AbstractMultiworkerIOReactor$Worker。在 java.lang.Thread.run(Thread.java:745) 处运行(AbstractMultiworkerIOReactor.java:586)

[2017-11-09 00:13:17,188] 警告 - EndpointContext 端点:地址为 https://localhost:9443/store/site/blocks/workflow/workflow-listener/ ajax/workflow-listener.jag的匿名端点标记为 SUSPENDED 失败

[2017-11-09 00:13:17,193] WARN - EndpointContext 暂停端点:匿名端点地址为 https://localhost:9443/store/site/blocks/workflow/workflo w-listener/ajax/workflow-listener.jag - 当前暂停持续时间为:30000 毫秒 - 下次重试后: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 在调用 informWriterError 时为 null [2017-11-09 00:14:17,238] WARN - SourceHandler Connection time out after request t is read: http-incoming-1套接字超时:60000 远程地址:/10.10.30.130:49249

[2017-11-09 00:14:24,671] 错误 - AxisEngine 找不到操作的端点引用 (EPR) 是 /services/WorkflowCallbackService 并且 WSA 操作 = null。如果此 EPR 以前可以访问,请联系服务器管理员。org.apache.axis2.AxisFault:找不到操作的端点引用 (EPR) 是 /services/WorkflowCallbackService 并且 WSA Action = null。如果此 EPR 以前可以访问,请联系服务器管理员。在 org.apache.axis2.engine.DispatchPhase.checkPostConditions(DispatchPhase.java:102) 在 org.apache.axis2.engine.Phase.invoke(Phase.java:329) 在 org.apache.axis2.engine.AxisEngine。在 org.apache.axis2.engine.AxisEngine.receive(AxisEngine.java:167) 在 org.apache.synapse.transport.passthru 调用(AxisEngine.java:261)。org.apache.synapse.transport.passthru.ServerWorker.run(ServerWorker.j ava:158) at org.apache.axis2.transport.base.threads.NativeWorkerPool$1.run 的 ServerWorker.processNonEntityEn 关闭RESTHandler(ServerWorker.java:325) (Native WorkerPool.java:172) 在 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java: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(DispatchPhase.java:102) 在 org.apache.axis2.engine.Phase.invoke(Phase.java:329) 在 org.apache.axis2.engine.AxisEngine。调用(AxisEngine.java:261)在 org.apache.axis2.engine.AxisEngine.receive(AxisEngine.java:167)在 org.apache.synapse.transport.passthru.ServerWorker.processNonEntityEnclosureRESTHandler(ServerWorker.java:325)在org.apache.synapse.transport.passthru.ServerWorker.run(ServerWorker.j ava:158) at org.apache.axis2.transport.base.threads.NativeWorkerPool$1.run(Native WorkerPool.java:172) at java.util .concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 在 java.util.concurrent.ThreadPoolExecutor$Worker。

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}Subscr iptionApprovalWorkFlowProcess-1] 调用 org.apache.ode.bpel.epr.WSAEndpoint@705 fc38f.resumeEvent(...) 状态请求} org.apache.axis2.AxisFault:在 org.apache.axis2.AxisFault 处读取超时.makeFault(AxisFault.java:430) 在 org.apache.axis2.transport.http.HTTPSender.sendViaPost(HTTPSender.jav a: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) at 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(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces sorImpl.java:43) at java.lang.reflect.Method。在 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)invokeInstance(Partn erLinkMyRoleImpl.java:250) at org.apache.ode.bpel.engine.BpelProcess$1.invoke(BpelProcess.java:288)invokeInstance(Partn erLinkMyRoleImpl.java:250) at 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 ava:434) 在 org.apache .ode.bpel.engine.BpelEngineImpl.onScheduledJob(BpelEngineIm pl.java:558) at org.apache.ode.bpel.engine.BpelServerImpl.onScheduledJob(BpelServerIm pl.java:467) at org.apache.ode.scheduler.simple .SimpleScheduler$RunJob$1.call(SimpleS cheduler.java:633) 在 org.apache.ode.scheduler.simple.SimpleScheduler$RunJob$1.call(SimpleS cheduler.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) at org.apache.ode.scheduler.simple.SimpleScheduler$RunJob.call(SimpleSch eduler.java:611) at java.util.concurrent.FutureTask.run(FutureTask. java:266) 在 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 在 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor .java:617) 在 java.lang.Thread.run(Thread .java:745) 引起:java.net.SocketTimeoutException:在 java.net.SocketInputStream.read(SocketInputStream.java:150) 在 java.net.SocketInputStream 的 java.net.SocketInputStream.socketRead0(Native Method) 读取超时sun.security.ssl.InputRecord.readFully(InputRecord.java:465) 的 sun.security.ssl.InputRecord 的 .read(SocketInputStream.java:121)。在 sun.security.ssl.ssl.ssl.ssl.ssl.readDataRecord(SSLSocketImpl.java:918) 处读取 (InputRecord.java:503) 在 sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:961)

    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.java:1116) 在 org.apache.commons.httpclient.MultiThreadedHttpConnectionManager $Http ConnectionAdapter.readLine(MultiThreadedHttpConnectionManager.java:1413) at org.apache.commons.httpclient.HttpMethodBase.readStatusLine(HttpMetho dBase.java:1973) at org.apache.commons.httpclient.HttpMethodBase.readResponse(HttpMethodBase.java:第 1735 章.HttpMethodDirector.executeMethod(HttpMethodDirector.java:171)在 org.apache.commons.httpclient.HttpClient.executeMethod(HttpClient.jav a:397) 在 org.apache.axis2.transport.http.AbstractHTTPSender.executeMethod(Abst ractHTTPSender.java:659) 在 org.apache.axis2 .transport.http.HTTPSender.sendViaPost(HTTPSender.jav a:195) ... 还有 34 个

这里可能是什么问题?任何想法?让我知道。谢谢

请注意,API STATE CHANGE 的 bps 工作流程在相同的配置下工作得很好

4

1 回答 1

1

请注意,您正在使用带有特定域名的 HTTPS 调用

主机名验证失败:在 org.apache.http.nio.reactor.ssl.SSLIOSession.doHandshake(SSLIOSession.爪哇:308)

提供的证书是CN=localhost,所以确实主机验证失败

你能做些什么

  • 最简单的方法是在安全网络上(在防火墙、vpn、..)上切换到http
  • 更新 BPS 和 APIM 的 SSL 证书以匹配它们的主机名,并且它们必须相互信任证书(或证书颁发者)
  • 在axis2.xml中禁用SSL主机名验证(我不推荐它,对DEV有好处,对PROD来说非常糟糕)-设置<parameter name="HostnameVerifier">AllowAll</parameter>
于 2017-11-09T09:35:10.340 回答