请你帮我解决以下问题。 我使用Apiman版本1.2.1
FROM jboss/wildfly:9.0.2.Final
ENV APIMAN_VERSION 1.2.1.Final
我通过kubernetes公开这个版本,作为一个持久的卷我在同一个容器中使用postgres。一旦我在第一次创建它,在apiman之后我添加了Organization / API / ....以及所有必要的工作人员。
我按下按钮发布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 not not 发现""跟踪":" io.apiman.gateway.engine.beans.exceptions.InvalidApiException: 找不到API。\ n \ t \ t \ t \ t \ t \ io.apiman.gateway.engine.impl.ApiRequestExecutorImpl $ 3.handle(ApiRequestExecutorImpl.java:278)\ n \达 io.apiman.gateway.engine.impl.ApiRequestExecutorImpl $ 3.handle(ApiRequestExecutorImpl.java:271)\ n \达 io.apiman.gateway.engine.impl.SecureRegistryWrapper $ 1.handle(SecureRegistryWrapper.java:122)\ n \达 io.apiman.gateway.engine.impl.SecureRegistryWrapper $ 1.handle(SecureRegistryWrapper.java:111)\ n \达 io.apiman.gateway.engine.es.CachingESRegistry.getApi(CachingESRegistry.java:116)\ n \达 io.apiman.gateway.engine.impl.SecureRegistryWrapper.getApi(SecureRegistryWrapper.java:111)\ n \达 io.apiman.gateway.engine.impl.ApiRequestExecutorImpl.execute(ApiRequestExecutorImpl.java:270)\ n \达 io.apiman.gateway.platforms.servlet.GatewayServlet.doAction(GatewayServlet.java:232)\ n \达 io.apiman.gateway.platforms.servlet.GatewayServlet.doGet(GatewayServlet.java:77)\ n \达 javax.servlet.http.HttpServlet.service(HttpServlet.java:687)\ n \达 javax.servlet.http.HttpServlet.service(HttpServlet.java:790)\ n \达 io.undertow.servlet.handlers.ServletHandler.handleRequest(ServletHandler.java:86)\ n \达 io.undertow.servlet.handlers.security.ServletSecurityRoleHandler.handleRequest(ServletSecurityRoleHandler.java:62)\ n \达 io.undertow.servlet.handlers.ServletDispatchingHandler.handleRequest(ServletDispatchingHandler.java:36)\ n \达 org.wildfly.extension.undertow.security.SecurityContextAssociationHandler.handleRequest(SecurityContextAssociationHandler.java:78)\ n \达 io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)\ n \达 io.undertow.servlet.handlers.security.SSLInformationAssociationHandler.handleRequest(SSLInformationAssociationHandler.java:131)\ n \达 io.undertow.servlet.handlers.security.ServletAuthenticationCallHandler.handleRequest(ServletAuthenticationCallHandler.java:57)\ n \达 io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)\ n \达 io.undertow.security.handlers.AbstractConfidentialityHandler.handleRequest(AbstractConfidentialityHandler.java:46)\ n \达 io.undertow.servlet.handlers.security.ServletConfidentialityConstraintHandler.handleRequest(ServletConfidentialityConstraintHandler.java:64)\ n \达 io.undertow.security.handlers.AuthenticationMechanismsHandler.handleRequest(AuthenticationMechanismsHandler.java:58)\ n \达 io.undertow.servlet.handlers.security.CachedAuthenticatedSessionHandler.handleRequest(CachedAuthenticatedSessionHandler.java:72)\ n \达 io.undertow.security.handlers.NotificationReceiverHandler.handleRequest(NotificationReceiverHandler.java:50)\ n \达 io.undertow.security.handlers.SecurityInitialHandler.handleRequest(SecurityInitialHandler.java:76)\ n \达 io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)\ n \达 org.wildfly.extension.undertow.security.jacc.JACCContextIdHandler.handleRequest(JACCContextIdHandler.java:61)\ n \达 io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)\ n \达 io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)\ n \达 io.undertow.servlet.handlers.ServletInitialHandler.handleFirstRequest(ServletInitialHandler.java:282)\ n \达 io.undertow.servlet.handlers.ServletInitialHandler.dispatchRequest(ServletInitialHandler.java:261)\ n \达 io.undertow.servlet.handlers.ServletInitialHandler.access $ 000(ServletInitialHandler.java:80)\ n \达 io.undertow.servlet.handlers.ServletInitialHandler $ 1.handleRequest(ServletInitialHandler.java:172)\ n \达 io.undertow.server.Connectors.executeRootHandler(Connectors.java:199)\ n \达 io.undertow.server.HttpServerExchange $ 1.run(HttpServerExchange.java:774)\ n \达 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)\ n \达 java.util.concurrent.ThreadPoolExecutor中的$ Worker.run(ThreadPoolExecutor.java:617)\ n \达 java.lang.Thread.run(Thread.java:745)\ n"}
我可以看到,通过api管理器中的呼叫指标,我的所有呼叫都可以到达apiman-gateway,但我得到500个响应代码。
答案 0 :(得分:1)
如果有人会遇到这样的错误,那么,我已经通过以下步骤解决了这个问题,首先我们只需要使用新版本的APIMAN,已经实现的修复列表。而apiman-gateway也不能没有弹性搜索来恢复自身。因此应该提供elasticsearch配置。