GithubHelp home page GithubHelp logo

apiman / apiman-docker Goto Github PK

View Code? Open in Web Editor NEW
15.0 8.0 22.0 231 KB

Contains docker related assets for apiman.

License: Apache License 2.0

Shell 32.63% Dockerfile 43.63% Java 23.74%
apiman docker api-management

apiman-docker's Introduction

Verify Build Workflow Apiman Cypress

Apiman (Open Source API Management)

⚡️⚡️ Apiman 4 is under active development ⚡️⚡️

Apiman is a flexible and open source API Management platform.

With just a few clicks you can get Apiman running, putting a platform at your fingertips that covers the whole API Management lifecycle. Whether you want to offer existing APIs to external consumers in a secure way, or have a centralised location to discover and govern APIs, Apiman has you covered.

But that's not all. Apiman is designed to be easy to customise, and you can implement your own functionality by writing simple Java plugins.

🗞️ Apiman Newsletter

Did you know, we have an Apiman newsletter now! We'll inform you of the latest Apiman releases as soon as they happen, along with great Apiman-related content. The latest Apiman news, blogs, tutorials, software engineering topics, and more. No spam, no nonsense.

⚡️ Quick links

🐒 Monorepo

⚠️ We may move stuff around as we settle on a finalised monorepo structure post-merge.

📖 Requirements

  • Java 11+
  • To build Apiman with tests: Docker or an equivalent container engine. This is for running tests with testcontainers.
  • Naturally, if you're using an Apiman container, you'll need it for runtime too!

🏃‍♂️ Quickstart

You can look at the Apiman quickstarts on apiman.io.

Or, you can build and run our 'server-all' quickstart to try everything out immediately.

Here's what you need to do:

echo "Cloning Apiman"
git clone https://github.com/apiman/apiman.git && cd apiman

echo "Building Apiman"
./fastbuild.sh

echo "Starting a Keycloak container with a demo Apiman realm"
cd tools/server-all/target/docker
docker compose up -d

echo "Starting Apiman WildFly Quickstart" && cd ../
./wildfly-dev-server/bin/standalone.sh

Once Apiman has started up, and if all went well, you can point your browser to the API Manager via http://localhost:8080/apimanui/ and log in (either register a new user or log in as the admin):

  • Username: admin
  • Password: admin123!

You can log into the Keycloak admin console via http://localhost:8085/admin (same credentials as above).

This quickstart seeds a bunch of content into apiman. This is not strictly necessary, but it does populate the API Manager with some data so that it doesn't feel so lonely the first time you log in.

There's also a handy echo service available at http://localhost:8080/services/echo - it's useful for demos. You're welcome!

⚠️ Please don't use Apiman's default usernames, passwords, keys, certificates, etc., in production.

⚒️ Build Apiman

Fast and easy

The easiest way to build quickly (without tests) is to run our fastbuild script. It's in the root of the project. If you have mvnd the build will be faster.

git clone https://github.com/apiman/apiman.git && cd apiman
./fastbuild.sh 

I want to run the tests

First, build the parent pom (it's in /parent), then you can build the main project from the top level.

echo "Building Apiman Parent..."
cd parent
../mvnw clean install

cd ..
echo "Building the main Apiman project..."
./mvnw clean install

👷 Contribute to Apiman

Apiman is open source, and we welcome anybody who wants to participate and contribute!

If you want to fix a bug or make any changes, please log an issue in GitHub Issues describing the bug or new feature.

You can also join our discussion forums if you want help, or to discuss a more complex issue.

There are lots of different workflows for contributing. Feel free to use one that suits you. We're endeavouring to pull together a more detailed contribution document that we'll upload soon 🙌.

🔎 Developer Portal

Apiman also comes with a skinnable developer portal which you can let external developers sign up to your APIs in a streamlined API marketplace experience.

🙋 Looking for support?

Check out Apiman's support page where you can find Apiman experts to help you.

apiman-docker's People

Contributors

ericwittmann avatar georgevicarey avatar jcechace avatar jorgemoralespou avatar martinpurvis avatar msavy avatar pcornish avatar renovate-bot avatar renovate[bot] avatar venkatesh2090 avatar volkflo avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

apiman-docker's Issues

Incorrect Dockerfile for wildfly-manager ?

Hello!

When I simply run docker run -it -p 8443:8443 apiman/wildfly-manager, I have errors related to the datasource:

09:57:26,880 ERROR [stderr] (Thread-125) Caused by: javax.naming.NameNotFoundException: datasources/apiman-manager -- service jboss.naming.context.java.jboss.datasources.apiman-manager

I think it could be related to the fact that the apiman-ds.xml file is removed in the Dockerfile:
rm -rf $JBOSS_HOME/standalone/deployments/apiman-ds.xml && \

Is that a mistake ? If yes, I can create a PR to fix this.
Thanks!

Failed to publish API.

I use the docker (Docker version 17.03.0-ce, build 60ccb22) APIMan on wildfly 10 1.3.5.Final and Vert.x Gateway 1.3.5.Final Vert.x 3.4.2. I installed vertx gateway into wildfy api manager, but when I am trying to publish api I'm getting error:

io.apiman.manager.api.rest.contract.exceptions.ActionException: Failed to publish API.
	at io.apiman.manager.api.rest.impl.util.ExceptionFactory.actionException(ExceptionFactory.java:331)
	at io.apiman.manager.api.rest.impl.ActionResourceImpl.publishApi(ActionResourceImpl.java:230)
	at io.apiman.manager.api.rest.impl.ActionResourceImpl.performAction(ActionResourceImpl.java:105)
	at io.apiman.manager.api.rest.impl.ActionResourceImpl$Proxy$_$$_WeldClientProxy.performAction(Unknown Source)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at org.jboss.resteasy.core.MethodInjectorImpl.invoke(MethodInjectorImpl.java:139)
	at org.jboss.resteasy.core.ResourceMethodInvoker.invokeOnTarget(ResourceMethodInvoker.java:295)
	at org.jboss.resteasy.core.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:249)
	at org.jboss.resteasy.core.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:236)
	at org.jboss.resteasy.core.SynchronousDispatcher.invoke(SynchronousDispatcher.java:402)
	at org.jboss.resteasy.core.SynchronousDispatcher.invoke(SynchronousDispatcher.java:209)
	at org.jboss.resteasy.plugins.server.servlet.ServletContainerDispatcher.service(ServletContainerDispatcher.java:221)
	at org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher.service(HttpServletDispatcher.java:56)
	at org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher.service(HttpServletDispatcher.java:51)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:790)
	at io.undertow.servlet.handlers.ServletHandler.handleRequest(ServletHandler.java:85)
	at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:129)
	at io.apiman.common.servlet.RootResourceFilter.doFilter(RootResourceFilter.java:59)
	at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61)
	at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)
	at io.apiman.manager.api.war.TransactionWatchdogFilter.doFilter(TransactionWatchdogFilter.java:57)
	at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61)
	at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)
	at io.apiman.manager.api.security.impl.DefaultSecurityContextFilter.doFilter(DefaultSecurityContextFilter.java:56)
	at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61)
	at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)
	at io.apiman.common.servlet.DisableCachingFilter.doFilter(DisableCachingFilter.java:52)
	at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61)
	at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)
	at io.apiman.common.servlet.ApimanCorsFilter.doFilter(ApimanCorsFilter.java:71)
	at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61)
	at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)
	at io.apiman.common.servlet.LocaleFilter.doFilter(LocaleFilter.java:61)
	at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61)
	at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)
	at io.undertow.servlet.handlers.FilterHandler.handleRequest(FilterHandler.java:84)
	at io.undertow.servlet.handlers.security.ServletSecurityRoleHandler.handleRequest(ServletSecurityRoleHandler.java:62)
	at io.undertow.servlet.handlers.ServletDispatchingHandler.handleRequest(ServletDispatchingHandler.java:36)
	at org.wildfly.extension.undertow.security.SecurityContextAssociationHandler.handleRequest(SecurityContextAssociationHandler.java:78)
	at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
	at org.keycloak.adapters.undertow.UndertowAuthenticatedActionsHandler.handleRequest(UndertowAuthenticatedActionsHandler.java:66)
	at io.undertow.servlet.handlers.security.SSLInformationAssociationHandler.handleRequest(SSLInformationAssociationHandler.java:131)
	at io.undertow.servlet.handlers.security.ServletAuthenticationCallHandler.handleRequest(ServletAuthenticationCallHandler.java:57)
	at io.undertow.server.handlers.DisableCacheHandler.handleRequest(DisableCacheHandler.java:33)
	at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
	at io.undertow.security.handlers.AuthenticationConstraintHandler.handleRequest(AuthenticationConstraintHandler.java:53)
	at io.undertow.security.handlers.AbstractConfidentialityHandler.handleRequest(AbstractConfidentialityHandler.java:46)
	at io.undertow.servlet.handlers.security.ServletConfidentialityConstraintHandler.handleRequest(ServletConfidentialityConstraintHandler.java:64)
	at io.undertow.servlet.handlers.security.ServletSecurityConstraintHandler.handleRequest(ServletSecurityConstraintHandler.java:59)
	at io.undertow.security.handlers.AuthenticationMechanismsHandler.handleRequest(AuthenticationMechanismsHandler.java:60)
	at io.undertow.servlet.handlers.security.CachedAuthenticatedSessionHandler.handleRequest(CachedAuthenticatedSessionHandler.java:77)
	at io.undertow.security.handlers.NotificationReceiverHandler.handleRequest(NotificationReceiverHandler.java:50)
	at io.undertow.security.handlers.AbstractSecurityContextAssociationHandler.handleRequest(AbstractSecurityContextAssociationHandler.java:43)
	at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
	at org.wildfly.extension.undertow.security.jacc.JACCContextIdHandler.handleRequest(JACCContextIdHandler.java:61)
	at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
	at org.keycloak.adapters.undertow.ServletPreAuthActionsHandler.handleRequest(ServletPreAuthActionsHandler.java:69)
	at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
	at io.undertow.servlet.handlers.ServletInitialHandler.handleFirstRequest(ServletInitialHandler.java:292)
	at io.undertow.servlet.handlers.ServletInitialHandler.access$100(ServletInitialHandler.java:81)
	at io.undertow.servlet.handlers.ServletInitialHandler$2.call(ServletInitialHandler.java:138)
	at io.undertow.servlet.handlers.ServletInitialHandler$2.call(ServletInitialHandler.java:135)
	at io.undertow.servlet.core.ServletRequestContextThreadSetupAction$1.call(ServletRequestContextThreadSetupAction.java:48)
	at io.undertow.servlet.core.ContextClassLoaderSetupAction$1.call(ContextClassLoaderSetupAction.java:43)
	at io.undertow.servlet.api.LegacyThreadSetupActionWrapper$1.call(LegacyThreadSetupActionWrapper.java:44)
	at io.undertow.servlet.api.LegacyThreadSetupActionWrapper$1.call(LegacyThreadSetupActionWrapper.java:44)
	at io.undertow.servlet.api.LegacyThreadSetupActionWrapper$1.call(LegacyThreadSetupActionWrapper.java:44)
	at io.undertow.servlet.api.LegacyThreadSetupActionWrapper$1.call(LegacyThreadSetupActionWrapper.java:44)
	at io.undertow.servlet.api.LegacyThreadSetupActionWrapper$1.call(LegacyThreadSetupActionWrapper.java:44)
	at io.undertow.servlet.api.LegacyThreadSetupActionWrapper$1.call(LegacyThreadSetupActionWrapper.java:44)
	at io.undertow.servlet.handlers.ServletInitialHandler.dispatchRequest(ServletInitialHandler.java:272)
	at io.undertow.servlet.handlers.ServletInitialHandler.access$000(ServletInitialHandler.java:81)
	at io.undertow.servlet.handlers.ServletInitialHandler$1.handleRequest(ServletInitialHandler.java:104)
	at io.undertow.server.Connectors.executeRootHandler(Connectors.java:202)
	at io.undertow.server.HttpServerExchange$1.run(HttpServerExchange.java:805)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
	at java.lang.Thread.run(Thread.java:748)
Caused by: java.lang.RuntimeException: java.lang.Exception: Api publishing failed: 500
	at io.apiman.manager.api.gateway.rest.GatewayClient.publish(GatewayClient.java:225)
	at io.apiman.manager.api.gateway.rest.RestGatewayLink.publishApi(RestGatewayLink.java:167)
	at io.apiman.manager.api.rest.impl.ActionResourceImpl.publishApi(ActionResourceImpl.java:204)
	... 79 more
Caused by: java.lang.Exception: Api publishing failed: 500
	at io.apiman.manager.api.gateway.rest.GatewayClient.publish(GatewayClient.java:220)
	... 81 more

Failed to start latest docker images: Could not get main file: standalone-apiman.xml

Both wildfly10 and 11 versions of the latest apiman docker images do not start:

Wildfly 10:

D:\>docker run -it -p 8080:8080 -p 8443:8443 apiman/on-wildfly10
=========================================================================

  JBoss Bootstrap Environment

  JBOSS_HOME: /opt/jboss/wildfly

  JAVA: /usr/lib/jvm/java/bin/java

  JAVA_OPTS:  -server -Xms64m -Xmx512m -XX:MetaspaceSize=96M -XX:MaxMetaspaceSize=256m -Djava.net.preferIPv4Stack=true -Djboss.modules.system.pkgs=org.jboss.byteman -Djava.awt.headless=true

=========================================================================

13:04:50,448 INFO  [org.jboss.modules] (main) JBoss Modules version 1.5.2.Final
java.lang.IllegalStateException: WFLYCTL0214: Could not get main file: standalone-apiman.xml. Specified files must be relative to the configuration dir: /opt/jboss/wildfly/standalone/configuration
        at org.jboss.as.controller.persistence.ConfigurationFile.determineMainFile(ConfigurationFile.java:312)
        at org.jboss.as.controller.persistence.ConfigurationFile.<init>(ConfigurationFile.java:173)
        at org.jboss.as.server.ServerEnvironment.<init>(ServerEnvironment.java:456)
        at org.jboss.as.server.Main.determineEnvironment(Main.java:297)
        at org.jboss.as.server.Main.main(Main.java:94)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:498)
        at org.jboss.modules.Module.run(Module.java:330)
        at org.jboss.modules.Main.main(Main.java:505)
13:04:50,619 FATAL [org.jboss.as.server] (main) WFLYSRV0239: Aborting with exit code 1

Wildfly 11:

D:\>docker run -it -p 8080:8080 -p 8443:8443 apiman/on-wildfly11
=========================================================================

  JBoss Bootstrap Environment

  JBOSS_HOME: /opt/jboss/wildfly

  JAVA: /usr/lib/jvm/java/bin/java

  JAVA_OPTS:  -server -Xms64m -Xmx512m -XX:MetaspaceSize=96M -XX:MaxMetaspaceSize=256m -Djava.net.preferIPv4Stack=true -Djboss.modules.system.pkgs=org.jboss.byteman -Djava.awt.headless=true

=========================================================================

13:03:56,922 INFO  [org.jboss.modules] (main) JBoss Modules version 1.6.1.Final
java.lang.IllegalStateException: WFLYCTL0214: Could not get main file: standalone-apiman.xml. Specified files must be relative to the configuration dir: /opt/jboss/wildfly/standalone/configuration
        at org.jboss.as.controller.persistence.ConfigurationFile.determineMainFile(ConfigurationFile.java:334)
        at org.jboss.as.controller.persistence.ConfigurationFile.<init>(ConfigurationFile.java:176)
        at org.jboss.as.server.ServerEnvironment.<init>(ServerEnvironment.java:454)
        at org.jboss.as.server.Main.determineEnvironment(Main.java:339)
        at org.jboss.as.server.Main.main(Main.java:95)
        at org.jboss.modules.Module.run(Module.java:344)
        at org.jboss.modules.Main.main(Main.java:525)
13:03:57,195 FATAL [org.jboss.as.server] (main) WFLYSRV0239: Aborting with exit code 1

Used images:

D:\>docker images
REPOSITORY                 TAG                 IMAGE ID            CREATED             SIZE
apiman/on-wildfly10        latest              e7860a297b44        2 days ago          839MB
apiman/on-wildfly11        latest              78b066f28c12        2 days ago          886MB
apiman/on-wildfly11        1.5.1.Final         964009d7e611        11 months ago       1.1GB
docker4w/nsenter-dockerd   latest              2f1c802f322f        13 months ago       187kB

Failed to turn code into token

apiman/on-wildfly11 on docker returns below error while login to apimanui

ERROR [org.keycloak.adapters.OAuthRequestAuthenticator] (default task-4) failed to turn code into token: java.net.NoRouteToHostException: No route to host (Host unreachable)
        at java.net.PlainSocketImpl.socketConnect(Native Method)
        at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350)
        at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206)
        at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188)
        at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
        at java.net.Socket.connect(Socket.java:589)

Metrics are broken: Missing client.host configuration for ESRegistry

Running the latest docker image apiman/on-wildfly11.
When clicking on "Metrics" on a ClientApp page the console throws the following error and the webpage shows a never ending loading animation.

11:47:21,859 ERROR [io.undertow.request] (default task-87) UT005023: Exception handling request to /apiman/organizations/NS/clients/clientapp/versions/1.0/metrics/apiUsage: org.jboss.resteasy.spi.UnhandledException: java.lang.RuntimeException: Missing client.host configuration for ESRegistry.
        at org.jboss.resteasy.core.ExceptionHandler.handleApplicationException(ExceptionHandler.java:78)
        at org.jboss.resteasy.core.ExceptionHandler.handleException(ExceptionHandler.java:222)
        at org.jboss.resteasy.core.SynchronousDispatcher.writeException(SynchronousDispatcher.java:179)
        at org.jboss.resteasy.core.SynchronousDispatcher.invoke(SynchronousDispatcher.java:422)
        at org.jboss.resteasy.core.SynchronousDispatcher.invoke(SynchronousDispatcher.java:213)
        at org.jboss.resteasy.plugins.server.servlet.ServletContainerDispatcher.service(ServletContainerDispatcher.java:228)
        at org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher.service(HttpServletDispatcher.java:56)
        at org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher.service(HttpServletDispatcher.java:51)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:790)
        at io.undertow.servlet.handlers.ServletHandler.handleRequest(ServletHandler.java:85)
        at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:129)
        at io.apiman.common.servlet.RootResourceFilter.doFilter(RootResourceFilter.java:59)
        at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61)
        at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)
        at io.apiman.manager.api.war.TransactionWatchdogFilter.doFilter(TransactionWatchdogFilter.java:57)
        at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61)
        at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)
        at io.apiman.manager.api.security.impl.DefaultSecurityContextFilter.doFilter(DefaultSecurityContextFilter.java:56)
        at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61)
        at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)
        at io.apiman.common.servlet.DisableCachingFilter.doFilter(DisableCachingFilter.java:52)
        at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61)
        at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)
        at io.apiman.common.servlet.ApimanCorsFilter.doFilter(ApimanCorsFilter.java:71)
        at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61)
        at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)
        at io.apiman.common.servlet.LocaleFilter.doFilter(LocaleFilter.java:61)
        at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61)
        at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)
        at io.undertow.servlet.handlers.FilterHandler.handleRequest(FilterHandler.java:84)
        at io.undertow.servlet.handlers.security.ServletSecurityRoleHandler.handleRequest(ServletSecurityRoleHandler.java:62)
        at io.undertow.servlet.handlers.ServletDispatchingHandler.handleRequest(ServletDispatchingHandler.java:36)
        at org.wildfly.extension.undertow.security.SecurityContextAssociationHandler.handleRequest(SecurityContextAssociationHandler.java:78)
        at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
        at org.keycloak.adapters.undertow.UndertowAuthenticatedActionsHandler.handleRequest(UndertowAuthenticatedActionsHandler.java:66)
        at io.undertow.servlet.handlers.security.SSLInformationAssociationHandler.handleRequest(SSLInformationAssociationHandler.java:131)
        at io.undertow.servlet.handlers.security.ServletAuthenticationCallHandler.handleRequest(ServletAuthenticationCallHandler.java:57)
        at io.undertow.server.handlers.DisableCacheHandler.handleRequest(DisableCacheHandler.java:33)
        at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
        at io.undertow.security.handlers.AuthenticationConstraintHandler.handleRequest(AuthenticationConstraintHandler.java:53)
        at io.undertow.security.handlers.AbstractConfidentialityHandler.handleRequest(AbstractConfidentialityHandler.java:46)
        at io.undertow.servlet.handlers.security.ServletConfidentialityConstraintHandler.handleRequest(ServletConfidentialityConstraintHandler.java:64)
        at io.undertow.servlet.handlers.security.ServletSecurityConstraintHandler.handleRequest(ServletSecurityConstraintHandler.java:59)
        at io.undertow.security.handlers.AuthenticationMechanismsHandler.handleRequest(AuthenticationMechanismsHandler.java:60)
        at io.undertow.servlet.handlers.security.CachedAuthenticatedSessionHandler.handleRequest(CachedAuthenticatedSessionHandler.java:77)
        at io.undertow.security.handlers.NotificationReceiverHandler.handleRequest(NotificationReceiverHandler.java:50)
        at io.undertow.security.handlers.AbstractSecurityContextAssociationHandler.handleRequest(AbstractSecurityContextAssociationHandler.java:43)
        at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
        at org.wildfly.extension.undertow.security.jacc.JACCContextIdHandler.handleRequest(JACCContextIdHandler.java:61)
        at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
        at org.wildfly.extension.undertow.deployment.GlobalRequestControllerHandler.handleRequest(GlobalRequestControllerHandler.java:68)
        at org.keycloak.adapters.undertow.ServletPreAuthActionsHandler.handleRequest(ServletPreAuthActionsHandler.java:69)
        at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
        at io.undertow.servlet.handlers.ServletInitialHandler.handleFirstRequest(ServletInitialHandler.java:292)
        at io.undertow.servlet.handlers.ServletInitialHandler.access$100(ServletInitialHandler.java:81)
        at io.undertow.servlet.handlers.ServletInitialHandler$2.call(ServletInitialHandler.java:138)
        at io.undertow.servlet.handlers.ServletInitialHandler$2.call(ServletInitialHandler.java:135)
        at io.undertow.servlet.core.ServletRequestContextThreadSetupAction$1.call(ServletRequestContextThreadSetupAction.java:48)
        at io.undertow.servlet.core.ContextClassLoaderSetupAction$1.call(ContextClassLoaderSetupAction.java:43)
        at org.wildfly.extension.undertow.security.SecurityContextThreadSetupAction.lambda$create$0(SecurityContextThreadSetupAction.java:105)
        at org.wildfly.extension.undertow.deployment.UndertowDeploymentInfoService$UndertowThreadSetupAction.lambda$create$0(UndertowDeploymentInfoService.java:1508)
        at org.wildfly.extension.undertow.deployment.UndertowDeploymentInfoService$UndertowThreadSetupAction.lambda$create$0(UndertowDeploymentInfoService.java:1508)
        at org.wildfly.extension.undertow.deployment.UndertowDeploymentInfoService$UndertowThreadSetupAction.lambda$create$0(UndertowDeploymentInfoService.java:1508)
        at org.wildfly.extension.undertow.deployment.UndertowDeploymentInfoService$UndertowThreadSetupAction.lambda$create$0(UndertowDeploymentInfoService.java:1508)
        at org.wildfly.extension.undertow.deployment.UndertowDeploymentInfoService$UndertowThreadSetupAction.lambda$create$0(UndertowDeploymentInfoService.java:1508)
        at io.undertow.servlet.handlers.ServletInitialHandler.dispatchRequest(ServletInitialHandler.java:272)
        at io.undertow.servlet.handlers.ServletInitialHandler.access$000(ServletInitialHandler.java:81)
        at io.undertow.servlet.handlers.ServletInitialHandler$1.handleRequest(ServletInitialHandler.java:104)
        at io.undertow.server.Connectors.executeRootHandler(Connectors.java:326)
        at io.undertow.server.HttpServerExchange$1.run(HttpServerExchange.java:812)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
        at java.lang.Thread.run(Thread.java:748)
Caused by: java.lang.RuntimeException: Missing client.host configuration for ESRegistry.
        at io.apiman.common.es.util.DefaultEsClientFactory.createJestClient(DefaultEsClientFactory.java:89)
        at io.apiman.common.es.util.DefaultEsClientFactory.createClient(DefaultEsClientFactory.java:59)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:498)
        at org.jboss.weld.bean.proxy.AbstractBeanInstance.invoke(AbstractBeanInstance.java:38)
        at org.jboss.weld.bean.proxy.ProxyMethodHandler.invoke(ProxyMethodHandler.java:100)
        at io.apiman.common.es.util.IEsClientFactory$816713469$Proxy$_$$_WeldClientProxy.createClient(Unknown Source)
        at io.apiman.manager.api.war.WarCdiFactory.provideMetricsESClient(WarCdiFactory.java:273)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:498)
        at org.jboss.weld.injection.StaticMethodInjectionPoint.invoke(StaticMethodInjectionPoint.java:88)
        at org.jboss.weld.injection.StaticMethodInjectionPoint.invoke(StaticMethodInjectionPoint.java:78)
        at org.jboss.weld.injection.producer.ProducerMethodProducer.produce(ProducerMethodProducer.java:100)
        at org.jboss.weld.injection.producer.AbstractMemberProducer.produce(AbstractMemberProducer.java:161)
        at org.jboss.weld.bean.AbstractProducerBean.create(AbstractProducerBean.java:180)
        at org.jboss.weld.context.AbstractContext.get(AbstractContext.java:96)
        at org.jboss.weld.bean.ContextualInstanceStrategy$DefaultContextualInstanceStrategy.get(ContextualInstanceStrategy.java:100)
        at org.jboss.weld.bean.ContextualInstanceStrategy$ApplicationScopedContextualInstanceStrategy.get(ContextualInstanceStrategy.java:140)
        at org.jboss.weld.bean.ContextualInstance.get(ContextualInstance.java:50)
        at org.jboss.weld.bean.proxy.ContextBeanInstance.getInstance(ContextBeanInstance.java:99)
        at org.jboss.weld.bean.proxy.ProxyMethodHandler.invoke(ProxyMethodHandler.java:99)
        at io.searchbox.client.AutoCloseable$Closeable$JestClient$816713470$Proxy$_$$_WeldClientProxy.execute(Unknown Source)
        at io.apiman.manager.api.es.ESMetricsAccessor.getClientUsagePerApi(ESMetricsAccessor.java:736)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:498)
        at org.jboss.weld.bean.proxy.AbstractBeanInstance.invoke(AbstractBeanInstance.java:38)
        at org.jboss.weld.bean.proxy.ProxyMethodHandler.invoke(ProxyMethodHandler.java:100)
        at io.apiman.manager.api.core.IMetricsAccessor$816713471$Proxy$_$$_WeldClientProxy.getClientUsagePerApi(Unknown Source)
        at io.apiman.manager.api.rest.impl.OrganizationResourceImpl.getClientUsagePerApi(OrganizationResourceImpl.java:819)
        at io.apiman.manager.api.rest.impl.OrganizationResourceImpl$Proxy$_$$_WeldClientProxy.getClientUsagePerApi(Unknown Source)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:498)
        at org.jboss.resteasy.core.MethodInjectorImpl.invoke(MethodInjectorImpl.java:140)
        at org.jboss.resteasy.core.ResourceMethodInvoker.invokeOnTarget(ResourceMethodInvoker.java:295)
        at org.jboss.resteasy.core.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:249)
        at org.jboss.resteasy.core.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:236)
        at org.jboss.resteasy.core.SynchronousDispatcher.invoke(SynchronousDispatcher.java:406)
        ... 69 more

Missing docker image: apiman/on-wildfly11:1.5.3.Final

The instructions on the website mention a docker image that does not seem to exist on docker hub:

D:>docker pull apiman/on-wildfly11:1.5.3.Final
Error response from daemon: manifest for apiman/on-wildfly11:1.5.3.Final not found: manifest unknown: manifest unknown

Docker image build failed for 1.5.1.Final

Problem

According to the download docs, version 1.5.1.Final is available as Docker image.

However, this tag is missing from the Docker Hub, see:

It would seem that the builds on Docker Hub failed:

Both failed with the following message:

warning: Could not find remote branch 1.5.1.Final to clone.

fatal: Remote branch 1.5.1.Final not found in upstream origin

please ensure the remote branch exists (128)

Expected behaviour

Docker image for the 1.5.1.Final release is available on Docker Hub as per documentation.

Only keep most recent version of wildfly?

@EricWittmann As I asked in the other issue maybe it would be good to remove one version of wildfly and only keep the latest version.

This will probably decrease the maintenance effort.

Because we do everything in docker we may assist you but our resources are also very limited :(

apiman-gateway not connecting to default data source with apiman/on-wildfly:latest

I updated to a the latest docker image today, got rid of my relevant volumes and started a clean container after having been away from setting up a local docker instance for a few weeks. The hash I have for the image is 789ce218b716.

I have set up a simple echo service and created a client for it within APIMan. When I copy the API endpoint for the client with the API Key as a request parameter I am getting a 502 response from the gateway with the message "Unable to connect to backend". I'll post the stack later, but as far as I can tell the default configuration is to use a database file in /opt/jboss/wildfly/standalone/data/h2. The files appear to be present with the same permissions as the apiman-manager-api database files. Any suggestions where to look or what to configure to fix this?

Here is the contents of /opt/jboss/wildfly/standalone/deployments/apiman-gateway-ds.xml

[jboss@api deployments]$ cat apiman-gateway-ds.xml

<?xml version="1.0" encoding="UTF-8"?>
<datasources>
<datasource jndi-name="java:jboss/datasources/apiman-gateway" pool-name="apiman-gateway" enabled="true"
   use-java-context="true">
   <connection-url>jdbc:h2:${jboss.server.data.dir}${/}h2${/}apiman-gateway;MVCC=true</connection-url>
   <driver>h2</driver>
   <security>
     <user-name>sa</user-name>
   </security>
 </datasource>
</datasources>

From the server log I see standalone/log/server.log:50: jboss.server.data.dir = /opt/jboss/wildfly/standalone/data

Here is the listing of /opt/jboss/wildfly/standalone/data/h2:

[jboss@api h2]$ ls -la
total 2136
drwxr-xr-x 2 jboss jboss 4096 Dec 4 20:46 .
drwxr-xr-x 9 jboss jboss 4096 Dec 4 20:27 ..
-rw-r--r-- 1 jboss jboss 36864 Dec 4 20:39 apiman-gateway.mv.db
-rw-r--r-- 1 jboss jboss 145 Dec 4 20:27 apiman-gateway.trace.db
-rw-r--r-- 1 jboss jboss 143360 Dec 4 20:33 apiman-manager-api.mv.db
-rw-r--r-- 1 jboss jboss 139 Dec 4 20:27 apiman-manager-api.trace.db
-rw-r--r-- 1 jboss jboss 136 Dec 4 20:27 keycloak.lock.db
-rwxr-xr-x 1 jboss jboss 1986560 Dec 4 20:30 keycloak.mv.db

And here is the reported stack trace from the HTTP request.

io.apiman.gateway.engine.beans.exceptions.ConnectorException: Unable to connect to backend
    at deployment.apiman-gateway.war//io.apiman.gateway.engine.handler.ErrorHandler.handleConnectionError(ErrorHandler.java:30)
    at deployment.apiman-gateway.war//io.apiman.gateway.platforms.servlet.connectors.HttpApiConnection.handleConnectionError(HttpApiConnection.java:407)
    at deployment.apiman-gateway.war//io.apiman.gateway.platforms.servlet.connectors.HttpApiConnection.connect(HttpApiConnection.java:209)
    at deployment.apiman-gateway.war//io.apiman.gateway.platforms.servlet.connectors.HttpApiConnection.<init>(HttpApiConnection.java:120)
    at deployment.apiman-gateway.war//io.apiman.gateway.platforms.servlet.connectors.HttpConnectorFactory$1.connect(HttpConnectorFactory.java:119)
    at deployment.apiman-gateway.war//io.apiman.gateway.engine.impl.ApiRequestExecutorImpl.lambda$null$4(ApiRequestExecutorImpl.java:284)
    at deployment.apiman-gateway.war//io.apiman.gateway.engine.policy.Chain.handleHead(Chain.java:238)
    at deployment.apiman-gateway.war//io.apiman.gateway.engine.policy.Chain.doApply(Chain.java:152)
    at deployment.apiman-gateway.war//io.apiman.gateway.engine.policies.RateLimitingPolicy$1.handle(RateLimitingPolicy.java:104)
    at deployment.apiman-gateway.war//io.apiman.gateway.engine.policies.RateLimitingPolicy$1.handle(RateLimitingPolicy.java:91)
    at deployment.apiman-gateway.war//io.apiman.gateway.engine.impl.InMemoryRateLimiterComponent.accept(InMemoryRateLimiterComponent.java:69)
    at deployment.apiman-gateway.war//io.apiman.gateway.engine.policies.RateLimitingPolicy.doApply(RateLimitingPolicy.java:91)
    at deployment.apiman-gateway.war//io.apiman.gateway.engine.policies.RateLimitingPolicy.doApply(RateLimitingPolicy.java:45)
    at deployment.apiman-gateway.war//io.apiman.gateway.engine.policies.AbstractMappedPolicy.apply(AbstractMappedPolicy.java:73)
    at deployment.apiman-gateway.war//io.apiman.gateway.engine.policy.RequestChain.lambda$applyPolicy$0(RequestChain.java:67)
    at deployment.apiman-gateway.war//io.apiman.gateway.engine.policy.Chain.executeInPolicyContextLoader(Chain.java:299)
    at deployment.apiman-gateway.war//io.apiman.gateway.engine.policy.RequestChain.applyPolicy(RequestChain.java:66)
    at deployment.apiman-gateway.war//io.apiman.gateway.engine.policy.Chain.doApply(Chain.java:150)
    at deployment.apiman-gateway.war//io.apiman.gateway.engine.policies.RateLimitingPolicy$1.handle(RateLimitingPolicy.java:104)
    at deployment.apiman-gateway.war//io.apiman.gateway.engine.policies.RateLimitingPolicy$1.handle(RateLimitingPolicy.java:91)
    at deployment.apiman-gateway.war//io.apiman.gateway.engine.impl.InMemoryRateLimiterComponent.accept(InMemoryRateLimiterComponent.java:69)
    at deployment.apiman-gateway.war//io.apiman.gateway.engine.policies.RateLimitingPolicy.doApply(RateLimitingPolicy.java:91)
    at deployment.apiman-gateway.war//io.apiman.gateway.engine.policies.RateLimitingPolicy.doApply(RateLimitingPolicy.java:45)
    at deployment.apiman-gateway.war//io.apiman.gateway.engine.policies.AbstractMappedPolicy.apply(AbstractMappedPolicy.java:73)
    at deployment.apiman-gateway.war//io.apiman.gateway.engine.policy.RequestChain.lambda$applyPolicy$0(RequestChain.java:67)
    at deployment.apiman-gateway.war//io.apiman.gateway.engine.policy.Chain.executeInPolicyContextLoader(Chain.java:299)
    at deployment.apiman-gateway.war//io.apiman.gateway.engine.policy.RequestChain.applyPolicy(RequestChain.java:66)
    at deployment.apiman-gateway.war//io.apiman.gateway.engine.policy.Chain.doApply(Chain.java:150)
    at deployment.apiman-gateway.war//io.apiman.gateway.engine.impl.ApiRequestExecutorImpl.lambda$execute$5(ApiRequestExecutorImpl.java:300)
    at deployment.apiman-gateway.war//io.apiman.gateway.engine.impl.ApiRequestExecutorImpl.lambda$loadPolicies$7(ApiRequestExecutorImpl.java:681)
    at deployment.apiman-gateway.war//io.apiman.gateway.engine.policy.PolicyFactoryImpl.doLoadFromClasspath(PolicyFactoryImpl.java:143)
    at deployment.apiman-gateway.war//io.apiman.gateway.engine.policy.PolicyFactoryImpl.loadPolicy(PolicyFactoryImpl.java:102)
    at deployment.apiman-gateway.war//io.apiman.gateway.engine.impl.ApiRequestExecutorImpl.loadPolicies(ApiRequestExecutorImpl.java:649)
    at deployment.apiman-gateway.war//io.apiman.gateway.engine.impl.ApiRequestExecutorImpl.lambda$execute$6(ApiRequestExecutorImpl.java:412)
    at deployment.apiman-gateway.war//io.apiman.gateway.engine.impl.SecureRegistryWrapper$2.handle(SecureRegistryWrapper.java:189)
    at deployment.apiman-gateway.war//io.apiman.gateway.engine.impl.SecureRegistryWrapper$2.handle(SecureRegistryWrapper.java:171)
    at deployment.apiman-gateway.war//io.apiman.gateway.engine.jdbc.CachingJdbcRegistry.getContract(CachingJdbcRegistry.java:102)
    at deployment.apiman-gateway.war//io.apiman.gateway.engine.impl.SecureRegistryWrapper.getContract(SecureRegistryWrapper.java:171)
    at deployment.apiman-gateway.war//io.apiman.gateway.engine.impl.ApiRequestExecutorImpl.execute(ApiRequestExecutorImpl.java:378)
    at deployment.apiman-gateway.war//io.apiman.gateway.platforms.servlet.GatewayServlet.doAction(GatewayServlet.java:178)
    at deployment.apiman-gateway.war//io.apiman.gateway.platforms.servlet.GatewayServlet.service(GatewayServlet.java:79)
    at [email protected]//javax.servlet.http.HttpServlet.service(HttpServlet.java:590)
    at [email protected]//io.undertow.servlet.handlers.ServletHandler.handleRequest(ServletHandler.java:74)
    at [email protected]//io.undertow.servlet.handlers.security.ServletSecurityRoleHandler.handleRequest(ServletSecurityRoleHandler.java:62)
    at [email protected]//io.undertow.servlet.handlers.ServletChain$1.handleRequest(ServletChain.java:68)
    at [email protected]//io.undertow.servlet.handlers.ServletDispatchingHandler.handleRequest(ServletDispatchingHandler.java:36)
    at [email protected]//org.wildfly.extension.undertow.security.SecurityContextAssociationHandler.handleRequest(SecurityContextAssociationHandler.java:78)
    at [email protected]//io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
    at [email protected]//io.undertow.servlet.handlers.RedirectDirHandler.handleRequest(RedirectDirHandler.java:68)
    at [email protected]//io.undertow.servlet.handlers.security.SSLInformationAssociationHandler.handleRequest(SSLInformationAssociationHandler.java:132)
    at [email protected]//io.undertow.servlet.handlers.security.ServletAuthenticationCallHandler.handleRequest(ServletAuthenticationCallHandler.java:57)
    at [email protected]//io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
    at [email protected]//io.undertow.security.handlers.AbstractConfidentialityHandler.handleRequest(AbstractConfidentialityHandler.java:46)
    at [email protected]//io.undertow.servlet.handlers.security.ServletConfidentialityConstraintHandler.handleRequest(ServletConfidentialityConstraintHandler.java:64)
    at [email protected]//io.undertow.security.handlers.AuthenticationMechanismsHandler.handleRequest(AuthenticationMechanismsHandler.java:60)
    at [email protected]//io.undertow.servlet.handlers.security.CachedAuthenticatedSessionHandler.handleRequest(CachedAuthenticatedSessionHandler.java:77)
    at [email protected]//io.undertow.security.handlers.NotificationReceiverHandler.handleRequest(NotificationReceiverHandler.java:50)
    at [email protected]//io.undertow.security.handlers.AbstractSecurityContextAssociationHandler.handleRequest(AbstractSecurityContextAssociationHandler.java:43)
    at [email protected]//io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
    at [email protected]//org.wildfly.extension.undertow.security.jacc.JACCContextIdHandler.handleRequest(JACCContextIdHandler.java:61)
    at [email protected]//io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
    at [email protected]//org.wildfly.extension.undertow.deployment.GlobalRequestControllerHandler.handleRequest(GlobalRequestControllerHandler.java:68)
    at [email protected]//io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
    at [email protected]//io.undertow.servlet.handlers.ServletInitialHandler.handleFirstRequest(ServletInitialHandler.java:269)
    at [email protected]//io.undertow.servlet.handlers.ServletInitialHandler.access$100(ServletInitialHandler.java:78)
    at [email protected]//io.undertow.servlet.handlers.ServletInitialHandler$2.call(ServletInitialHandler.java:133)
    at [email protected]//io.undertow.servlet.handlers.ServletInitialHandler$2.call(ServletInitialHandler.java:130)
    at [email protected]//io.undertow.servlet.core.ServletRequestContextThreadSetupAction$1.call(ServletRequestContextThreadSetupAction.java:48)
    at [email protected]//io.undertow.servlet.core.ContextClassLoaderSetupAction$1.call(ContextClassLoaderSetupAction.java:43)
    at [email protected]//org.wildfly.extension.undertow.security.SecurityContextThreadSetupAction.lambda$create$0(SecurityContextThreadSetupAction.java:105)
    at [email protected]//org.wildfly.extension.undertow.deployment.UndertowDeploymentInfoService$UndertowThreadSetupAction.lambda$create$0(UndertowDeploymentInfoService.java:1530)
    at [email protected]//org.wildfly.extension.undertow.deployment.UndertowDeploymentInfoService$UndertowThreadSetupAction.lambda$create$0(UndertowDeploymentInfoService.java:1530)
    at [email protected]//org.wildfly.extension.undertow.deployment.UndertowDeploymentInfoService$UndertowThreadSetupAction.lambda$create$0(UndertowDeploymentInfoService.java:1530)
    at [email protected]//org.wildfly.extension.undertow.deployment.UndertowDeploymentInfoService$UndertowThreadSetupAction.lambda$create$0(UndertowDeploymentInfoService.java:1530)
    at [email protected]//io.undertow.servlet.handlers.ServletInitialHandler.dispatchRequest(ServletInitialHandler.java:249)
    at [email protected]//io.undertow.servlet.handlers.ServletInitialHandler.access$000(ServletInitialHandler.java:78)
    at [email protected]//io.undertow.servlet.handlers.ServletInitialHandler$1.handleRequest(ServletInitialHandler.java:99)
    at [email protected]//io.undertow.server.Connectors.executeRootHandler(Connectors.java:370)
    at [email protected]//io.undertow.server.HttpServerExchange$1.run(HttpServerExchange.java:830)
    at [email protected]//org.jboss.threads.ContextClassLoaderSavingRunnable.run(ContextClassLoaderSavingRunnable.java:35)
    at [email protected]//org.jboss.threads.EnhancedQueueExecutor.safeRun(EnhancedQueueExecutor.java:1982)
    at [email protected]//org.jboss.threads.EnhancedQueueExecutor$ThreadBody.doRunTask(EnhancedQueueExecutor.java:1486)
    at [email protected]//org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1377)
    at java.base/java.lang.Thread.run(Thread.java:834)
Caused by: java.net.ConnectException: Connection refused (Connection refused)
    at java.base/java.net.PlainSocketImpl.socketConnect(Native Method)
    at java.base/java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:399)
    at java.base/java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:242)
    at java.base/java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:224)
    at java.base/java.net.SocksSocketImpl.connect(SocksSocketImpl.java:403)
    at java.base/java.net.Socket.connect(Socket.java:609)
    at deployment.apiman-gateway.war//com.squareup.okhttp.internal.Platform.connectSocket(Platform.java:100)
    at deployment.apiman-gateway.war//com.squareup.okhttp.internal.http.SocketConnector.connectRawSocket(SocketConnector.java:160)
    at deployment.apiman-gateway.war//com.squareup.okhttp.internal.http.SocketConnector.connectTls(SocketConnector.java:79)
    at deployment.apiman-gateway.war//com.squareup.okhttp.Connection.connect(Connection.java:143)
    at deployment.apiman-gateway.war//com.squareup.okhttp.Connection.connectAndSetOwner(Connection.java:185)
    at deployment.apiman-gateway.war//com.squareup.okhttp.OkHttpClient$1.connectAndSetOwner(OkHttpClient.java:128)
    at deployment.apiman-gateway.war//com.squareup.okhttp.internal.http.HttpEngine.nextConnection(HttpEngine.java:341)
    at deployment.apiman-gateway.war//com.squareup.okhttp.internal.http.HttpEngine.connect(HttpEngine.java:330)
    at deployment.apiman-gateway.war//com.squareup.okhttp.internal.http.HttpEngine.sendRequest(HttpEngine.java:248)
    at deployment.apiman-gateway.war//io.apiman.gateway.platforms.servlet.connectors.ok.HttpURLConnectionImpl.execute(HttpURLConnectionImpl.java:435)
    at deployment.apiman-gateway.war//io.apiman.gateway.platforms.servlet.connectors.ok.HttpURLConnectionImpl.connect(HttpURLConnectionImpl.java:116)
    at deployment.apiman-gateway.war//io.apiman.gateway.platforms.servlet.connectors.ok.DelegatingHttpsURLConnection.connect(DelegatingHttpsURLConnection.java:91)
    at deployment.apiman-gateway.war//io.apiman.gateway.platforms.servlet.connectors.ok.HttpsURLConnectionImpl.connect(HttpsURLConnectionImpl.java:27)
    at deployment.apiman-gateway.war//io.apiman.gateway.platforms.servlet.connectors.HttpApiConnection.connect(HttpApiConnection.java:206)
    ... 81 more

Docker images missing/out of date for 1.2.x

Hi @EricWittmann, following the merge of these PRs:

...the Docker images for 1.2.1 are not yet in Docker Hub.

$ docker run -it -p 8080:8080 -p 8443:8443 jboss/apiman-wildfly:1.2.1.Final
Unable to find image 'jboss/apiman-wildfly:1.2.1.Final' locally
Pulling repository docker.io/jboss/apiman-wildfly
Tag 1.2.1.Final not found in repository docker.io/jboss/apiman-wildfly

Are we able to push these to Docker Hub?

Current state

ERROR [io.apiman.gateway.engine.jdbc.PollCachingJdbcRegistry]

I'm using apiman on a multi node container, but after a few days of running apiman, the following issue appears:
ERROR [io.apiman.gateway.engine.jdbc.PollCachingJdbcRegistry] (JdbcRegistryCacheInvalidator) SQL problem encountered while running latest version query: This connection has been closed. Query: SELECT version FROM gw_dataversion Parameters: []: java.sql.SQLException: This connection has been closed. Query: SELECT version FROM gw_dataversion Parameters: []
at org.apache.commons.dbutils.AbstractQueryRunner.rethrow(AbstractQueryRunner.java:527)
at org.apache.commons.dbutils.QueryRunner.query(QueryRunner.java:391)
at org.apache.commons.dbutils.QueryRunner.query(QueryRunner.java:347)
at io.apiman.gateway.engine.jdbc.PollCachingJdbcRegistry.checkCacheVersion(PollCachingJdbcRegistry.java:199)
at io.apiman.gateway.engine.jdbc.PollCachingJdbcRegistry$5.run(PollCachingJdbcRegistry.java:175)
at java.lang.Thread.run(Unknown Source)

HTTPS on a remote server

Hi,
I'm trying to connect my localhost app to apiMan & its embedded keycloak installed as a docker on a remote server.
I can't connect to apiman/keycloak through http because it is not accessed locally. I'm now trying to connect through https but the self-signed certificate of apiman/keycloak is associated to "localhost" domain instead of its hosting server. That causes the ssl handshake to fail because the certificate is provided for "localhost" instead of the server domain name.
How can I tell apiman/keycloak inside the container that they are running and accessed on a remote server ?
thx

How to access the Web UI?

The documentation does not state what the URL path is to access apiman's web ui. Simply going to the root path resolves the default Wildfly start screen. I started a bash terminal in the running container and i did not see any configuration in the standalone.xml to indicate what path to use. Please advise.

docker-compose'd install fails to restart/up again after making changes

Dockerfile:

FROM apiman/on-wildfly
RUN $JBOSS_HOME/bin/add-user.sh admin admin123! --silent
EXPOSE 8787
ENTRYPOINT ["/opt/jboss/wildfly/bin/standalone.sh", "-b", "0.0.0.0", "-bmanagement", "0.0.0.0", "-c", "standalone-apiman.xml", "--debug"]

Compose file:

version: "3"
services:
  apiman:
    build: apiman
    ports:
      - 8080:8080
      - 8443:8443
      - 9990:9990

  echo-server:
    image: ealen/echo-server:latest

After starting successfully and

  • setting up Keycloak with
    • new realm
    • client
    • users
    • roles
  • creating an API with the Keycloak Plugin (after installing it in the GUI)
  • deploying apiman-quickstarts-echo-service-1.3.1.Final.war into Wildfly
  • successfully testing the setup

we stopped the running containers and did a docker-compose up again.

This ALWAYS results in the following exception/death/unusable compose setup. We were able to reproduce this every time and it seems to start happening after adding and configuring the Keycloak Plugin and hitting the API using it.

apiman_1       | 16:49:46,572 INFO  [org.hibernate.hql.internal.QueryTranslatorFactoryInitiator] (ServerService Thread Pool -- 92) HHH000397: Using ASTQueryTranslatorFactory
apiman_1       | 16:49:46,768 INFO  [stdout] (Thread-121) Import not needed.
apiman_1       | 16:49:46,780 INFO  [stdout] (Thread-121) ----------------------------
apiman_1       | 16:49:46,781 INFO  [stdout] (Thread-121) Starting apiman data import.
apiman_1       | 16:49:46,784 INFO  [stdout] (Thread-121) Import not needed.
apiman_1       | 16:49:46,785 INFO  [stdout] (Thread-121) ----------------------------
apiman_1       | 16:49:46,786 INFO  [stdout] (Thread-121) Starting apiman data import.
apiman_1       | 16:49:46,795 INFO  [stdout] (Thread-121) Import not needed.
apiman_1       | 16:49:47,690 WARN  [org.jboss.modules.define] (ServerService Thread Pool -- 92) Failed to define class org.keycloak.models.sessions.infinispan.initializer.SessionInitializerWorker in Module "org.keycloak.keycloak-model-infinispan" version 10.0.2 from local module loader @ebaa6cb (finder: local module finder @906d29b (roots: /opt/jboss/wildfly/modules,/opt/jboss/wildfly/modules/system/layers/keycloak,/opt/jboss/wildfly/modules/system/layers/base,/opt/jboss/wildfly/modules/system/add-ons/keycloak)): java.lang.NoClassDefFoundError: Failed to link org/keycloak/models/sessions/infinispan/initializer/SessionInitializerWorker (Module "org.keycloak.keycloak-model-infinispan" version 10.0.2 from local module loader @ebaa6cb (finder: local module finder @906d29b (roots: /opt/jboss/wildfly/modules,/opt/jboss/wildfly/modules/system/layers/keycloak,/opt/jboss/wildfly/modules/system/layers/base,/opt/jboss/wildfly/modules/system/add-ons/keycloak))): org/infinispan/distexec/DistributedCallable
apiman_1       | 	at java.base/java.lang.ClassLoader.defineClass1(Native Method)
apiman_1       | 	at java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:1017)
apiman_1       | 	at org.jboss.modules.ModuleClassLoader.doDefineOrLoadClass(ModuleClassLoader.java:423)
apiman_1       | 	at org.jboss.modules.ModuleClassLoader.defineClass(ModuleClassLoader.java:555)
apiman_1       | 	at org.jboss.modules.ModuleClassLoader.loadClassLocal(ModuleClassLoader.java:339)
apiman_1       | 	at org.jboss.modules.ModuleClassLoader$1.loadClassLocal(ModuleClassLoader.java:126)
apiman_1       | 	at org.jboss.modules.Module.loadModuleClass(Module.java:731)
apiman_1       | 	at org.jboss.modules.ModuleClassLoader.findClass(ModuleClassLoader.java:247)
apiman_1       | 	at org.jboss.modules.ConcurrentClassLoader.performLoadClassUnchecked(ConcurrentClassLoader.java:410)
apiman_1       | 	at org.jboss.modules.ConcurrentClassLoader.performLoadClass(ConcurrentClassLoader.java:398)
apiman_1       | 	at org.jboss.modules.ConcurrentClassLoader.loadClass(ConcurrentClassLoader.java:116)
apiman_1       | 	at [email protected]//org.keycloak.models.sessions.infinispan.initializer.InfinispanCacheInitializer.startLoadingImpl(InfinispanCacheInitializer.java:150)
apiman_1       | 	at [email protected]//org.keycloak.models.sessions.infinispan.initializer.InfinispanCacheInitializer.startLoading(InfinispanCacheInitializer.java:108)
apiman_1       | 	at [email protected]//org.keycloak.models.sessions.infinispan.initializer.DBLockBasedCacheInitializer.startLoading(DBLockBasedCacheInitializer.java:75)
apiman_1       | 	at [email protected]//org.keycloak.models.sessions.infinispan.initializer.CacheInitializer.loadSessions(CacheInitializer.java:41)
apiman_1       | 	at [email protected]//org.keycloak.models.sessions.infinispan.InfinispanUserSessionProviderFactory$2.run(InfinispanUserSessionProviderFactory.java:186)
apiman_1       | 	at [email protected]//org.keycloak.models.utils.KeycloakModelUtils.runJobInTransaction(KeycloakModelUtils.java:227)
apiman_1       | 	at [email protected]//org.keycloak.models.sessions.infinispan.InfinispanUserSessionProviderFactory.loadPersistentSessions(InfinispanUserSessionProviderFactory.java:172)
apiman_1       | 	at [email protected]//org.keycloak.models.sessions.infinispan.InfinispanUserSessionProviderFactory$1.lambda$onEvent$0(InfinispanUserSessionProviderFactory.java:126)
apiman_1       | 	at [email protected]//org.keycloak.models.utils.KeycloakModelUtils.runJobInTransaction(KeycloakModelUtils.java:227)
apiman_1       | 	at [email protected]//org.keycloak.models.utils.KeycloakModelUtils.runJobInTransactionWithTimeout(KeycloakModelUtils.java:267)
apiman_1       | 	at [email protected]//org.keycloak.models.sessions.infinispan.InfinispanUserSessionProviderFactory$1.onEvent(InfinispanUserSessionProviderFactory.java:122)
apiman_1       | 	at [email protected]//org.keycloak.services.DefaultKeycloakSessionFactory.publish(DefaultKeycloakSessionFactory.java:72)
apiman_1       | 	at [email protected]//org.keycloak.services.resources.KeycloakApplication.startup(KeycloakApplication.java:170)
apiman_1       | 	at [email protected]//org.keycloak.provider.wildfly.WildflyPlatform.onStartup(WildflyPlatform.java:29)
apiman_1       | 	at [email protected]//org.keycloak.services.resources.KeycloakApplication.<init>(KeycloakApplication.java:125)
apiman_1       | 	at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
apiman_1       | 	at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
apiman_1       | 	at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
apiman_1       | 	at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:490)
apiman_1       | 	at [email protected]//org.jboss.resteasy.core.ConstructorInjectorImpl.construct(ConstructorInjectorImpl.java:152)
apiman_1       | 	at [email protected]//org.jboss.resteasy.spi.ResteasyProviderFactory.createProviderInstance(ResteasyProviderFactory.java:2811)
apiman_1       | 	at [email protected]//org.jboss.resteasy.spi.ResteasyDeployment.createApplication(ResteasyDeployment.java:371)
apiman_1       | 	at [email protected]//org.jboss.resteasy.spi.ResteasyDeployment.startInternal(ResteasyDeployment.java:283)
apiman_1       | 	at [email protected]//org.jboss.resteasy.spi.ResteasyDeployment.start(ResteasyDeployment.java:93)
apiman_1       | 	at [email protected]//org.jboss.resteasy.plugins.server.servlet.ServletContainerDispatcher.init(ServletContainerDispatcher.java:140)
apiman_1       | 	at [email protected]//org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher.init(HttpServletDispatcher.java:42)
apiman_1       | 	at [email protected]//io.undertow.servlet.core.LifecyleInterceptorInvocation.proceed(LifecyleInterceptorInvocation.java:117)
apiman_1       | 	at [email protected]//org.wildfly.extension.undertow.security.RunAsLifecycleInterceptor.init(RunAsLifecycleInterceptor.java:78)
apiman_1       | 	at [email protected]//io.undertow.servlet.core.LifecyleInterceptorInvocation.proceed(LifecyleInterceptorInvocation.java:103)
apiman_1       | 	at [email protected]//io.undertow.servlet.core.ManagedServlet$DefaultInstanceStrategy.start(ManagedServlet.java:305)
apiman_1       | 	at [email protected]//io.undertow.servlet.core.ManagedServlet.createServlet(ManagedServlet.java:145)
apiman_1       | 	at [email protected]//io.undertow.servlet.core.DeploymentManagerImpl$2.call(DeploymentManagerImpl.java:585)
apiman_1       | 	at [email protected]//io.undertow.servlet.core.DeploymentManagerImpl$2.call(DeploymentManagerImpl.java:556)
apiman_1       | 	at [email protected]//io.undertow.servlet.core.ServletRequestContextThreadSetupAction$1.call(ServletRequestContextThreadSetupAction.java:42)
apiman_1       | 	at [email protected]//io.undertow.servlet.core.ContextClassLoaderSetupAction$1.call(ContextClassLoaderSetupAction.java:43)
apiman_1       | 	at [email protected]//org.wildfly.extension.undertow.security.SecurityContextThreadSetupAction.lambda$create$0(SecurityContextThreadSetupAction.java:105)
apiman_1       | 	at [email protected]//org.wildfly.extension.undertow.deployment.UndertowDeploymentInfoService$UndertowThreadSetupAction.lambda$create$0(UndertowDeploymentInfoService.java:1530)
apiman_1       | 	at [email protected]//org.wildfly.extension.undertow.deployment.UndertowDeploymentInfoService$UndertowThreadSetupAction.lambda$create$0(UndertowDeploymentInfoService.java:1530)
apiman_1       | 	at [email protected]//org.wildfly.extension.undertow.deployment.UndertowDeploymentInfoService$UndertowThreadSetupAction.lambda$create$0(UndertowDeploymentInfoService.java:1530)
apiman_1       | 	at [email protected]//org.wildfly.extension.undertow.deployment.UndertowDeploymentInfoService$UndertowThreadSetupAction.lambda$create$0(UndertowDeploymentInfoService.java:1530)
apiman_1       | 	at [email protected]//io.undertow.servlet.core.DeploymentManagerImpl.start(DeploymentManagerImpl.java:598)
apiman_1       | 	at [email protected]//org.wildfly.extension.undertow.deployment.UndertowDeploymentService.startContext(UndertowDeploymentService.java:97)
apiman_1       | 	at [email protected]//org.wildfly.extension.undertow.deployment.UndertowDeploymentService$1.run(UndertowDeploymentService.java:78)
apiman_1       | 	at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515)
apiman_1       | 	at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
apiman_1       | 	at [email protected]//org.jboss.threads.ContextClassLoaderSavingRunnable.run(ContextClassLoaderSavingRunnable.java:35)
apiman_1       | 	at [email protected]//org.jboss.threads.EnhancedQueueExecutor.safeRun(EnhancedQueueExecutor.java:1982)
apiman_1       | 	at [email protected]//org.jboss.threads.EnhancedQueueExecutor$ThreadBody.doRunTask(EnhancedQueueExecutor.java:1486)
apiman_1       | 	at [email protected]//org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1377)
apiman_1       | 	at java.base/java.lang.Thread.run(Thread.java:834)
apiman_1       | 	at [email protected]//org.jboss.threads.JBossThread.run(JBossThread.java:485)
apiman_1       |
apiman_1       | 16:49:47,701 FATAL [org.keycloak.services] (ServerService Thread Pool -- 92) java.lang.NoClassDefFoundError: Failed to link org/keycloak/models/sessions/infinispan/initializer/SessionInitializerWorker (Module "org.keycloak.keycloak-model-infinispan" version 10.0.2 from local module loader @ebaa6cb (finder: local module finder @906d29b (roots: /opt/jboss/wildfly/modules,/opt/jboss/wildfly/modules/system/layers/keycloak,/opt/jboss/wildfly/modules/system/layers/base,/opt/jboss/wildfly/modules/system/add-ons/keycloak))): org/infinispan/distexec/DistributedCallable

Failed to publish API.

Hi everyone, i found this error via apimanui when i publish new api. What i do wrong?
apiman.log

Info

  • Apiman-2.2.3.Final
  • Apache Tomcat/9.0.64
  • Connecting via Mysql5.7 not elasticsearch
  • Created tables via apiman-gateway_mysql5.ddl, apiman_mysql5.ddl already
  • Add mysql-connector-java-5.1.33.jar to /opt/tomcat/lib already

image
image
image
image

apiman.properties

# Remote maven repositories to use when looking for plugins.  Comma separated
# list of URLs.
apiman.plugins.repositories=https://repo1.maven.org/maven2/,http://repository.jboss.org/nexus/content/groups/public/
apiman-manager.plugins.registries=https://cdn.jsdelivr.net/gh/apiman/apiman-plugin-registry@master/registry.json

# Apiman Manager logging. standard, json or a FQDN implementing IApimanLogger
apiman-manager.config.logger=standard

# Apiman Manager secret key for data encryption
#apiman.encrypter.type=io.apiman.common.util.crypt.AesDataEncrypter
#apiman.encrypter.secretKey=

# ---------------------------------------------------------------------
# The datasource for all Apiman Gateway components (JDBC)
# ---------------------------------------------------------------------
apiman-gateway.jdbc.jndi-location=java:comp/env/jdbc/datasources/apiman-gateway


# ---------------------------------------------------------------------
# The following are settings for using elasticsearch for various
# apiman components.
# ---------------------------------------------------------------------
#apiman.es.client.type=es
#apiman.es.protocol=https
#apiman.es.initialize=true
#apiman.es.host=192.168.100.105
#apiman.es.port=9200
#apiman.es.username=elastic
#apiman.es.password=7WOY8G8DZZTd9ma2Xner
#apiman.es.timeout=10000
#apiman.es.pollingTime=60
#apiman.es.keystore.path=/etc/elasticsearch
#apiman.es.keystore.password=P@ssw0rd
#apiman.es.truststore.path=/etc/elasticsearch
#apiman.es.truststore.password=P@ssw0rd
#apiman.es.allowSelfSigned=true
#apiman.es.allowAnyHost=true

# ---------------------------------------------------------------------
# Some hibernate settings only useful when JPA is the storage.type.
# ---------------------------------------------------------------------
apiman.hibernate.connection.datasource=java:comp/env/jdbc/datasources/apiman-manager
apiman.hibernate.dialect=io.apiman.manager.api.jpa.ApimanMySQL5Dialect
apiman.hibernate.hbm2ddl.auto=validate

# How the API Manager UI authenticates to the API Manager REST services
apiman-manager-ui.api.authentication.type=authToken
apiman-manager-ui.api.authentication.token.generator=io.apiman.manager.ui.server.auth.AuthTokenGenerator

# Set cross origin for the manager; *=any, comma separated names
apiman-manager-ui.allowed-cors-origins=*

# Security context settings.
apiman-manager.security-context.type=default

# Set the option to only allow Admins to create orgs to (false)
apiman-manager.config.features.org-create-admin-only=false
apiman-manager-ui.org-create-admin-only=false

# Set the option to true if the response of the manager rest api should contain stacktraces
apiman-manager.config.features.rest-response-should-contain-stacktraces=false

# API Manager storage settings.
apiman-manager.storage.type=jpa
apiman-manager.storage.jpa.initialize=true

#apiman-manager.storage.type=es
#apiman-manager.storage.es.client.type=${apiman.es.client.type}
#apiman-manager.storage.es.client.protocol=${apiman.es.protocol}
#apiman-manager.storage.es.client.host=${apiman.es.host}
#apiman-manager.storage.es.client.port=${apiman.es.port}
#apiman-manager.storage.es.client.username=${apiman.es.username}
#apiman-manager.storage.es.client.password=${apiman.es.password}
#apiman-manager.storage.es.client.timeout=${apiman.es.timeout}
#apiman-manager.storage.es.client.pollingTime=${apiman.es.pollingTime}
#apiman-manager.storage.es.client.initialize=${apiman.es.initialize}
#apiman-manager.storage.es.client.keystore.path=${apiman.es.keystore.path}
#apiman-manager.storage.es.client.keystore.password=${apiman.es.keystore.password}
#apiman-manager.storage.es.client.truststore.path=${apiman.es.truststore.path}
#apiman-manager.storage.es.client.truststore.password=${apiman.es.truststore.password}
#apiman-manager.storage.es.client.allowSelfSigned=${apiman.es.allowSelfSigned}
#apiman-manager.storage.es.client.allowAnyHost=${apiman.es.allowAnyHost}

# API Manager metrics settings.
apiman-manager.metrics.type=io.apiman.manager.api.jdbc.JdbcMetricsAccessor
apiman-manager.metrics.datasource.jndi-location=${apiman-gateway.jdbc.jndi-location}

#apiman-manager.metrics.type=es
#apiman-manager.metrics.es.client.type=${apiman.es.client.type}
#apiman-manager.metrics.es.client.protocol=${apiman.es.protocol}
#apiman-manager.metrics.es.client.host=${apiman.es.host}
#apiman-manager.metrics.es.client.port=${apiman.es.port}
#apiman-manager.metrics.es.client.username=${apiman.es.username}
#apiman-manager.metrics.es.client.password=${apiman.es.password}
#apiman-manager.metrics.es.client.timeout=${apiman.es.timeout}
#apiman-manager.metrics.es.client.pollingTime=${apiman.es.pollingTime}
#apiman-manager.metrics.es.client.keystore.path=${apiman.es.keystore.path}
#apiman-manager.metrics.es.client.keystore.password=${apiman.es.keystore.password}
#apiman-manager.metrics.es.client.truststore.path=${apiman.es.truststore.path}
#apiman-manager.metrics.es.client.truststore.password=${apiman.es.truststore.password}
#apiman-manager.metrics.es.client.allowSelfSigned=$eapiman.es.allowSelfSigned}
#apiman-manager.metrics.es.client.allowAnyHost=${apiman.es.allowAnyHost}

# API Manager API Catalog
apiman-manager.api-catalog.type=io.apiman.manager.api.core.catalog.JsonApiCatalog
apiman-manager.api-catalog.catalog-url=https://cdn.jsdelivr.net/gh/apiman/apiman-api-catalog@master/catalog.json


# API Gateway components
apiman-gateway.plugin-registry=io.apiman.gateway.engine.impl.DefaultPluginRegistry
apiman-gateway.plugin-registry.pluginsDir=${catalina.home}/data/apiman/plugins
apiman-gateway.plugin-registry.pluginRepositories=${apiman.plugins.repositories}
apiman-gateway.connector-factory=io.apiman.gateway.platforms.servlet.connectors.HttpConnectorFactory
apiman-gateway.policy-factory=io.apiman.gateway.engine.policy.PolicyFactoryImpl
apiman-gateway.policy-factory.reloadSnapshots=false
apiman-gateway.logger-factory=io.apiman.common.logging.impl.NoOpLoggerFactory
apiman-gateway.components.IPolicyFailureFactoryComponent=io.apiman.gateway.platforms.servlet.PolicyFailureFactoryComponent
apiman-gateway.components.IBufferFactoryComponent=io.apiman.gateway.engine.impl.ByteBufferFactoryComponent

# Gateway error writer
# A "trace" version of the error writer - comment out/remove this to suppress stack traces
# in the JSON/XML payload returned by the gateway when an error occurs.
apiman-gateway.writers.error=io.apiman.gateway.engine.impl.TracePolicyErrorWriter

# ---------------------------------------------------------------------
# Connector factory options
# - timeouts are in seconds
# ---------------------------------------------------------------------
apiman-gateway.connector-factory.http.timeouts.read=30
apiman-gateway.connector-factory.http.timeouts.write=30
apiman-gateway.connector-factory.http.timeouts.connect=10
apiman-gateway.connector-factory.http.followRedirects=true

# ---------------------------------------------------------------------
# Metrics Settings
# ---------------------------------------------------------------------

apiman-gateway.metrics=io.apiman.gateway.engine.jdbc.JdbcMetrics
apiman-gateway.metrics.datasource.jndi-location=${apiman-gateway.jdbc.jndi-location}

#apiman-gateway.metrics=io.apiman.gateway.engine.es.EsMetrics
#apiman-gateway.metrics.client.type=es
#apiman-gateway.metrics.client.protocol=${apiman.es.protocol}
#apiman-gateway.metrics.client.host=${apiman.es.host}
#apiman-gateway.metrics.client.port=${apiman.es.port}
#apiman-gateway.metrics.client.initialize=${apiman.es.initialize}
#apiman-gateway.metrics.client.username=${apiman.es.username}
#apiman-gateway.metrics.client.password=${apiman.es.password}
#apiman-gateway.metrics.client.timeout=${apiman.es.timeout}
#apiman-gateway.metrics.es.client.pollingTime=${apiman.es.pollingTime}
#apiman-gateway.metrics.client.keystore.path=${apiman.es.keystore.path}
#apiman-gateway.metrics.client.keystore.password=${apiman.es.keystore.password}
#apiman-gateway.metrics.client.truststore.path=${apiman.es.truststore.path}
#apiman-gateway.metrics.client.truststore.password=${apiman.es.truststore.password}
#apiman-gateway.metrics.client.allowSelfSigned=${apiman.es.allowSelfSigned}
#apiman-gateway.metrics.client.allowAnyHost=${apiman.es.allowAnyHost}

# ---------------------------------------------------------------------
# SSL/TLS settings for the gateway connector(s).
# ---------------------------------------------------------------------

# Enable devMode for HTTPS connections (gateway trusts any certificate).
# This should *NOT* be used in production mode. *Use with great care.*
apiman-gateway.connector-factory.tls.devMode=true

# Trust store contains certificate(s) trusted by gateway.
#apiman-gateway.connector-factory.tls.trustStore=<PATH_TO_TRUST_STORE>
#apiman-gateway.connector-factory.tls.trustStorePassword=<PASSWORD_IF_ANY>

# Key store contains gateway's keys (including private components: keep it safe).
#apiman-gateway.connector-factory.tls.keyStore=<PATH_TO_KEY_STORE>
#apiman-gateway.connector-factory.tls.keyStorePassword=<PASSWORD_IF_ANY> # Password on key store as a whole
#apiman-gateway.connector-factory.tls.keyPassword=<PASSWORD_IF_ANY> # Password on specific key(s)
# By default all keys can be used (will try all). If alias list provided, will only attempt to use listed keys.
#apiman-gateway.connector-factory.tls.keyAliases=<COMMA_SEPARATED_LIST>

# Allowed TLS/SSL protocols and ciphers suites as CSV. Availability will vary depending on your JVM impl.
# Uses JVM defaults depending if not explicitly provided.
# See: https://docs.oracle.com/javase/7/docs/technotes/guides/security/SunProviders.html
# You may wish to consider global JVM settings by modifying java.security
#apiman-gateway.connector-factory.tls.allowedProtocols=TLSv1.2\,TLSv1.1
#apiman-gateway.connector-factory.tls.disallowedProtocols=SSLv1\,SSLv2
#apiman-gateway.connector-factory.tls.allowedCiphers=TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA\,TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA
#apiman-gateway.connector-factory.tls.disallowedCiphers=RC4

# Whether certificate host checks should be bypassed. *Use with great care.*
#apiman-gateway.connector-factory.tls.allowAnyHost=false

# Whether self-signed certificates should be automatically trusted. *Use with great care.*
#apiman-gateway.connector-factory.tls.allowSelfSigned=false

# ---------------------------------------------------------------------
# Registry Settings
# ---------------------------------------------------------------------

apiman-gateway.registry=io.apiman.gateway.engine.jdbc.PollCachingJdbcRegistry
apiman-gateway.registry.datasource.jndi-location=${apiman-gateway.jdbc.jndi-location}
apiman-gateway.registry.cache-polling-interval=15

apiman-gateway.initializers=jdbc
apiman-gateway.initializers.jdbc=io.apiman.gateway.engine.jdbc.JdbcInitializer
apiman-gateway.initializers.jdbc.datasource.jndi-location=${apiman-gateway.jdbc.jndi-location}
apiman-gateway.initializers.jdbc.datasource.type=mysql

#apiman-gateway.registry=io.apiman.gateway.engine.es.PollCachingEsRegistry
#apiman-gateway.registry.client.type=${apiman.es.client.type}
#apiman-gateway.registry.client.protocol=${apiman.es.protocol}
#apiman-gateway.registry.client.host=${apiman.es.host}
#apiman-gateway.registry.client.port=${apiman.es.port}
#apiman-gateway.registry.client.initialize=${apiman.es.initialize}
#apiman-gateway.registry.client.username=${apiman.es.username}
#apiman-gateway.registry.client.password=${apiman.es.password}
#apiman-gateway.registry.client.timeout=${apiman.es.timeout}
#apiman-gateway.registry.client.pollingTime=${apiman.es.pollingTime}
#apiman-gateway.registry.client.keystore.path=${apiman.es.keystore.path}
#apiman-gateway.registry.client.keystore.password=${apiman.es.keystore.password}
#apiman-gateway.registry.client.truststore.path=${apiman.es.truststore.path}
#apiman-gateway.registry.client.truststore.password=${apiman.es.truststore.password}
#apiman-gateway.registry.cache-polling-interval=15
#apiman-gateway.registry.client.allowSelfSigned=${apiman.es.allowSelfSigned}
#apiman-gateway.registry.client.allowAnyHost=${apiman.es.allowAnyHost}

# ---------------------------------------------------------------------
# Shared State Component Settings
# ---------------------------------------------------------------------

apiman-gateway.components.ISharedStateComponent=io.apiman.gateway.engine.impl.InMemorySharedStateComponent

#apiman-gateway.components.ISharedStateComponent=io.apiman.gateway.engine.es.EsSharedStateComponent
#apiman-gateway.components.ISharedStateComponent.client.type=${apiman.es.client.type}
#apiman-gateway.components.ISharedStateComponent.client.protocol=${apiman.es.protocol}
#apiman-gateway.components.ISharedStateComponent.client.host=${apiman.es.host}
#apiman-gateway.components.ISharedStateComponent.client.port=${apiman.es.port}
#apiman-gateway.components.ISharedStateComponent.client.initialize=${apiman.es.initialize}
#apiman-gateway.components.ISharedStateComponent.client.username=${apiman.es.username}
#apiman-gateway.components.ISharedStateComponent.client.password=${apiman.es.password}
#apiman-gateway.components.ISharedStateComponent.client.timeout=${apiman.es.timeout}
#apiman-gateway.components.ISharedStateComponent.client.pollingTime=${apiman.es.pollingTime}
#apiman-gateway.components.ISharedStateComponent.client.keystore.path=${apiman.es.keystore.path}
#apiman-gateway.components.ISharedStateComponent.client.keystore.password=${apiman.es.keystore.password}
#apiman-gateway.components.ISharedStateComponent.client.truststore.path=${apiman.es.truststore.path}
#apiman-gateway.components.ISharedStateComponent.client.truststore.password=${apiman.es.truststore.password}
#apiman-gateway.components.ISharedStateComponent.client.allowSelfSigned=${apiman.es.allowSelfSigned}
#apiman-gateway.components.ISharedStateComponent.client.allowAnyHost=${apiman.es.allowAnyHost}


# ---------------------------------------------------------------------
# Rate Limiter Component Settings
# ---------------------------------------------------------------------

apiman-gateway.components.IRateLimiterComponent=io.apiman.gateway.engine.impl.InMemoryRateLimiterComponent

#apiman-gateway.components.IRateLimiterComponent=io.apiman.gateway.engine.es.EsRateLimiterComponent
#apiman-gateway.components.IRateLimiterComponent.client.type=${apiman.es.client.type}
#apiman-gateway.components.IRateLimiterComponent.client.protocol=${apiman.es.protocol}
#apiman-gateway.components.IRateLimiterComponent.client.host=${apiman.es.host}
#apiman-gateway.components.IRateLimiterComponent.client.port=${apiman.es.port}
#apiman-gateway.components.IRateLimiterComponent.client.initialize=${apiman.es.initialize}
#apiman-gateway.components.IRateLimiterComponent.client.username=${apiman.es.username}
#apiman-gateway.components.IRateLimiterComponent.client.password=${apiman.es.password}
#apiman-gateway.components.IRateLimiterComponent.client.timeout=${apiman.es.timeout}
#apiman-gateway.components.IRateLimiterComponent.client.pollingTime=${apiman.es.pollingTime}
#apiman-gateway.components.IRateLimiterComponent.client.keystore.path=${apiman.es.keystore.path}
#apiman-gateway.components.IRateLimiterComponent.client.keystore.password=${apiman.es.keystore.password}
#apiman-gateway.components.IRateLimiterComponent.client.truststore.path=${apiman.es.truststore.path}
#apiman-gateway.components.IRateLimiterComponent.client.truststore.password=${apiman.es.truststore.password}
#apiman-gateway.components.IRateLimiterComponent.client.allowSelfSigned=${apiman.es.allowSelfSigned}
#apiman-gateway.components.IRateLimiterComponent.client.allowAnyHost=${apiman.es.allowAnyHost}

# ---------------------------------------------------------------------
# Cache Store Component Settings
# ---------------------------------------------------------------------

apiman-gateway.components.ICacheStoreComponent=io.apiman.gateway.engine.impl.InMemoryCacheStoreComponent

#apiman-gateway.components.ICacheStoreComponent=io.apiman.gateway.engine.es.EsCacheStoreComponent
#apiman-gateway.components.ICacheStoreComponent.client.type=${apiman.es.client.type}
#apiman-gateway.components.ICacheStoreComponent.client.protocol=${apiman.es.protocol}
#apiman-gateway.components.ICacheStoreComponent.client.host=${apiman.es.host}
#apiman-gateway.components.ICacheStoreComponent.client.port=${apiman.es.port}
#apiman-gateway.components.ICacheStoreComponent.client.initialize=${apiman.es.initialize}
#apiman-gateway.components.ICacheStoreComponent.client.username=${apiman.es.username}
#apiman-gateway.components.ICacheStoreComponent.client.password=${apiman.es.password}
#apiman-gateway.components.ICacheStoreComponent.client.timeout=${apiman.es.timeout}
#apiman-gateway.components.ICacheStoreComponent.client.pollingTime=${apiman.es.pollingTime}
#apiman-gateway.components.ICacheStoreComponent.client.keystore.path=${apiman.es.keystore.path}
#apiman-gateway.components.ICacheStoreComponent.client.keystore.password=${apiman.es.keystore.password}
#apiman-gateway.components.ICacheStoreComponent.client.truststore.path=${apiman.es.truststore.path}
#apiman-gateway.components.ICacheStoreComponent.client.truststore.password=${apiman.es.truststore.password}
#apiman-gateway.components.ICacheStoreComponent.client.allowSelfSigned=${apiman.es.allowSelfSigned}
#apiman-gateway.components.ICacheStoreComponent.client.allowAnyHost=${apiman.es.allowAnyHost}

# ---------------------------------------------------------------------
# Execute Blocking Component Settings
# ---------------------------------------------------------------------
io.apiman.gateway.engine.components.IExecuteBlockingComponent=io.apiman.gateway.engine.impl.DefaultExecuteBlockingComponent

# ---------------------------------------------------------------------
# JDBC Component Settings
# ---------------------------------------------------------------------
apiman-gateway.components.IJdbcComponent=io.apiman.gateway.engine.impl.DefaultJdbcComponent

# ---------------------------------------------------------------------
# LDAP Component Settings
# ---------------------------------------------------------------------
apiman-gateway.components.ILdapComponent=io.apiman.gateway.engine.impl.DefaultLdapComponent

# ---------------------------------------------------------------------
# HTTP Client Component Settings
# ---------------------------------------------------------------------
apiman-gateway.components.IHttpClientComponent=io.apiman.gateway.platforms.servlet.components.HttpClientComponentImpl

/conf/web.xml

...
<resource-ref>
        <res-ref-name>jdbc/datasources/apiman-manager</res-ref-name>
        <res-type>javax.sql.DataSource</res-type>
        <res-auth>Container</res-auth>
    </resource-ref>
</web-app>

/conf/context.xml

<?xml version="1.0" encoding="UTF-8"?>
<!--
  Licensed to the Apache Software Foundation (ASF) under one or more
  contributor license agreements.  See the NOTICE file distributed with
  this work for additional information regarding copyright ownership.
  The ASF licenses this file to You under the Apache License, Version 2.0
  (the "License"); you may not use this file except in compliance with
  the License.  You may obtain a copy of the License at

      http://www.apache.org/licenses/LICENSE-2.0

  Unless required by applicable law or agreed to in writing, software
  distributed under the License is distributed on an "AS IS" BASIS,
  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  See the License for the specific language governing permissions and
  limitations under the License.
-->
<!-- The contents of this file will be loaded for each web application -->
<Context>

    <!-- Default set of monitored resources. If one of these changes, the    -->
    <!-- web application will be reloaded.                                   -->
    <WatchedResource>WEB-INF/web.xml</WatchedResource>
    <WatchedResource>WEB-INF/tomcat-web.xml</WatchedResource>
    <WatchedResource>${catalina.base}/conf/web.xml</WatchedResource>

    <!-- Uncomment this to disable session persistence across Tomcat restarts -->
    <!--
    <Manager pathname="" />
    -->
    <Resource name="jdbc/datasources/apiman-manager" auth="Container"
    type="javax.sql.DataSource"
                   maxTotal="100" maxIdle="30" maxWaitMillis="10000"
                   username="secupi" password="secupi"
    driverClassName="com.mysql.jdbc.Driver"
                   url="jdbc:mysql://192.168.100.56:3306/secupi"/>
         <ResourceLink global="jdbc/datasources/apiman-manager"
    name="jdbc/datasources/apiman-manager" type="javax.sql.DataSource"/>
</Context>

apiman.log

2022-07-18 14:37:01,109 INFO o.a.c.s.VersionLoggerListener [main] Server version name:   Apache Tomcat/9.0.64 
2022-07-18 14:37:01,111 INFO o.a.c.s.VersionLoggerListener [main] Server built:          Jun 2 2022 19:08:46 UTC 
2022-07-18 14:37:01,111 INFO o.a.c.s.VersionLoggerListener [main] Server version number: 9.0.64.0 
2022-07-18 14:37:01,111 INFO o.a.c.s.VersionLoggerListener [main] OS Name:               Linux 
2022-07-18 14:37:01,111 INFO o.a.c.s.VersionLoggerListener [main] OS Version:            3.10.0-1160.66.1.el7.x86_64 
2022-07-18 14:37:01,111 INFO o.a.c.s.VersionLoggerListener [main] Architecture:          amd64 
2022-07-18 14:37:01,111 INFO o.a.c.s.VersionLoggerListener [main] Java Home:             /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.332.b09-1.el7_9.x86_64/jre 
2022-07-18 14:37:01,111 INFO o.a.c.s.VersionLoggerListener [main] JVM Version:           1.8.0_332-b09 
2022-07-18 14:37:01,111 INFO o.a.c.s.VersionLoggerListener [main] JVM Vendor:            Red Hat, Inc. 
2022-07-18 14:37:01,115 INFO o.a.c.s.VersionLoggerListener [main] CATALINA_BASE:         /opt/tomcat 
2022-07-18 14:37:01,115 INFO o.a.c.s.VersionLoggerListener [main] CATALINA_HOME:         /opt/tomcat 
2022-07-18 14:37:01,116 INFO o.a.c.s.VersionLoggerListener [main] Command line argument: -Djava.util.logging.config.file=/opt/tomcat/conf/logging.properties 
2022-07-18 14:37:01,116 INFO o.a.c.s.VersionLoggerListener [main] Command line argument: -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager 
2022-07-18 14:37:01,116 INFO o.a.c.s.VersionLoggerListener [main] Command line argument: -Djava.awt.headless=true 
2022-07-18 14:37:01,116 INFO o.a.c.s.VersionLoggerListener [main] Command line argument: -Djava.security.egd=file:/dev/./urandom 
2022-07-18 14:37:01,116 INFO o.a.c.s.VersionLoggerListener [main] Command line argument: -Djdk.tls.ephemeralDHKeySize=2048 
2022-07-18 14:37:01,116 INFO o.a.c.s.VersionLoggerListener [main] Command line argument: -Djava.protocol.handler.pkgs=org.apache.catalina.webresources 
2022-07-18 14:37:01,116 INFO o.a.c.s.VersionLoggerListener [main] Command line argument: -Dorg.apache.catalina.security.SecurityListener.UMASK=0027 
2022-07-18 14:37:01,116 INFO o.a.c.s.VersionLoggerListener [main] Command line argument: -Xms512M 
2022-07-18 14:37:01,116 INFO o.a.c.s.VersionLoggerListener [main] Command line argument: -Xmx1024M 
2022-07-18 14:37:01,116 INFO o.a.c.s.VersionLoggerListener [main] Command line argument: -XX:+UseParallelGC 
2022-07-18 14:37:01,116 INFO o.a.c.s.VersionLoggerListener [main] Command line argument: -Dapiman.logger-delegate=log4j2 
2022-07-18 14:37:01,116 INFO o.a.c.s.VersionLoggerListener [main] Command line argument: -Dlog4j.configurationFile=/opt/tomcat/log4j2/conf/log4j2-tomcat.xml 
2022-07-18 14:37:01,116 INFO o.a.c.s.VersionLoggerListener [main] Command line argument: -Dorg.apache.logging.log4j.core.async.AsyncLoggerContextSelector=log4j2.contextSelector 
2022-07-18 14:37:01,116 INFO o.a.c.s.VersionLoggerListener [main] Command line argument: -Dignore.endorsed.dirs= 
2022-07-18 14:37:01,116 INFO o.a.c.s.VersionLoggerListener [main] Command line argument: -Dcatalina.base=/opt/tomcat 
2022-07-18 14:37:01,116 INFO o.a.c.s.VersionLoggerListener [main] Command line argument: -Dcatalina.home=/opt/tomcat 
2022-07-18 14:37:01,116 INFO o.a.c.s.VersionLoggerListener [main] Command line argument: -Djava.io.tmpdir=/opt/tomcat/temp 
2022-07-18 14:37:01,118 INFO o.a.c.c.AprLifecycleListener [main] The Apache Tomcat Native library which allows using OpenSSL was not found on the java.library.path: [/usr/java/packages/lib/amd64:/usr/lib64:/lib64:/lib:/usr/lib] 
2022-07-18 14:37:01,402 INFO o.a.c.h.Http11NioProtocol [main] Initializing ProtocolHandler ["http-nio-8080"] 
2022-07-18 14:37:01,442 INFO o.a.c.h.Http11NioProtocol [main] Initializing ProtocolHandler ["https-jsse-nio-8443"] 
2022-07-18 14:37:01,697 INFO o.a.c.s.Catalina [main] Server initialization in [749] milliseconds 
2022-07-18 14:37:01,729 INFO o.a.c.c.StandardService [main] Starting service [Catalina] 
2022-07-18 14:37:01,729 INFO o.a.c.c.StandardEngine [main] Starting Servlet engine: [Apache Tomcat/9.0.64] 
2022-07-18 14:37:01,750 INFO o.a.c.s.HostConfig [main] Deploying web application archive [/opt/tomcat/webapps/apimanui.war] 
2022-07-18 14:37:02,780 INFO o.a.j.s.TldScanner [main] At least one JAR was scanned for TLDs yet contained no TLDs. Enable debug logging for this logger for a complete list of JARs that were scanned but no TLDs were found in them. Skipping unneeded JARs during scanning can improve startup time and JSP compilation time. 
2022-07-18 14:37:02,828 INFO o.a.c.s.HostConfig [main] Deployment of web application archive [/opt/tomcat/webapps/apimanui.war] has finished in [1,077] ms 
2022-07-18 14:37:02,828 INFO o.a.c.s.HostConfig [main] Deploying web application archive [/opt/tomcat/webapps/apiman.war] 
2022-07-18 14:37:07,176 INFO o.a.j.s.TldScanner [main] At least one JAR was scanned for TLDs yet contained no TLDs. Enable debug logging for this logger for a complete list of JARs that were scanned but no TLDs were found in them. Skipping unneeded JARs during scanning can improve startup time and JSP compilation time. 
2022-07-18 14:37:10,485 INFO o.a.c.s.HostConfig [main] Deployment of web application archive [/opt/tomcat/webapps/apiman.war] has finished in [7,657] ms 
2022-07-18 14:37:10,485 INFO o.a.c.s.HostConfig [main] Deploying web application archive [/opt/tomcat/webapps/apiman-gateway-api.war] 
2022-07-18 14:37:14,285 INFO o.a.j.s.TldScanner [main] At least one JAR was scanned for TLDs yet contained no TLDs. Enable debug logging for this logger for a complete list of JARs that were scanned but no TLDs were found in them. Skipping unneeded JARs during scanning can improve startup time and JSP compilation time. 
2022-07-18 14:37:15,473 ERROR o.a.c.c.C.[.[.[/apiman-gateway-api] [main] Exception sending context initialized event to listener instance of class [io.apiman.gateway.platforms.war.listeners.WarGatewayBootstrapper] java.lang.RuntimeException: java.lang.reflect.InvocationTargetException
	at io.apiman.gateway.engine.impl.ConfigDrivenEngineFactory.instantiate(ConfigDrivenEngineFactory.java:241)
	at io.apiman.gateway.engine.impl.ConfigDrivenEngineFactory.doInstantiate(ConfigDrivenEngineFactory.java:225)
	at io.apiman.gateway.engine.impl.ConfigDrivenEngineFactory.create(ConfigDrivenEngineFactory.java:185)
	at io.apiman.gateway.engine.impl.ConfigDrivenEngineFactory.createRegistry(ConfigDrivenEngineFactory.java:103)
	at io.apiman.gateway.engine.impl.AbstractEngineFactory.createEngine(AbstractEngineFactory.java:56)
	at io.apiman.gateway.platforms.war.WarGateway.init(WarGateway.java:55)
	at io.apiman.gateway.platforms.war.listeners.WarGatewayBootstrapper.contextInitialized(WarGatewayBootstrapper.java:42)
	at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4768)
	at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5230)
	at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
	at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:726)
	at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:698)
	at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:696)
	at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:1024)
	at org.apache.catalina.startup.HostConfig$DeployWar.run(HostConfig.java:1911)
	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
	at java.util.concurrent.FutureTask.run(FutureTask.java:266)
	at org.apache.tomcat.util.threads.InlineExecutorService.execute(InlineExecutorService.java:75)
	at java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:112)
	at org.apache.catalina.startup.HostConfig.deployWARs(HostConfig.java:825)
	at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:475)
	at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1618)
	2022-07-18 14:38:08,055 INFO o.r.Reflections [http-nio-8080-exec-7] Reflections took 13 ms to scan 3 urls, producing 130 keys and 211 values  
2022-07-18 14:38:08,786 INFO o.j.r.r.i18n [http-nio-8080-exec-7] RESTEASY002225: Deploying javax.ws.rs.core.Application: class io.apiman.manager.api.war.tomcat8.Tomcat8ApiManagerApplication$Proxy$_$$_WeldClientProxy 
2022-07-18 14:38:08,797 INFO o.r.Reflections [http-nio-8080-exec-7] Reflections took 11 ms to scan 3 urls, producing 130 keys and 211 values  
2022-07-18 14:38:09,070 INFO o.j.r.r.i18n [http-nio-8080-exec-7] RESTEASY002200: Adding class resource io.apiman.manager.api.rest.impl.SystemResourceImpl from Application class io.apiman.manager.api.war.tomcat8.Tomcat8ApiManagerApplication$Proxy$_$$_WeldClientProxy 
2022-07-18 14:38:09,071 INFO o.j.r.r.i18n [http-nio-8080-exec-7] RESTEASY002200: Adding class resource io.apiman.manager.api.rest.impl.GatewayResourceImpl from Application class io.apiman.manager.api.war.tomcat8.Tomcat8ApiManagerApplication$Proxy$_$$_WeldClientProxy 
2022-07-18 14:38:09,071 INFO o.j.r.r.i18n [http-nio-8080-exec-7] RESTEASY002200: Adding class resource io.apiman.manager.api.rest.impl.UserResourceImpl from Application class io.apiman.manager.api.war.tomcat8.Tomcat8ApiManagerApplication$Proxy$_$$_WeldClientProxy 
2022-07-18 14:38:09,071 INFO o.j.r.r.i18n [http-nio-8080-exec-7] RESTEASY002205: Adding provider class io.swagger.jaxrs.listing.SwaggerSerializers from Application class io.apiman.manager.api.war.tomcat8.Tomcat8ApiManagerApplication$Proxy$_$$_WeldClientProxy 
2022-07-18 14:38:09,071 INFO o.j.r.r.i18n [http-nio-8080-exec-7] RESTEASY002200: Adding class resource io.apiman.manager.api.rest.impl.SearchResourceImpl from Application class io.apiman.manager.api.war.tomcat8.Tomcat8ApiManagerApplication$Proxy$_$$_WeldClientProxy 
2022-07-18 14:38:09,071 INFO o.j.r.r.i18n [http-nio-8080-exec-7] RESTEASY002200: Adding class resource io.apiman.manager.api.rest.impl.PluginResourceImpl from Application class io.apiman.manager.api.war.tomcat8.Tomcat8ApiManagerApplication$Proxy$_$$_WeldClientProxy 
2022-07-18 14:38:09,071 INFO o.j.r.r.i18n [http-nio-8080-exec-7] RESTEASY002200: Adding class resource io.apiman.manager.api.rest.impl.DeveloperResourceImpl from Application class io.apiman.manager.api.war.tomcat8.Tomcat8ApiManagerApplication$Proxy$_$$_WeldClientProxy 
2022-07-18 14:38:09,071 INFO o.j.r.r.i18n [http-nio-8080-exec-7] RESTEASY002200: Adding class resource io.apiman.manager.api.rest.impl.OrganizationResourceImpl from Application class io.apiman.manager.api.war.tomcat8.Tomcat8ApiManagerApplication$Proxy$_$$_WeldClientProxy 
2022-07-18 14:38:09,071 INFO o.j.r.r.i18n [http-nio-8080-exec-7] RESTEASY002200: Adding class resource io.apiman.manager.api.rest.impl.ActionResourceImpl from Application class io.apiman.manager.api.war.tomcat8.Tomcat8ApiManagerApplication$Proxy$_$$_WeldClientProxy 
2022-07-18 14:38:09,071 INFO o.j.r.r.i18n [http-nio-8080-exec-7] RESTEASY002200: Adding class resource io.apiman.manager.api.rest.impl.DownloadResourceImpl from Application class io.apiman.manager.api.war.tomcat8.Tomcat8ApiManagerApplication$Proxy$_$$_WeldClientProxy 
2022-07-18 14:38:09,071 INFO o.j.r.r.i18n [http-nio-8080-exec-7] RESTEASY002200: Adding class resource io.swagger.jaxrs.listing.ApiListingResource from Application class io.apiman.manager.api.war.tomcat8.Tomcat8ApiManagerApplication$Proxy$_$$_WeldClientProxy 
2022-07-18 14:38:09,071 INFO o.j.r.r.i18n [http-nio-8080-exec-7] RESTEASY002200: Adding class resource io.apiman.manager.api.rest.impl.PolicyDefinitionResourceImpl from Application class io.apiman.manager.api.war.tomcat8.Tomcat8ApiManagerApplication$Proxy$_$$_WeldClientProxy 
2022-07-18 14:38:09,071 INFO o.j.r.r.i18n [http-nio-8080-exec-7] RESTEASY002205: Adding provider class io.apiman.manager.api.rest.exceptions.mappers.RestExceptionMapper from Application class io.apiman.manager.api.war.tomcat8.Tomcat8ApiManagerApplication$Proxy$_$$_WeldClientProxy 
2022-07-18 14:38:09,071 INFO o.j.r.r.i18n [http-nio-8080-exec-7] RESTEASY002200: Adding class resource io.apiman.manager.api.rest.impl.RoleResourceImpl from Application class io.apiman.manager.api.war.tomcat8.Tomcat8ApiManagerApplication$Proxy$_$$_WeldClientProxy 
2022-07-18 14:38:09,640 WARN i.a.c.a.AuthTokenUtil [http-nio-8080-exec-7] Missing a Shared-Secret source for auth-token style authentication.  Defaulting to insecure, hard-coded value. 
2022-07-18 14:38:09,865 INFO o.h.h.i.QueryTranslatorFactoryInitiator [http-nio-8080-exec-7] HHH000397: Using ASTQueryTranslatorFactory 
cation [apiman-gateway-api] appears to have started a thread named [Log4j2-TF-2-AsyncLoggerConfig-1] but has failed to stop it. This is very likely to create a memory leak. Stack trace of thread:
 sun.misc.Unsafe.park(Native Method)
 java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:215)
 java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos(AbstractQueuedSynchronizer.java:2078)
 com.lmax.disruptor.TimeoutBlockingWaitStrategy.waitFor(TimeoutBlockingWaitStrategy.java:38)
 com.lmax.disruptor.ProcessingSequenceBarrier.waitFor(ProcessingSequenceBarrier.java:56)
 com.lmax.disruptor.BatchEventProcessor.processEvents(BatchEventProcessor.java:159)
 com.lmax.disruptor.BatchEventProcessor.run(BatchEventProcessor.java:125)
 java.lang.Thread.run(Thread.java:750) 
2022-07-18 14:37:15,692 WARN o.a.c.l.WebappClassLoaderBase [main] The web application [apiman-gateway-api] appears to have started a thread named [Thread-6] but has failed to stop it. This is very likely to create a memory leak. Stack trace of thread:
 sun.nio.fs.LinuxWatchService.poll(Native Method)
 sun.nio.fs.LinuxWatchService.access$600(LinuxWatchService.java:47)
 sun.nio.fs.LinuxWatchService$Poller.run(LinuxWatchService.java:314)
 java.lang.Thread.run(Thread.java:750) 
2022-07-18 14:37:15,693 WARN o.a.c.l.WebappClassLoaderBase [main] The web application [apiman-gateway-api] appears to have started a thread named [Thread-7] but has failed to stop it. This is very likely to create a memory leak. Stack trace of thread:
 sun.misc.Unsafe.park(Native Method)
 java.util.concurrent.locks.LockSupport.park(LockSupport.java:175)
 java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2039)
 java.util.concurrent.LinkedBlockingDeque.takeFirst(LinkedBlockingDeque.java:492)
 java.util.concurrent.LinkedBlockingDeque.take(LinkedBlockingDeque.java:680)
 sun.nio.fs.AbstractWatchService.take(AbstractWatchService.java:118)
 io.apiman.common.logging.change.LogFileConfigManager.doPollingLoop(LogFileConfigManager.java:107)
 io.apiman.common.logging.change.LogFileConfigManager.lambda$watch$0(LogFileConfigManager.java:82)
 io.apiman.common.logging.change.LogFileConfigManager$$Lambda$301/143567646.run(Unknown Source)
 java.lang.Thread.run(Thread.java:750) 
2022-07-18 14:37:15,707 INFO o.a.c.s.HostConfig [main] Deployment of web application archive [/opt/tomcat/webapps/apiman-gateway-api.war] has finished in [5,222] ms 
2022-07-18 14:37:15,708 INFO o.a.c.s.HostConfig [main] Deploying web application archive [/opt/tomcat/webapps/apiman-gateway.war] 
2022-07-18 14:37:18,511 INFO o.a.j.s.TldScanner [main] At least one JAR was scanned for TLDs yet contained no TLDs. Enable debug logging for this logger for a complete list of JARs that were scanned but no TLDs were found in them. Skipping unneeded JARs during scanning can improve startup time and JSP compilation time. 
2022-07-18 14:37:19,296 ERROR o.a.c.c.C.[.[.[/apiman-gateway] [main] Exception sending context initialized event to listener instance of class [io.apiman.gateway.platforms.war.listeners.WarGatewayBootstrapper] java.lang.RuntimeException: java.lang.reflect.InvocationTargetException
	at io.apiman.gateway.engine.impl.ConfigDrivenEngineFactory.instantiate(ConfigDrivenEngineFactory.java:241)
	at io.apiman.gateway.engine.impl.ConfigDrivenEngineFactory.doInstantiate(ConfigDrivenEngineFactory.java:225)
	at io.apiman.gateway.engine.impl.ConfigDrivenEngineFactory.create(ConfigDrivenEngineFactory.java:185)
	at io.apiman.gateway.engine.impl.ConfigDrivenEngineFactory.createRegistry(ConfigDrivenEngineFactory.java:103)
	at io.apiman.gateway.engine.impl.AbstractEngineFactory.createEngine(AbstractEngineFactory.java:56)
	at io.apiman.gateway.platforms.war.WarGateway.init(WarGateway.java:55)
	at io.apiman.gateway.platforms.war.listeners.WarGatewayBootstrapper.contextInitialized(WarGatewayBootstrapper.java:42)
	at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4768)
	at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5230)
	at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
	at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:726)
	at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:698)
	at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:696)
	at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:1024)
	at org.apache.catalina.startup.HostConfig$DeployWar.run(HostConfig.java:1911)
	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
	at java.util.concurrent.FutureTask.run(FutureTask.java:266)
	at org.apache.tomcat.util.threads.InlineExecutorService.execute(InlineExecutorService.java:75)
	at java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:112)
	at org.apache.catalina.startup.HostConfig.deployWARs(HostConfig.java:825)
	at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:475)
	at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1618)
	at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:319)
	at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:123)
	at org.apache.catalina.util.LifecycleBase.setStateInternal(LifecycleBase.java:423)
	at org.apache.catalina.util.LifecycleBase.setState(LifecycleBase.java:366)
	at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:946)
	at org.apache.catalina.core.StandardHost.startInternal(StandardHost.java:835)
	at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
	at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1396)
	at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1386)
	at java.util.concurrent.FutureTask.run(FutureTask.java:266)
	at org.apache.tomcat.util.threads.InlineExecutorService.execute(InlineExecutorService.java:75)
	at java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:134)
	at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:919)
	at org.apache.catalina.core.StandardEngine.startInternal(StandardEngine.java:263)
	at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
	at org.apache.catalina.core.StandardService.startInternal(StandardService.java:432)
	at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
	at org.apache.catalina.core.StandardServer.startInternal(StandardServer.java:930)
	at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
	at org.apache.catalina.startup.Catalina.start(Catalina.java:772)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:345)
	at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:476)
Caused by: java.lang.reflect.InvocationTargetException
	at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
	at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
	at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
	at io.apiman.gateway.engine.impl.ConfigDrivenEngineFactory.instantiate(ConfigDrivenEngineFactory.java:238)
	... 47 more
Caused by: java.lang.RuntimeException: javax.naming.NameNotFoundException: Name [apiman-gateway] is not bound in this Context. Unable to find [apiman-gateway].
	at io.apiman.gateway.engine.jdbc.AbstractJdbcComponent.lookupDS(AbstractJdbcComponent.java:56)
	at io.apiman.gateway.engine.jdbc.AbstractJdbcComponent.<init>(AbstractJdbcComponent.java:43)
	at io.apiman.gateway.engine.jdbc.JdbcRegistry.<init>(JdbcRegistry.java:73)
	at io.apiman.gateway.engine.jdbc.CachingJdbcRegistry.<init>(CachingJdbcRegistry.java:50)
	at io.apiman.gateway.engine.jdbc.PollCachingJdbcRegistry.<init>(PollCachingJdbcRegistry.java:62)
	... 52 more
Caused by: javax.naming.NameNotFoundException: Name [apiman-gateway] is not bound in this Context. Unable to find [apiman-gateway].
	at org.apache.naming.NamingContext.lookup(NamingContext.java:840)
	at org.apache.naming.NamingContext.lookup(NamingContext.java:158)
	at org.apache.naming.NamingContext.lookup(NamingContext.java:850)
	at org.apache.naming.NamingContext.lookup(NamingContext.java:158)
	at org.apache.naming.NamingContext.lookup(NamingContext.java:850)
	at org.apache.naming.NamingContext.lookup(NamingContext.java:158)
	at org.apache.naming.NamingContext.lookup(NamingContext.java:850)
	at org.apache.naming.NamingContext.lookup(NamingContext.java:158)
	at org.apache.naming.NamingContext.lookup(NamingContext.java:850)
	at org.apache.naming.NamingContext.lookup(NamingContext.java:172)
	at org.apache.naming.SelectorContext.lookup(SelectorContext.java:161)
	at javax.naming.InitialContext.lookup(InitialContext.java:417)
	at io.apiman.gateway.engine.jdbc.AbstractJdbcComponent.lookupDS(AbstractJdbcComponent.java:54)
	... 56 more

2022-07-18 14:37:19,299 ERROR o.a.c.c.StandardContext [main] One or more listeners failed to start. Full details will be found in the appropriate container log file 
2022-07-18 14:37:19,301 ERROR o.a.c.c.StandardContext [main] Context [/apiman-gateway] startup failed due to previous errors 
2022-07-18 14:37:19,316 WARN o.a.c.l.WebappClassLoaderBase [main] The web application [apiman-gateway] appears to have started a thread named [Log4j2-TF-2-AsyncLoggerConfig-1] but has failed to stop it. This is very likely to create a memory leak. Stack trace of thread:
 sun.misc.Unsafe.park(Native Method)
 java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:215)
 java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos(AbstractQueuedSynchronizer.java:2078)
 com.lmax.disruptor.TimeoutBlockingWaitStrategy.waitFor(TimeoutBlockingWaitStrategy.java:38)
 com.lmax.disruptor.ProcessingSequenceBarrier.waitFor(ProcessingSequenceBarrier.java:56)
 com.lmax.disruptor.BatchEventProcessor.processEvents(BatchEventProcessor.java:159)
 com.lmax.disruptor.BatchEventProcessor.run(BatchEventProcessor.java:125)
 java.lang.Thread.run(Thread.java:750) 
2022-07-18 14:37:19,318 WARN o.a.c.l.WebappClassLoaderBase [main] The web application [apiman-gateway] appears to have started a thread named [Thread-8] but has failed to stop it. This is very likely to create a memory leak. Stack trace of thread:
 sun.nio.fs.LinuxWatchService.poll(Native Method)
 sun.nio.fs.LinuxWatchService.access$600(LinuxWatchService.java:47)
 sun.nio.fs.LinuxWatchService$Poller.run(LinuxWatchService.java:314)
 java.lang.Thread.run(Thread.java:750) 
2022-07-18 14:37:19,319 WARN o.a.c.l.WebappClassLoaderBase [main] The web application [apiman-gateway] appears to have started a thread named [Thread-9] but has failed to stop it. This is very likely to create a memory leak. Stack trace of thread:
 sun.misc.Unsafe.park(Native Method)
 java.util.concurrent.locks.LockSupport.park(LockSupport.java:175)
 java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2039)
 java.util.concurrent.LinkedBlockingDeque.takeFirst(LinkedBlockingDeque.java:492)
 java.util.concurrent.LinkedBlockingDeque.take(LinkedBlockingDeque.java:680)
 sun.nio.fs.AbstractWatchService.take(AbstractWatchService.java:118)
 io.apiman.common.logging.change.LogFileConfigManager.doPollingLoop(LogFileConfigManager.java:107)
 io.apiman.common.logging.change.LogFileConfigManager.lambda$watch$0(LogFileConfigManager.java:82)
 io.apiman.common.logging.change.LogFileConfigManager$$Lambda$325/1475672147.run(Unknown Source)
 java.lang.Thread.run(Thread.java:750) 
2022-07-18 14:37:19,323 INFO o.a.c.s.HostConfig [main] Deployment of web application archive [/opt/tomcat/webapps/apiman-gateway.war] has finished in [3,615] ms 
2022-07-18 14:37:19,323 INFO o.a.c.s.HostConfig [main] Deploying web application directory [/opt/tomcat/webapps/ROOT] 
2022-07-18 14:37:19,518 INFO o.a.j.s.TldScanner [main] At least one JAR was scanned for TLDs yet contained no TLDs. Enable debug logging for this logger for a complete list of JARs that were scanned but no TLDs were found in them. Skipping unneeded JARs during scanning can improve startup time and JSP compilation time. 
2022-07-18 14:37:19,519 INFO o.a.c.s.HostConfig [main] Deployment of web application directory [/opt/tomcat/webapps/ROOT] has finished in [196] ms 
2022-07-18 14:37:19,519 INFO o.a.c.s.HostConfig [main] Deploying web application directory [/opt/tomcat/webapps/docs] 
2022-07-18 14:37:19,743 INFO o.a.j.s.TldScanner [main] At least one JAR was scanned for TLDs yet contained no TLDs. Enable debug logging for this logger for a complete list of JARs that were scanned but no TLDs were found in them. Skipping unneeded JARs during scanning can improve startup time and JSP compilation time. 
2022-07-18 14:37:19,746 INFO o.a.c.s.HostConfig [main] Deployment of web application directory [/opt/tomcat/webapps/docs] has finished in [227] ms 
2022-07-18 14:37:19,747 INFO o.a.c.s.HostConfig [main] Deploying web application directory [/opt/tomcat/webapps/examples] 
2022-07-18 14:37:20,072 INFO o.a.j.s.TldScanner [main] At least one JAR was scanned for TLDs yet contained no TLDs. Enable debug logging for this logger for a complete list of JARs that were scanned but no TLDs were found in them. Skipping unneeded JARs during scanning can improve startup time and JSP compilation time. 
2022-07-18 14:37:20,099 INFO o.a.c.c.C.[.[.[/examples] [main] ContextListener: contextInitialized() 
2022-07-18 14:37:20,099 INFO o.a.c.c.C.[.[.[/examples] [main] SessionListener: contextInitialized() 
2022-07-18 14:37:20,100 INFO o.a.c.c.C.[.[.[/examples] [main] ContextListener: attributeAdded('StockTicker', 'async.Stockticker@4065c0fe') 
2022-07-18 14:37:20,107 INFO o.a.c.s.HostConfig [main] Deployment of web application directory [/opt/tomcat/webapps/examples] has finished in [360] ms 
2022-07-18 14:37:20,107 INFO o.a.c.s.HostConfig [main] Deploying web application directory [/opt/tomcat/webapps/host-manager] 
2022-07-18 14:37:20,314 INFO o.a.j.s.TldScanner [main] At least one JAR was scanned for TLDs yet contained no TLDs. Enable debug logging for this logger for a complete list of JARs that were scanned but no TLDs were found in them. Skipping unneeded JARs during scanning can improve startup time and JSP compilation time. 
2022-07-18 14:37:20,319 INFO o.a.c.s.HostConfig [main] Deployment of web application directory [/opt/tomcat/webapps/host-manager] has finished in [212] ms 
2022-07-18 14:37:20,319 INFO o.a.c.s.HostConfig [main] Deploying web application directory [/opt/tomcat/webapps/manager] 
2022-07-18 14:37:20,570 INFO o.a.j.s.TldScanner [main] At least one JAR was scanned for TLDs yet contained no TLDs. Enable debug logging for this logger for a complete list of JARs that were scanned but no TLDs were found in them. Skipping unneeded JARs during scanning can improve startup time and JSP compilation time. 
2022-07-18 14:37:20,572 INFO o.a.c.s.HostConfig [main] Deployment of web application directory [/opt/tomcat/webapps/manager] has finished in [252] ms 
2022-07-18 14:37:20,578 INFO o.a.c.h.Http11NioProtocol [main] Starting ProtocolHandler ["http-nio-8080"] 
2022-07-18 14:37:20,592 INFO o.a.c.h.Http11NioProtocol [main] Starting ProtocolHandler ["https-jsse-nio-8443"] 
2022-07-18 14:37:20,595 INFO o.a.c.s.Catalina [main] Server startup in [18897] milliseconds 
2022-07-18 14:38:06,476 WARN i.a.c.a.AuthTokenUtil [http-nio-8080-exec-4] Missing a Shared-Secret source for auth-token style authentication.  Defaulting to insecure, hard-coded value. 

Dependency Dashboard

This issue lists Renovate updates and detected dependencies. Read the Dependency Dashboard docs to learn more.

Open

These updates have all been created already. Click a checkbox below to force a retry/rebase of any.

Ignored or Blocked

These are blocked by an existing closed PR and will not be recreated unless you click a checkbox below.

Detected dependencies

docker-compose
docker-compose/src/docker/docker-compose.setup.yml
docker-compose/src/docker/docker-compose.yml
  • postgres 14.6
  • elasticsearch 7.17.8
  • quay.io/keycloak/keycloak 18.0.2
  • maildev/maildev 2.0.5
  • traefik v2.8.3
vertx-openshift/docker-compose.yml
  • docker.elastic.co/elasticsearch/elasticsearch 7.17.8
dockerfile
cli/Dockerfile
  • openjdk 8
  • openjdk 8-jre-alpine
migration-assistant/Dockerfile
on-wildfly/Dockerfile
tomcat-manager/Dockerfile
  • tomcat 9.0.70-jdk11-temurin
vertx-gateway/Dockerfile
  • eclipse-temurin 11.0.17_8-jre-alpine
vertx-openshift/Dockerfile
  • jboss/base-jdk 11
vertx-standalone/Dockerfile
  • apiman/cli 0.4.0
  • openjdk 8
wildfly-manager/Dockerfile
github-actions
.github/workflows/docker-test-release.yml
  • actions/checkout v3
  • docker/login-action v2
  • docker/login-action v2
  • docker/build-push-action v3
.github/workflows/pull-request-verify.yml
  • actions/checkout v3
.github/workflows/receive-dispatch-update-release-version.yml
  • actions/checkout v3
  • EndBug/add-and-commit v7.2.1
.github/workflows/receive-dispatch-update-snapshot-version.yml
  • actions/checkout v3
  • EndBug/add-and-commit v7.2.1
.github/workflows/trigger-release-from-file.yml
  • actions/checkout v3
  • actions/setup-java v3
  • EndBug/add-and-commit v9.1.1
  • softprops/action-gh-release v1
.github/workflows/trigger-snapshot-from-file.yml
  • actions/checkout v3
maven
docker-compose/pom.xml
  • io.apiman:apiman-docker 3.1.0-SNAPSHOT
pom.xml
  • io.apiman:apiman-parent 3.1.0-SNAPSHOT
  • org.passay:passay 1.6.2

  • Check this box to trigger a request for Renovate to run again on this repository

Unify Base Images

We should decide on a base JDK for builds and a small and light JRE image for runtime.

Persistent apiman/on-wildfly

Hello everyone,
first of all thank you for the great job done with APIMAN!

Is there an easy way (volumes?) to make the apiman/on-wildfly version persistent?
At each container reboot all the Keycloak and APIMAN configurations are lost.

Thank you so much

Сontainer not started

When I try to run the container with the command: docker run -it -p 58082:8082 --name APIMan-Vertx -v $PWD/examples/apis:/opt/apiman/apis -v $PWD/examples/configs:/opt/apiman/configs apiman/vertx-standalone sample.yml

I do not understand where to get the file all.json
The image was built in Windows. The version of Docker: 18.03.1-ce
Then the container started in Linux. The version of Docker: 1.13.1

I get:

INFO  A plugin has been specified without a friendly name. References must be by its full coordinates: io.apiman.plugins:apiman-plugins-test-policy:1.3.1.Final:war
ERROR Error applying declaration: java.nio.file.AccessDeniedException: /opt/apiman/apis/all.json
Usage: apiman-cli gateway generate headless [--debug] [--declarationFile, -f] [--help, -h] [--outputFile, -o] [--propertiesFile] [--stdout] [--waitTime, -w] [-P]
The following arguments are available:

   --debug: Log at DEBUG level
   --declarationFile, -f: Declaration file
   --help, -h: Display usage only
   --outputFile, -o: Output file(s) or directory. If a directory is provided a filename will be generated. [default: []]
   --propertiesFile: Properties file
   --stdout: Output definition to STDOUT (implied if no outputFile is specified)
   --waitTime, -w: Server startup wait time (seconds) [default: 0]
   -P: Set property (key=value) 


Docker-Image needs root rights

It seems like the given docker-image needs root rights in order to run properly. In our openshift-cluster we restrict per default root rights. When I run the tocker-image, I get an error, that a directory does not exist. When I start the Image in openshift with root-privileges, it boots-up without an error.

I would expect, that the Image can run without root rights.

error on docker compose files or missing instructions

Hello.

I have some problems to run docker compose with apiman and keycloak from this repository. As i understand i must to do some other things except execute "docker compose ..setup..." and "docker compose up " because docker-compose.yml file has strings like this "image: apiman/wildfly-manager:${project.version}" which causes error

invalid interpolation format for services.apiman-gateway.image.
You may need to escape any $ with another $.
apiman/vertx-gateway:${project.version}

Also in this file exists bind directive to file "$PWD/data/apiman-keycloak-theme.jar"" which is missing.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.