Apiman不会恢复网关

你能否帮我解决以下问题。 我使用Apiman版本1.2.1

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

我通过kubernetes公开了这个版本,因为我在同一个容器中使用了postgres。 一旦我第一次创build它,在apiman之后,我添加了组织/ API / ….和所有必要的人员。

我按下button来发布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,“message”:“API未find。”,“trace”:“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 \ tat io.apiman.gateway.engine.impl.SecureRegistryWrapper.getApi(SecureRegistryWrapper.java:111)\ n \ tat io.apiman.gateway.engine .impl.ApiRequestExecutorImpl.execute(ApiRequestExecutorImpl.java:270)\ 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 \た t javax.servlet.http.HttpServlet.service(HttpServlet.java:687)\ n \ tat javax.servlet.http.HttpServlet.service(HttpServlet.java:790)\ n \ tat io.undertow.servlet.handlers.ServletHandler .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 \ n \ tat io.undertow.server.handlers.PredicateHandler.handl eRequest(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.security.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.und ertow.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 \ tat 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“}

我可以看到,通过apipipe理器中的调用度量,我所有的调用都可以达到apiman-gateway,但是我得到了500个响应代码。

如果有人遇到这样的错误,那么我已经用下面的步骤解决了,首先我们只需要使用新版本的APIMAN,已经实现的修复列表。 而且apiman网关不能没有弹性search来恢复自身。 因此应该提供elasticsearchconfiguration。

Interesting Posts