refactor: bring tomcat distro back
Closes:
MODIFY
distro/pom.xml
distro/pom.xml
<modules>
<module>wildfly</module>
<module>vertx</module>
+ <module>tomcat</module>
</modules>
</profile>
</profiles>

ADD
distro/tomcat/pom.xml
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <groupId>io.apiman</groupId>
+ <artifactId>apiman-distro</artifactId>
+ <version>2.0.1-SNAPSHOT</version>
+ <relativePath>../pom.xml</relativePath>
+ </parent>
+ <artifactId>apiman-distro-tomcat</artifactId>
+ <packaging>pom</packaging>
+ <name>apiman-distro-tomcat</name>
+
+ <dependencies>
+ <!-- The Tomcat 8 version of APIMan -->
+ <dependency>
+ <groupId>${project.groupId}</groupId>
+ <artifactId>apiman-manager-api-war-tomcat8</artifactId>
+ <type>war</type>
+ </dependency>
+ <dependency>
+ <groupId>${project.groupId}</groupId>
+ <artifactId>apiman-manager-ui-war-tomcat8</artifactId>
+ <type>war</type>
+ </dependency>
+ <dependency>
+ <groupId>${project.groupId}</groupId>
+ <artifactId>apiman-gateway-platforms-war-tomcat8-api</artifactId>
+ <type>war</type>
+ </dependency>
+ <dependency>
+ <groupId>${project.groupId}</groupId>
+ <artifactId>apiman-gateway-platforms-war-tomcat8-gateway</artifactId>
+ <type>war</type>
+ </dependency>
+ <dependency>
+ <groupId>${project.groupId}</groupId>
+ <artifactId>apiman-distro-data</artifactId>
+ </dependency>
+ </dependencies>
+
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-deploy-plugin</artifactId>
+ <configuration>
+ <skip>true</skip>
+ </configuration>
+ </plugin>
+ <plugin>
+ <artifactId>maven-assembly-plugin</artifactId>
+ <executions>
+ <execution>
+ <id>overlay</id>
+ <phase>package</phase>
+ <goals>
+ <goal>single</goal>
+ </goals>
+ <configuration>
+ <attach>true</attach>
+ <descriptors>
+ <descriptor>src/main/assembly/overlay.xml</descriptor>
+ </descriptors>
+ <archiverConfig>
+ <defaultDirectoryMode>0755</defaultDirectoryMode>
+ </archiverConfig>
+ <archiveBaseDirectory>${project.basedir}</archiveBaseDirectory>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
+</project>

ADD
distro/tomcat/src/main/assembly/overlay.xml
+<assembly xmlns="http://maven.apache.org/ASSEMBLY/2.1.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/ASSEMBLY/2.1.0 http://maven.apache.org/xsd/assembly-2.1.0.xsd">
+ <id>overlay</id>
+ <formats>
+ <format>zip</format>
+ </formats>
+ <includeBaseDirectory>false</includeBaseDirectory>
+ <dependencySets>
+ <!-- apiman-manager -->
+ <dependencySet>
+ <outputDirectory>webapps</outputDirectory>
+ <includes>
+ <include>*:apiman-manager-ui-war-tomcat8:war</include>
+ </includes>
+ <outputFileNameMapping>apimanui.war</outputFileNameMapping>
+ <useProjectArtifact>false</useProjectArtifact>
+ <useProjectAttachments>false</useProjectAttachments>
+ <useTransitiveDependencies>false</useTransitiveDependencies>
+ <useTransitiveFiltering>false</useTransitiveFiltering>
+ <directoryMode>0755</directoryMode>
+ <fileMode>0755</fileMode>
+ </dependencySet>
+ <!-- apiman -->
+ <dependencySet>
+ <outputDirectory>webapps</outputDirectory>
+ <includes>
+ <include>*:apiman-manager-api-war-tomcat8:war</include>
+ </includes>
+ <outputFileNameMapping>apiman.war</outputFileNameMapping>
+ <useProjectArtifact>false</useProjectArtifact>
+ <useProjectAttachments>false</useProjectAttachments>
+ <useTransitiveDependencies>false</useTransitiveDependencies>
+ <useTransitiveFiltering>false</useTransitiveFiltering>
+ <directoryMode>0755</directoryMode>
+ <fileMode>0755</fileMode>
+ </dependencySet>
+ <!-- apiman-gateway-api -->
+ <dependencySet>
+ <outputDirectory>webapps</outputDirectory>
+ <includes>
+ <include>*:apiman-gateway-platforms-war-tomcat8-api:war</include>
+ </includes>
+ <outputFileNameMapping>apiman-gateway-api.war</outputFileNameMapping>
+ <useProjectArtifact>false</useProjectArtifact>
+ <useProjectAttachments>false</useProjectAttachments>
+ <useTransitiveDependencies>false</useTransitiveDependencies>
+ <useTransitiveFiltering>false</useTransitiveFiltering>
+ <directoryMode>0755</directoryMode>
+ <fileMode>0755</fileMode>
+ </dependencySet>
+ <!-- apiman-gateway -->
+ <dependencySet>
+ <outputDirectory>webapps</outputDirectory>
+ <includes>
+ <include>*:apiman-gateway-platforms-war-tomcat8-gateway:war</include>
+ </includes>
+ <outputFileNameMapping>apiman-gateway.war</outputFileNameMapping>
+ <useProjectArtifact>false</useProjectArtifact>
+ <useProjectAttachments>false</useProjectAttachments>
+ <useTransitiveDependencies>false</useTransitiveDependencies>
+ <useTransitiveFiltering>false</useTransitiveFiltering>
+ <directoryMode>0755</directoryMode>
+ <fileMode>0755</fileMode>
+ </dependencySet>
+ <!-- Sample data -->
+ <dependencySet>
+ <outputDirectory>apiman</outputDirectory>
+ <includes>
+ <include>io.apiman:apiman-distro-data:jar</include>
+ </includes>
+ <useProjectArtifact>false</useProjectArtifact>
+ <useProjectAttachments>false</useProjectAttachments>
+ <useTransitiveDependencies>false</useTransitiveDependencies>
+ <useTransitiveFiltering>false</useTransitiveFiltering>
+ <directoryMode>0755</directoryMode>
+ <fileMode>0755</fileMode>
+ <unpack>true</unpack>
+ <unpackOptions>
+ <excludes>
+ <exclude>**/META-INF/**</exclude>
+ <exclude>**/sample-data/**</exclude>
+ </excludes>
+ </unpackOptions>
+ </dependencySet>
+ <dependencySet>
+ <outputDirectory>data</outputDirectory>
+ <includes>
+ <include>io.apiman:apiman-distro-data:jar</include>
+ </includes>
+ <useProjectArtifact>false</useProjectArtifact>
+ <useProjectAttachments>false</useProjectAttachments>
+ <useTransitiveDependencies>false</useTransitiveDependencies>
+ <useTransitiveFiltering>false</useTransitiveFiltering>
+ <directoryMode>0755</directoryMode>
+ <fileMode>0755</fileMode>
+ <unpack>true</unpack>
+ <unpackOptions>
+ <includes>
+ <include>**/bootstrap/**</include>
+ </includes>
+ </unpackOptions>
+ </dependencySet>
+ </dependencySets>
+ <fileSets>
+ <fileSet>
+ <directory>src/main/resources/overlay</directory>
+ <outputDirectory></outputDirectory>
+ <filtered>false</filtered>
+ <directoryMode>0755</directoryMode>
+ <fileMode>0755</fileMode>
+ </fileSet>
+ </fileSets>
+</assembly>

ADD
distro/tomcat/src/main/resources/overlay/conf/apiman.jks
distro/tomcat/src/main/resources/overlay/conf/apiman.jks
Binary files /dev/null and b/distro/tomcat/src/main/resources/overlay/conf/apiman.jks differ

ADD
distro/tomcat/src/main/resources/overlay/conf/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://rawgit.com/apiman/apiman-plugin-registry/master/registry.json
+
+# Apiman Manager logging. standard, json or a FQDN implementing IApimanLogger
+apiman-manager.config.logger=standard
+
+# ---------------------------------------------------------------------
+# The following are settings for using elasticsearch for various
+# apiman components.
+# ---------------------------------------------------------------------
+apiman.es.client.type=es
+apiman.es.protocol=http
+apiman.es.initialize=true
+apiman.es.host=localhost
+apiman.es.port=19200
+apiman.es.username=
+apiman.es.password=
+apiman.es.timeout=10000
+apiman.es.keystore=
+apiman.es.keystore.password=
+apiman.es.truststore=
+apiman.es.truststore.password=
+apiman.es.trust.certificate=
+apiman.es.trust.host=
+
+# ---------------------------------------------------------------------
+# Some hibernate settings only useful when JPA is the storage.type.
+# ---------------------------------------------------------------------
+apiman.hibernate.connection.datasource=java:jboss/datasources/apiman-manager
+apiman.hibernate.dialect=io.apiman.manager.api.jpa.ApimanH2Dialect
+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
+
+# 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=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.initialize=${apiman.es.initialize}
+apiman-manager.storage.es.client.keystore=${apiman.es.keystore}
+apiman-manager.storage.es.client.keystore.password=${apiman.es.keystore.password}
+apiman-manager.storage.es.client.truststore=${apiman.es.truststore}
+apiman-manager.storage.es.client.truststore.password=${apiman.es.truststore.password}
+apiman-manager.storage.es.client.trust.certificate=${apiman.es.trust.certificate}
+apiman-manager.storage.es.client.trust.host=${apiman.es.trust.host}
+
+# API Manager metrics settings.
+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.keystore=${apiman.es.keystore}
+apiman-manager.metrics.es.client.keystore.password=${apiman.es.keystore.password}
+apiman-manager.metrics.es.client.truststore=${apiman.es.truststore}
+apiman-manager.metrics.es.client.truststore.password=${apiman.es.truststore.password}
+apiman-manager.metrics.es.client.trust.certificate=$eapiman.es.trust.certificate}
+apiman-manager.metrics.es.client.trust.host=${apiman.es.trust.host}
+
+# API Manager API Catalog
+apiman-manager.api-catalog.type=io.apiman.manager.api.core.catalog.JsonApiCatalog
+apiman-manager.api-catalog.catalog-url=https://rawgit.com/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
+
+# ---------------------------------------------------------------------
+# Elasticsearch Metrics Settings
+# ---------------------------------------------------------------------
+
+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.client.keystore=${apiman.es.keystore}
+apiman-gateway.metrics.client.keystore.password=${apiman.es.keystore.password}
+apiman-gateway.metrics.client.truststore=${apiman.es.truststore}
+apiman-gateway.metrics.client.truststore.password=${apiman.es.truststore.password}
+apiman-gateway.metrics.client.trust.certificate=${apiman.es.trust.certificate}
+apiman-gateway.metrics.client.trust.host=${apiman.es.trust.host}
+
+# ---------------------------------------------------------------------
+# 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.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.keystore=${apiman.es.keystore}
+apiman-gateway.registry.client.keystore.password=${apiman.es.keystore.password}
+apiman-gateway.registry.client.truststore=${apiman.es.truststore}
+apiman-gateway.registry.client.truststore.password=${apiman.es.truststore.password}
+#apiman-gateway.registry.cache-polling-interval=15
+apiman-gateway.registry.client.trust.certificate=${apiman.es.trust.certificate}
+apiman-gateway.registry.client.trust.host=${apiman.es.trust.host}
+
+# ---------------------------------------------------------------------
+# Shared State Component Settings
+# ---------------------------------------------------------------------
+
+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.keystore=${apiman.es.keystore}
+apiman-gateway.components.ISharedStateComponent.client.keystore.password=${apiman.es.keystore.password}
+apiman-gateway.components.ISharedStateComponent.client.truststore=${apiman.es.truststore}
+apiman-gateway.components.ISharedStateComponent.client.truststore.password=${apiman.es.truststore.password}
+apiman-gateway.components.ISharedStateComponent.client.trust.certificate=${apiman.es.trust.certificate}
+apiman-gateway.components.ISharedStateComponent.client.trust.host=${apiman.es.trust.host}
+
+
+# ---------------------------------------------------------------------
+# Rate Limiter Component Settings
+# ---------------------------------------------------------------------
+
+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.keystore=${apiman.es.keystore}
+apiman-gateway.components.IRateLimiterComponent.client.keystore.password=${apiman.es.keystore.password}
+apiman-gateway.components.IRateLimiterComponent.client.truststore=${apiman.es.truststore}
+apiman-gateway.components.IRateLimiterComponent.client.truststore.password=${apiman.es.truststore.password}
+apiman-gateway.components.IRateLimiterComponent.client.trust.certificate=${apiman.es.trust.certificate}
+apiman-gateway.components.IRateLimiterComponent.client.trust.host=${apiman.es.trust.host}
+
+# ---------------------------------------------------------------------
+# Cache Store Component Settings
+# ---------------------------------------------------------------------
+
+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.keystore=${apiman.es.keystore}
+apiman-gateway.components.ICacheStoreComponent.client.keystore.password=${apiman.es.keystore.password}
+apiman-gateway.components.ICacheStoreComponent.client.truststore=${apiman.es.truststore}
+apiman-gateway.components.ICacheStoreComponent.client.truststore.password=${apiman.es.truststore.password}
+apiman-gateway.components.ICacheStoreComponent.client.trust.certificate=${apiman.es.trust.certificate}
+apiman-gateway.components.ICacheStoreComponent.client.trust.host=${apiman.es.trust.host}
+
+# ---------------------------------------------------------------------
+# 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

ADD
distro/tomcat/src/main/resources/overlay/conf/server.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.
+-->
+<!-- Note: A "Server" is not itself a "Container", so you may not
+ define subcomponents such as "Valves" at this level.
+ Documentation at /docs/config/server.html
+ -->
+<Server port="8005" shutdown="SHUTDOWN">
+ <Listener className="org.apache.catalina.startup.VersionLoggerListener" />
+ <!-- Security listener. Documentation at /docs/config/listeners.html
+ <Listener className="org.apache.catalina.security.SecurityListener" />
+ -->
+ <!--APR library loader. Documentation at /docs/apr.html -->
+ <Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" />
+ <!-- Prevent memory leaks due to use of particular java/javax APIs-->
+ <Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener" />
+ <Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" />
+ <Listener className="org.apache.catalina.core.ThreadLocalLeakPreventionListener" />
+
+ <!-- Global JNDI resources
+ Documentation at /docs/jndi-resources-howto.html
+ -->
+ <GlobalNamingResources>
+ <!-- Editable user database that can also be used by
+ UserDatabaseRealm to authenticate users
+ -->
+ <Resource name="UserDatabase" auth="Container"
+ type="org.apache.catalina.UserDatabase"
+ description="User database that can be updated and saved"
+ factory="org.apache.catalina.users.MemoryUserDatabaseFactory"
+ pathname="conf/tomcat-users.xml" />
+ </GlobalNamingResources>
+
+ <!-- A "Service" is a collection of one or more "Connectors" that share
+ a single "Container" Note: A "Service" is not itself a "Container",
+ so you may not define subcomponents such as "Valves" at this level.
+ Documentation at /docs/config/service.html
+ -->
+ <Service name="Catalina">
+
+ <!--The connectors can use a shared executor, you can define one or more named thread pools-->
+ <!--
+ <Executor name="tomcatThreadPool" namePrefix="catalina-exec-"
+ maxThreads="150" minSpareThreads="4"/>
+ -->
+
+
+ <!-- A "Connector" represents an endpoint by which requests are received
+ and responses are returned. Documentation at :
+ Java HTTP Connector: /docs/config/http.html
+ Java AJP Connector: /docs/config/ajp.html
+ APR (HTTP/AJP) Connector: /docs/apr.html
+ Define a non-SSL/TLS HTTP/1.1 Connector on port 8080
+ -->
+ <Connector port="8080" protocol="HTTP/1.1"
+ connectionTimeout="20000"
+ redirectPort="8443" />
+ <!-- A "Connector" using the shared thread pool-->
+ <!--
+ <Connector executor="tomcatThreadPool"
+ port="8080" protocol="HTTP/1.1"
+ connectionTimeout="20000"
+ redirectPort="8443" />
+ -->
+ <!-- Define an SSL/TLS HTTP/1.1 Connector on port 8443
+ This connector uses the NIO implementation. The default
+ SSLImplementation will depend on the presence of the APR/native
+ library and the useOpenSSL attribute of the
+ AprLifecycleListener.
+ Either JSSE or OpenSSL style configuration may be used regardless of
+ the SSLImplementation selected. JSSE style configuration is used below.
+ -->
+
+ <Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol"
+ maxThreads="150" SSLEnabled="true">
+ <SSLHostConfig>
+ <Certificate certificateKeystoreFile="conf/apiman.jks"
+ certificateKeystorePassword="secret"
+ type="RSA" />
+ </SSLHostConfig>
+ </Connector>
+
+ <!-- Define an SSL/TLS HTTP/1.1 Connector on port 8443 with HTTP/2
+ This connector uses the APR/native implementation which always uses
+ OpenSSL for TLS.
+ Either JSSE or OpenSSL style configuration may be used. OpenSSL style
+ configuration is used below.
+ -->
+ <!--
+ <Connector port="8443" protocol="org.apache.coyote.http11.Http11AprProtocol"
+ maxThreads="150" SSLEnabled="true" >
+ <UpgradeProtocol className="org.apache.coyote.http2.Http2Protocol" />
+ <SSLHostConfig>
+ <Certificate certificateKeyFile="conf/localhost-rsa-key.pem"
+ certificateFile="conf/localhost-rsa-cert.pem"
+ certificateChainFile="conf/localhost-rsa-chain.pem"
+ type="RSA" />
+ </SSLHostConfig>
+ </Connector>
+ -->
+
+ <!-- Define an AJP 1.3 Connector on port 8009 -->
+ <!--
+ <Connector protocol="AJP/1.3"
+ address="::1"
+ port="8009"
+ redirectPort="8443" />
+ -->
+
+ <!-- An Engine represents the entry point (within Catalina) that processes
+ every request. The Engine implementation for Tomcat stand alone
+ analyzes the HTTP headers included with the request, and passes them
+ on to the appropriate Host (virtual host).
+ Documentation at /docs/config/engine.html -->
+
+ <!-- You should set jvmRoute to support load-balancing via AJP ie :
+ <Engine name="Catalina" defaultHost="localhost" jvmRoute="jvm1">
+ -->
+ <Engine name="Catalina" defaultHost="localhost">
+
+ <!--For clustering, please take a look at documentation at:
+ /docs/cluster-howto.html (simple how to)
+ /docs/config/cluster.html (reference documentation) -->
+ <!--
+ <Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"/>
+ -->
+
+ <!-- Use the LockOutRealm to prevent attempts to guess user passwords
+ via a brute-force attack -->
+ <Realm className="org.apache.catalina.realm.LockOutRealm">
+ <!-- This Realm uses the UserDatabase configured in the global JNDI
+ resources under the key "UserDatabase". Any edits
+ that are performed against this UserDatabase are immediately
+ available for use by the Realm. -->
+ <Realm className="org.apache.catalina.realm.UserDatabaseRealm"
+ resourceName="UserDatabase"/>
+ </Realm>
+
+ <Host name="localhost" appBase="webapps"
+ unpackWARs="true" autoDeploy="true">
+
+ <!-- SingleSignOn valve, share authentication between web applications
+ Documentation at: /docs/config/valve.html -->
+ <!--
+ <Valve className="org.apache.catalina.authenticator.SingleSignOn" />
+ -->
+
+ <!-- Access log processes all example.
+ Documentation at: /docs/config/valve.html
+ Note: The pattern used is equivalent to using pattern="common" -->
+ <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
+ prefix="localhost_access_log" suffix=".txt"
+ pattern="%h %l %u %t &quot;%r&quot; %s %b" />
+
+ </Host>
+ </Engine>
+ </Service>
+</Server>

ADD
distro/tomcat/src/main/resources/overlay/conf/tomcat-users.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.
+-->
+<tomcat-users xmlns="http://tomcat.apache.org/xml"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://tomcat.apache.org/xml tomcat-users.xsd"
+ version="1.0">
+<!--
+ NOTE: By default, no user is included in the "manager-gui" role required
+ to operate the "/manager/html" web application. If you wish to use this app,
+ you must define such a user - the username and password are arbitrary.
+-->
+<!--
+ NOTE: The sample user and role entries below are wrapped in a comment
+ and thus are ignored when reading this file. Do not forget to remove
+ <!.. ..> that surrounds them.
+-->
+ <role rolename="apiuser"/>
+ <role rolename="apiadmin"/>
+ <role rolename="apipublisher"/>
+ <user username="admin" password="admin123!" roles="apiuser,apiadmin"/>
+ <user username="apimanager" password="apiman123!" roles="apipublisher"/>
+</tomcat-users>

MODIFY
manager/ui/war/tomcat8/src/main/webapp/login/resources/css/login.css
manager/ui/war/tomcat8/src/main/webapp/login/resources/css/login.css
+/*Disable patternfly default background*/
+.login-pf {
+ background: none;
+}
+
.login-pf .container {
padding-top: 40px;
background-color: rgb(36, 52, 70);

refactor: bring tomcat distro back

Closes: #1171