apiman / apiman-docker Goto Github PK
View Code? Open in Web Editor NEWContains docker related assets for apiman.
License: Apache License 2.0
Contains docker related assets for apiman.
License: Apache License 2.0
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?
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)
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)
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
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)
@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 :(
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.
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)
Docker image for the 1.5.1.Final release is available on Docker Hub as per documentation.
Can you update apiman-docker from http->https?
Example
http://cdn.rawgit.com/apiman/apiman-api-catalog/1.3.1.Final/catalog.json
-> https://cdn.rawgit.com/apiman/apiman-api-catalog/1.3.1.Final/catalog.json
plugin,...
Thanks you 👍
We should decide on a base JDK for builds and a small and light JRE image for runtime.
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.
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
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
See #8
Relates to apiman/apiman#985
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
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
Include the developer portal into the quickstart.
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
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
admin
and apimanager
passwords if no default is provided?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!
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
Hi everyone, i found this error via apimanui when i publish new api. What i do wrong?
apiman.log
Info
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.
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.
This issue lists Renovate updates and detected dependencies. Read the Dependency Dashboard docs to learn more.
These updates have all been created already. Click a checkbox below to force a retry/rebase of any.
These are blocked by an existing closed PR and will not be recreated unless you click a checkbox below.
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
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/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
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
The module refers to version apiman-docker:3.0.0-Final
as the parent even though the parent version has been bumped to 3.1.0-SNAPSHOT.
Maven wasn't able to resolve the dependency when pulled using IntelliJ.
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
Print a deprecation warning for images no longer maintained as we seem to have a lot of people still accidentally using them.
Hi,
in the docs of the vertx standalone it says that the image is on docker hub but its not. Is this for a particular reason like that its just not meant to be used yet or is it just missing?
Thank you very much,
Christian
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.