2017-04-06 88 views
1

請幫我解決以下問題。 我用Apiman 1.2.1版Apiman不會恢復網關

FROM jboss/wildfly:9.0.2.Final 
ENV APIMAN_VERSION 1.2.1.Final 

我揭露通過kubernetes這個版本中,爲持續第一卷在同一容器中使用的Postgres。一旦我第一次創建它,在apiman之後,我添加了組織/ API/....和所有必要的工作人員。我使用kubectl port-forward pod-name 8080:8080,並可能通過瀏覽器http:localhost:8080/apiman-gateway/ORgId/bla/bla/bla/bla?givemedescriptionbyid=1檢查我的網關。

在這之後,我去控制檯並殺死apiman pod,由於pod重啓,同樣的操作kubectl port-forward new-pod-name 8080:8080,我可以看到apiman的所有數據像組織,apis和所有其他員工已經在那裏。

可是一個大問題,如果你嘗試再次撥打網關,它會告訴你:

{ 「responseCode」:500, 「消息」: 「API不 找到。」, 「跟蹤」: 「io.apiman.gateway.engine.beans.exceptions.InvalidApiException: API未找到。\ n \ tat io.apiman.gateway.engine.impl.ApiRequestExecutorImpl $ 3.handle(ApiRequestExecutorImpl.java:278)\ n \ tat io.apiman.gateway.engine.impl.ApiRequestExecutorImpl $ 3.handle(ApiRequestExecutorImpl.java:271)\ n \ tat io.apiman.gateway.engine.impl.SecureRegistryWrapper $ 1.handle(SecureRegistryWrapper.java:122)\ n \ tat io.apiman.gateway.engine.impl.SecureRegistryWrapper $ 1.handle(SecureRegistryWrapper.java:111)\ n \ tat io.apiman.gateway.engine.es.CachingESRegistry.getApi(CachingESRegistry.java:116)\ n \ (012)/image io.apiman.gateway.engine.impl.SecureRegistryWrapper.getApi(SecureRegistryWrapper.java:111)\ n \ tat io.apiman.gateway.engine.impl.ApiRequestExecutorImpl.execute(ApiRequestExecutorImpl.java:270)\ n \ (網關服務器.java:77)\ n \ tat io.apiman.gateway.platforms.servlet.GatewayServlet.doAction(GatewayServlet.java:232)\ n \ tat io.apiman.gateway.platforms.servlet.GatewayServlet.doGet(GatewayServlet.java:77)\ n \ ()javax.servlet.http.HttpServlet.service(HttpServlet.java:687)\ n \ tat javax.servlet.http.HttpServlet.service(HttpServlet.java:790)\ n \ tat io.undertow.servlet。 handlers.ServletHandle r.handleRequest(ServletHandler.java:86)\ n \ tat io.undertow.servlet.handlers.security.ServletSecurityRoleHandler.handleRequest(ServletSecurityRoleHandler.java:62)\ n \ tat io.undertow.servlet.handlers.ServletDispatchingHandler。 handleRequest(ServletDispatchingHandler.java:36)\ n \ tat org.wildfly.extension.undertow.security.SecurityContextAssociationHandler.handleRequest(SecurityContextAssociationHandler.java:78)\ n \ tat io.undertow.server.handlers.PredicateHandler.handleRequest( PredicateHandler.java:43)\n\tat io.undertow.servlet.handlers.security.SSLInformationAssociationHandler.handleRequest(SSLInformationAssociationHandler.java:131)\ n \ tat io.undertow.servlet.handlers.security.ServletAuthenticationCallHandler.handleRequest( ServletAuthenticationCallHandler.java:57)\n\tat io.u ndertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)\ n \ tat io.undertow.security.handlers.AbstractConfidentialityHandler.handleRequest(AbstractConfidentialityHandler.java:46)\ n \ tat io.undertow.servlet。 handlers.security.ServletConfidentialityConstraintHandler.handleRequest(ServletConfidentialityConstraintHandler.java:64)\ n \ tat io.undertow.security.handlers.AuthenticationMechanismsHandler.handleRequest(AuthenticationMechanismsHandler.java:58)\ n \ tat io.undertow.servlet.handlers。安全。CachedAuthenticatedSessionHandler.handleRequest(CachedAuthenticatedSessionHandler.java:72)\ n \ TAT io.undertow.security.handlers.NotificationReceiverHandler.handleRequest(NotificationReceiverHandler.java:50)\ n \ TAT io.undertow.security.handlers.SecurityInitialHandler.handleRequest( SecurityInitialHandler.java:76)\n\tat io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)\ n \ tat org.wildfly.extension.undertow.security.jacc.JACCContextIdHandler.handleRequest( JACCContextIdHandler.java:61)\n\tat io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)\ n \ tat io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java: 43)\ n \ tat io.undertow.servlet.handlers.ServletInitialHandler.handleFirstRequest( ServletInitialHandler.java:282)\n\tat io.undertow.servlet.handlers.ServletInitialHandler.dispatchRequest(ServletInitialHandler.java:261)\ n \達 io.undertow.servlet.handlers.ServletInitialHandler.access $ 000(ServletInitialHandler.java :80)\ n \ tat io.undertow.servlet.handlers.ServletInitialHandler $ 1.handleRequest(ServletInitialHandler.java:172)\ n \ tat io.undertow.server.Connectors.executeRootHandler(Connectors.java:199)\ n \ tat io.undertow.server.HttpServerExchange $ 1.run(HttpServerExchange.java:774)\ n \ tat java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)\ n \ tat java.util。 concurrent.ThreadPoolExecutor $ Worker.run(ThreadPoolExecutor.java:617)\ n \ tat java.lang.Thread.run(Thread.java:745)\ n「}

我可以看到,通過api管理器中的調用度量,我所有的調用都可以到達apiman-gateway,但是我得到500個響應代碼。

回答

1

如果有人會遇到這樣的錯誤,那麼,我已經通過以下步驟解決了它,首先我們只需要使用新版本的APIMAN,已經實現的修復列表。而且apiman網關不能沒有彈性搜索來恢復自身。因此應該提供elasticsearch配置。