У меня активно-активное развертывание WSO2 API Manager 2.5.0, также с WSO2 AM Analytics и WSO2 Identity Server в качестве диспетчера ключей (все в высокой доступности).
Я включил монетизацию после Документация , развертывание apim-billing-engine-1.3.0.war в / хранилище / развертывание / сервер / webapps / , развертывание subs-workflow-1.3.0.jar в / хранилище / component / lib / и установка APIM_Billing_2.2.0.car в WSO2 AM Analytics.
Я отключаю одинузел для проверки другого узла.Все как и ожидалось, но у меня проблема с биллингом.Вариант использования:
TID: [-1234] [] [2018-11-27 14: 41: 54,357] ОШИБКА {org.apache.catalina.core.StandardWrapperValve} - Servlet.service () для сервлета [Spring MVC Dispatcher Servlet] в контексте с путем [/apim-billing-engine-1.3.0] выдало исключение [Ошибка обработки запроса;Вложенное исключение - org.springframework.webflow.execution.ActionExecutionException: исключение, вызванное выполнением]]] в состоянии 'signUp' потока 'main' - атрибуты выполнения действия были 'map [[empty]]'] с первопричиной {org.apache.catalina.core.StandardWrapperValve} sun.security.provider.certpath.SunCertPathBuilderException: не удалось найти действительный путь сертификации для запрошенной цели в sun.security.provider.certpath.SunCertPathBuilder.build (SunCertPathBuilder.java:141) в sun.security.provider.certpath.SunCertPathBuilder.ilertBjilder.12erBjjava.security.cert.CertPathBuilder.build (CertPathBuilder.java:280) по адресу sun.security.validator.PKIXValidator.doBuild (PKIXValidator.java:392) по адресу sun.security.validator.PKIXValidator.engineValidate (PKVValidator.engineValidate)на солнце.Validator.validate (Validator.java:260) в sun.security.ssl.X509TrustManagerImpl.validate (X509TrustManagerImpl.java:324) в sun.security.ssl.X509TrustManagerImpl.checkTrusted (X509Trustssava.ImIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII.X509TrustManagerImpl.checkServerTrusted (X509TrustManagerImpl.java:124) при sun.security.ssl.ClientHandshaker.serverCertificate (ClientHandshaker.java:1596) при sun.security.ssl.ClientHandshaker.processMessage (ClientHandshaker.java:216) в sun.security.ssl.Handshaker.processLoop (Handshaker.java:1052) в sun.security.ssl.Handshaker.process_record (Handshaker.java:987) в sun.security.ssl.SSLSocketImpl.readRecord (SSLSocketImpl.java:1072) в sun.security.ssl.SSLSocketImpl.performInitialHandshake (SSLSocketImpl.java:1385) в sun.security.ssl.SSLSocketImpl.startHandshake (SSLSocketImpl.java:1413) в sun.security.ssl.SSLSocketImpl13.jl.apache.http.conn.ssl.SSLConnectionSocketFactory.createLayeredSocket (SSLConnectionSocketFactory.java:290) в org.apache.http.conn.ssl.SSLConnectionSocketFactory.connectSocket (SSLConnectionSocketFactory.java:259) в org.apache.http.impl.conn.HttpClientConnectionOperator.con..Ont.Ont.jpg.impl.conn.PoolingHttpClientConnectionManager.connect (PoolingHttpClientConnectionManager.java:319) по адресу org.apache.http.impl.execchain.MainClientExec.establishRoute (MainClientExec.java:36imp.ech.chtc.h)(MainClientExec.java:219) вorg.apache.http.impl.execchain.ProtocolExec.execute (ProtocolExec.java:195) в org.apache.http.impl.execchain.RetryExec.execute (RetryExec.java:86) в org.apache.http.impl.execchain.RedirectExec.execute (RedirectExec.java:108) в org.apache.http.impl.client.InternalHttpClient.doExecute (InternalHttpClient.java:184) в org.apache.http.impl.client.CloseableExpteJava: 82) в org.apache.http.impl.client.CloseableHttpClient.execute (CloseableHttpClient.java:106) в org.wso2.apim.billing.services.impl.WorkflowClientImpl.sendPOSTMessage (WorkflowCligI10).wso2.apim.billing..reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43) в java.lang.reflect.Method.invoke (Method.java:498) в org.springframework.expression.spel.support.ReflectiveMethodExecutor.execute (ReflectiveMethodExecutor.java:69) в org.springframework.expression.spel.ast.MethodReference.getValueInternal (MethodReference.java:109) в org.spel.pressionCompoundExpression.getValueInternal (CompoundExpression.java:57) в org.springframework.expression.spel.ast.SpelNodeImpl.getTypedValue (SpelNodeImpl.java:102) в org.springframework.expression.spel.standava.Expression.Exp.97) в org.springframework.binding.expression.spel.SpringELExpression.getValue (SpringELExpression.java:84) в org.springframework.webflow.action.EvaluateAction.doExecute (EvaluateAction.java:75) в org.springframeaction.we.AbstractAction.execute (AbstractAction.java:188) в org.springframework.webflow.execution.AnnotatedAction.execute (AnnotatedAction.java:145) в org.springframework.webflow.execution.ActionExecutor.execute51: действие Execorg.springframework.webflow.engine.support.AcionTransitionCriteria.test (ActionTransitionCriteria.java:82) в org.springframework.webflow.engine.support.TransitionCriteriaChain.test (TransitionCriteriaChain.java:71) в org.springframework.webflow.engine.Transition.jgine.Transition5.jExecute.can Executeв org.springframework.webflow.engine.Transition.execute (Transition.java:211) в org.springframework.webflow.engine.impl.FlowExecutionImpl.execute (FlowExecutionImpl.java:393) в org.springframeenen.web.RequestControlContextImpl.execute (RequestControlContextImpl.java:214) в org.springframework.webflow.engine.TransitionableState.handleEvent (TransitionableState.java:119) в org.springframework.webflow.javaEventorg.springframework.webflow.engine.impl.FlowExecutionImpl.handleEvent (FlowExecutionImpl.java:388) в org.springframework.webflow.engine.impl.RequestControlContextImpl.handleEvent (RequestControlConjava.Imp.Imp2)ViewState.handleEvent (ViewState.java: 232) в org.springframework.webflow.engine.ViewState.resume (ViewState.java:196) в org.springframework.webflow.engine.Flow.resume (Flow.java:545) в org.springframework.webflow.engine.impl.FlowExecutionImpl.resume (FlowExecutionImpl.java:258) в org.springframework.webflow.executor.FlowExecutorImpl.resumeExecution (FlowExecutorImpl.java:169) в org.springframework.webflow.mava.handler.Herf: 183) по адресу org.springframework.faces.webflow.JsfFlowHandlerAdapter.handle (JsfFlowHandlerAdapter.java:48) по адресу org.springframework.web.servlet.DispatcherServlet.doDispatch (DispatcherServlet.jserv.spr.weg.prg.DispatcherServlet.doService (DispatcherServlet.java:852) в org.springframework.web.servlet.FrameworkServlet.processRequest (FrameworkServlet.java:882) вorg.springframework.web.servlet.FrameworkServlet.doPost (FrameworkServlet.java:789) в javax.servlet.http.HttpServlet.service (HttpServlet.java:650) в javax.servlet.http.Httpervlet731) в org.apache.catalina.core.ApplicationFilterChain.internalDoFilter (ApplicationFilterChain.java:303) в org.apache.catalina.core.ApplicationFilterChain.doFilter (ApplicationFilterChain.java:208) в org.ser.server.bat.WsFilter.doFilter (WsFilter.java:52) в org.apache.catalina.core.ApplicationFilterChain.internalDoFilter (ApplicationFilterChain.java:241) в org.apache.catalina.core.ApplicationFilterChain.jF: (org.springframework.security.web.FilterChainProxy $ VirtualFilterChain.doFilter (FilterChainProxy.java:330) в org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke (FilterSecurityInsec.Rec.web.access.intercept.FilterSecurityInterceptor.doFilter (FilterSecurityInterceptor.java:84) в org.springframework.security.web.FilterChainProxy $ VirtualFilterChain.doFilter (FilterChainProxy.java:342) в org.springframework.security.web.access.ExceptionTranslationFilter.jl.springframework.security.web.$ VirtualFilterChain.doFilter (FilterChainProxy.java:342) по адресу org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter (AnonymousAuthenticationFilter.java:113) по адресу org.springframework.secilhaj.Filter.Filter.Filter.Filter.Filter.Filter.Fid: 342) в org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter (SecurityContextHolderAwareRequestFilter.java:54) в org.springframework.security.web.FilterChainProxy $ VirtualFilterChain.doFilter (FilterChainProxy.java:342) в org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter (RequestCacheAwareFilter.java:45) в org.springfilter.FhaFFJava: 342) в org.springframework.security.web.authentication.www.BasicAuthenticationFilter.doFilter (BasicAuthenticationFilter.java:150) в org.springframework.security.web.FilterChainProxy $ VirtualFilterChain.haj.jj: org.hagфайл.logout.LogoutFilter.doFilter (LogoutFilter.java:105) в org.springframework.security.web.FilterChainProxy $ VirtualFilterChain.doFilter (FilterChainProxy.java:342) в org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter (SecurityContextPersistenceFilter.java:87) в org.springframework.security.web.FilterChainProxy $ VirtualFilterChain.doFilterInternal (FilterChainProxy.java:192) по адресу org.springframework.security.web.FilterChainProxy.doFilter (FilterChainProxy.java:160) по адресу org.springframework.web.filter.DelegatingFilterProxy.invoing.web.filter.: 208) вorg.springframework.web.filter.CharacterEncodingFilter.ApplicationFilterChain.java:241) в org.apache.catalina.core.ApplicationFilterChain.doFilter (ApplicationFilterChain.java:208) в org.apache.catalina.core.StandardWrapperValve.invoke (StandardWrapperValache.cat) org..core.StandardContextValve.invoke (StandardContextValve.java:110) при org.apache.catalina.authenticator.AuthenticatorBase.invoke (AuthenticatorBase.java:607) в org.apache.catalina.core.StandardHostValve.invoke (StandardHostValve.java:169) в org.apache.catalina.valves.ErrorReportValve.invoke (ErrorReportValve.java:103) в org.wso2.carbon.identity.context.rewrite.valve.TenantContextRewriteValve.invoke (TenantContextRewriteValve.gava: at80)carbon.identity.authz.valve.AuthorizationValve.invoke (AuthorizationValve.java:91) в org.wso2.carbon.identity.auth.valve.AuthenticationValve.invoke (AuthenticationValve.java:60) в org.wso2.carbon.tomcat.ext.valves.CompositeValve.continueInvocation (CompositeValve.java: 99) в org.wso2.carbon.tomcat.ext.valves.CarbonTomcatValve $ 1.invoke (CarbonTomcatValve.java:47) в org.wso2.carbon.webapp.mgt.TenantLazyLoaderValve.invoke (TenantLazyLava):org.wso2.carbon.org.wso2.carbon.tomcat.ext.valves.CompositeValve.invoke (CompositeValve.java:62) в org.wso2.carbon.tomcat.ext.valves.CarbonStuckThreadDetectionValve.invoke (CarbonStuckThreadDetectionVapve.catalina.valves.AccessLogValve.invoke (AccessLogValve.java:962) в org.wso2.carbon.tomcat.ext.valves.CarbonContextCreatorValve.invoke (CarbonContextCreatorValve.java:57) в org.apache.catalina.core.StandardEngineValve.invoke (StandardEngineValve.java:116) в org.apache.catalina.connector.CoyoteAdapter.service (CoyoteAdapter.java:445) в org.apache.coyote.orttphttp.process (AbstractHttp11Processor.java:1115) в org.apache.coyote.AbstractProtocol $ AbstractConnectionHandler.process (AbstractProtocol.java:637) в org.apache.tomcat.util.net.NioEndpoint $ SocketProcessor.doRun (NioEndpoint.java) в org.apache.tomcat.util.net.NioEndpoint $ SocketProcessor.run (NioEndpoint.java:1734) в java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1149) в java.util.concolWorker.run (ThreadPoolExecutor.java:624) в org.apache.tomcat.util.threads.TaskThread $ WrappingRunnable.run (TaskThread.java:61) в java.lang.Thread.run (Thread.java:748)
Я знаю, что это проблема с сертификатом, но я не могу найти точную точку.
Я проверил, что механизм биллинга работает нормально, файл jks (datasource.propertiФайл es имеет: jksPath = / хранилище / развертывание / сервер / webapps / apim-billing-engine-1.3.0 / WEB-INF / classes / wso2-jks / wso2carbon.jks ).
Я использую сертификат по умолчанию в wso2store.И я проверил, что он находится в:
- Личное хранилище WSO2 API Manager:
/repository/resources/security/wso2carbon.jks - Хранилище доверия клиента WSO2 API Manager:/repository/resources/security/client-truststore.jks
- Магазин биллинговых машин: /repository/deployment/server/webapps/apim-billing-engine-1.3.0/WEB-INF/classes/wso2-jks/wso2carbon.jks
- WSO2 AM Analytics частное хранилище: /repository/resources/security/wso2carbon.jks
- WSO2 AM Analytics хранилище доверия клиентов: / repository / resources / security / client-truststore.jks
- WSO2 IS как частный магазин KM: /repository/resources/security/wso2carbon.jks
- WSO2 - это хранилище доверенных клиентов KM: /repository/resources/security/client-truststore.jks
Я добавил публичный сертификат WSO2 в хранилище сертификатов Java после этой записи, с тем же результатом.
Некоторые страницы ( this и this ) говорят, что похожая ошибка появляется, когда продукт WSO2 не может подключиться к бэкэнд-API,потому что проблема с сертификатом.Я думаю, что это не может быть моей проблемой, потому что в моем случае мой WSO2 Api Manager не выдает ошибку, пытаясь подключиться к бэкэнд-API, но пытается подключиться к биллинговому движку (который использует сертификат wso2carbon, так же, как WSO2 Api Manager)
Этот пост имеет ту же проблему (но он не оставляет ошибку журнала)