summaryrefslogtreecommitdiffstats
path: root/test/servlet-containers/karaf
diff options
context:
space:
mode:
authorIlia Motornyi <elmot@vaadin.com>2018-10-25 11:44:14 +0300
committerGitHub <noreply@github.com>2018-10-25 11:44:14 +0300
commitb370b042f2b796b26033ab091c6f67d7cd658921 (patch)
tree222da38580402ef68701d4ff09f09d28873c9eeb /test/servlet-containers/karaf
parentb7eb95faaf77db6d8113bb30b199a76f467fb221 (diff)
downloadvaadin-framework-b370b042f2b796b26033ab091c6f67d7cd658921.tar.gz
vaadin-framework-b370b042f2b796b26033ab091c6f67d7cd658921.zip
Fix karaf-4.2.1 test (#11264)
Diffstat (limited to 'test/servlet-containers/karaf')
-rw-r--r--test/servlet-containers/karaf/karaf-run/.gitignore4
-rw-r--r--test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/BUILDING.md58
-rw-r--r--test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/LICENSE475
-rw-r--r--test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/NOTICE65
-rw-r--r--test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/README.md92
-rw-r--r--test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/RELEASE-NOTES.md622
-rwxr-xr-xtest/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/bin/client139
-rwxr-xr-xtest/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/bin/client.bat135
-rw-r--r--test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/bin/contrib/karaf-service-template.conf33
-rw-r--r--test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/bin/contrib/karaf-service-template.init171
-rw-r--r--test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/bin/contrib/karaf-service-template.init-debian246
-rw-r--r--test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/bin/contrib/karaf-service-template.init-redhat164
-rw-r--r--test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/bin/contrib/karaf-service-template.solaris-smf94
-rw-r--r--test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/bin/contrib/karaf-service-template.systemd39
-rw-r--r--test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/bin/contrib/karaf-service-template.systemd-instances42
-rw-r--r--test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/bin/contrib/karaf-service-win.exebin0 -> 59392 bytes
-rw-r--r--test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/bin/contrib/karaf-service-win.xml50
-rw-r--r--test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/bin/contrib/karaf-service.sh206
-rwxr-xr-xtest/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/bin/inc321
-rwxr-xr-xtest/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/bin/instance143
-rwxr-xr-xtest/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/bin/instance.bat158
-rwxr-xr-xtest/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/bin/karaf360
-rwxr-xr-xtest/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/bin/karaf.bat480
-rwxr-xr-xtest/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/bin/setenv52
-rwxr-xr-xtest/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/bin/setenv.bat67
-rwxr-xr-xtest/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/bin/shell143
-rwxr-xr-xtest/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/bin/shell.bat143
-rwxr-xr-xtest/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/bin/start103
-rwxr-xr-xtest/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/bin/start.bat98
-rwxr-xr-xtest/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/bin/status98
-rwxr-xr-xtest/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/bin/status.bat100
-rwxr-xr-xtest/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/bin/stop98
-rwxr-xr-xtest/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/bin/stop.bat100
-rw-r--r--test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/deploy/README18
-rw-r--r--test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/etc/all.policy22
-rw-r--r--test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/etc/config.properties269
-rw-r--r--test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/etc/custom.properties30
-rw-r--r--test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/etc/distribution.info26
-rw-r--r--test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/etc/equinox-debug.properties111
-rw-r--r--test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/etc/host.key28
-rw-r--r--test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/etc/java.util.logging.properties23
-rw-r--r--test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/etc/jetty.xml119
-rw-r--r--test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/etc/jmx.acl.cfg75
-rw-r--r--test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/etc/jmx.acl.java.lang.Memory.cfg27
-rw-r--r--test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/etc/jmx.acl.org.apache.karaf.bundle.cfg40
-rw-r--r--test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/etc/jmx.acl.org.apache.karaf.config.cfg54
-rw-r--r--test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/etc/jmx.acl.org.apache.karaf.security.jmx.cfg29
-rw-r--r--test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/etc/jmx.acl.osgi.compendium.cm.cfg55
-rw-r--r--test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/etc/jre.properties727
-rw-r--r--test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/etc/keys.properties36
-rw-r--r--test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/etc/org.apache.felix.eventadmin.impl.EventAdmin.cfg23
-rw-r--r--test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/etc/org.apache.felix.fileinstall-deploy.cfg25
-rw-r--r--test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/etc/org.apache.karaf.command.acl.bundle.cfg46
-rw-r--r--test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/etc/org.apache.karaf.command.acl.config.cfg46
-rw-r--r--test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/etc/org.apache.karaf.command.acl.feature.cfg29
-rw-r--r--test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/etc/org.apache.karaf.command.acl.jaas.cfg25
-rw-r--r--test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/etc/org.apache.karaf.command.acl.kar.cfg29
-rw-r--r--test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/etc/org.apache.karaf.command.acl.scope_bundle.cfg33
-rw-r--r--test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/etc/org.apache.karaf.command.acl.shell.cfg28
-rw-r--r--test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/etc/org.apache.karaf.command.acl.system.cfg29
-rw-r--r--test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/etc/org.apache.karaf.features.cfg95
-rw-r--r--test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/etc/org.apache.karaf.features.repos.cfg61
-rw-r--r--test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/etc/org.apache.karaf.jaas.cfg63
-rw-r--r--test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/etc/org.apache.karaf.kar.cfg35
-rw-r--r--test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/etc/org.apache.karaf.log.cfg44
-rw-r--r--test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/etc/org.apache.karaf.management.cfg124
-rw-r--r--test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/etc/org.apache.karaf.shell.cfg127
-rw-r--r--test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/etc/org.ops4j.pax.logging.cfg105
-rw-r--r--test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/etc/org.ops4j.pax.url.mvn.cfg146
-rw-r--r--test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/etc/org.ops4j.pax.web.cfg6
-rw-r--r--test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/etc/profile.cfg38
-rw-r--r--test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/etc/scripts/shell.completion.script271
-rw-r--r--test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/etc/shell.init.script66
-rw-r--r--test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/etc/startup.properties13
-rw-r--r--test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/etc/system.properties156
-rw-r--r--test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/etc/users.properties33
-rw-r--r--test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/lib/README27
-rw-r--r--test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/lib/boot/README21
-rw-r--r--test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/lib/boot/activation-1.1.1.jarbin0 -> 69409 bytes
-rw-r--r--test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/lib/boot/jaxb-api-2.3.0.jarbin0 -> 125632 bytes
-rw-r--r--test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/lib/boot/jaxb-core-2.2.11.jarbin0 -> 252336 bytes
-rw-r--r--test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/lib/boot/jaxb-impl-2.2.11.jarbin0 -> 1047863 bytes
-rw-r--r--test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/lib/boot/org.apache.karaf.diagnostic.boot-4.2.1.jarbin0 -> 31249 bytes
-rw-r--r--test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/lib/boot/org.apache.karaf.jaas.boot-4.2.1.jarbin0 -> 19104 bytes
-rw-r--r--test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/lib/boot/org.apache.karaf.main-4.2.1.jarbin0 -> 157052 bytes
-rw-r--r--test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/lib/boot/org.osgi.core-6.0.0.jarbin0 -> 475256 bytes
-rw-r--r--test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/lib/endorsed/README23
-rw-r--r--test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/lib/endorsed/org.apache.karaf.specs.java.xml-4.2.1.jarbin0 -> 61904 bytes
-rw-r--r--test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/lib/endorsed/org.apache.karaf.specs.locator-4.2.1.jarbin0 -> 10542 bytes
-rw-r--r--test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/lib/ext/README23
-rw-r--r--test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/README26
-rw-r--r--test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/apache/aries/blueprint/org.apache.aries.blueprint.api/1.0.1/org.apache.aries.blueprint.api-1.0.1.jarbin0 -> 33638 bytes
-rw-r--r--test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/apache/aries/blueprint/org.apache.aries.blueprint.cm/1.2.0/org.apache.aries.blueprint.cm-1.2.0.jarbin0 -> 65266 bytes
-rw-r--r--test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/apache/aries/blueprint/org.apache.aries.blueprint.core.compatibility/1.0.0/org.apache.aries.blueprint.core.compatibility-1.0.0.jarbin0 -> 8076 bytes
-rw-r--r--test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/apache/aries/blueprint/org.apache.aries.blueprint.core/1.9.0/org.apache.aries.blueprint.core-1.9.0.jarbin0 -> 497975 bytes
-rw-r--r--test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/apache/aries/jmx/org.apache.aries.jmx.api/1.1.5/org.apache.aries.jmx.api-1.1.5.jarbin0 -> 31552 bytes
-rw-r--r--test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/apache/aries/jmx/org.apache.aries.jmx.blueprint.api/1.2.0/org.apache.aries.jmx.blueprint.api-1.2.0.jarbin0 -> 17840 bytes
-rw-r--r--test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/apache/aries/jmx/org.apache.aries.jmx.blueprint.core/1.2.0/org.apache.aries.jmx.blueprint.core-1.2.0.jarbin0 -> 55614 bytes
-rw-r--r--test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/apache/aries/jmx/org.apache.aries.jmx.core/1.1.8/org.apache.aries.jmx.core-1.1.8.jarbin0 -> 127403 bytes
-rw-r--r--test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/apache/aries/jmx/org.apache.aries.jmx.whiteboard/1.2.0/org.apache.aries.jmx.whiteboard-1.2.0.jarbin0 -> 21175 bytes
-rw-r--r--test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/apache/aries/jpa/jpa-features/2.7.0/jpa-features-2.7.0-features.xml20
-rw-r--r--test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/apache/aries/org.apache.aries.util/1.1.3/org.apache.aries.util-1.1.3.jarbin0 -> 115595 bytes
-rw-r--r--test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/apache/aries/proxy/org.apache.aries.proxy/1.1.2/org.apache.aries.proxy-1.1.2.jarbin0 -> 97217 bytes
-rw-r--r--test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/apache/felix/org.apache.felix.configadmin/1.9.4/org.apache.felix.configadmin-1.9.4.jarbin0 -> 151912 bytes
-rw-r--r--test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/apache/felix/org.apache.felix.coordinator/1.0.2/org.apache.felix.coordinator-1.0.2.jarbin0 -> 44411 bytes
-rw-r--r--test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/apache/felix/org.apache.felix.fileinstall/3.6.4/org.apache.felix.fileinstall-3.6.4.jarbin0 -> 139211 bytes
-rw-r--r--test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/apache/felix/org.apache.felix.framework/5.6.10/org.apache.felix.framework-5.6.10.jarbin0 -> 692174 bytes
-rw-r--r--test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/apache/felix/org.apache.felix.metatype/1.2.0/org.apache.felix.metatype-1.2.0.jarbin0 -> 76651 bytes
-rw-r--r--test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/apache/felix/org.apache.felix.webconsole.plugins.event/1.1.8/org.apache.felix.webconsole.plugins.event-1.1.8.jarbin0 -> 51543 bytes
-rw-r--r--test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/apache/karaf/bundle/org.apache.karaf.bundle.blueprintstate/4.2.1/org.apache.karaf.bundle.blueprintstate-4.2.1.jarbin0 -> 12260 bytes
-rw-r--r--test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/apache/karaf/bundle/org.apache.karaf.bundle.core/4.2.1/org.apache.karaf.bundle.core-4.2.1.jarbin0 -> 154933 bytes
-rw-r--r--test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/apache/karaf/config/org.apache.karaf.config.core/4.2.1/org.apache.karaf.config.core-4.2.1.jarbin0 -> 122469 bytes
-rw-r--r--test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/apache/karaf/deployer/org.apache.karaf.deployer.blueprint/4.2.1/org.apache.karaf.deployer.blueprint-4.2.1.jarbin0 -> 44926 bytes
-rw-r--r--test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/apache/karaf/deployer/org.apache.karaf.deployer.features/4.2.1/org.apache.karaf.deployer.features-4.2.1.jarbin0 -> 53234 bytes
-rw-r--r--test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/apache/karaf/deployer/org.apache.karaf.deployer.kar/4.2.1/org.apache.karaf.deployer.kar-4.2.1.jarbin0 -> 23577 bytes
-rw-r--r--test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/apache/karaf/deployer/org.apache.karaf.deployer.wrap/4.2.1/org.apache.karaf.deployer.wrap-4.2.1.jarbin0 -> 35501 bytes
-rw-r--r--test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/apache/karaf/diagnostic/org.apache.karaf.diagnostic.boot/4.2.1/org.apache.karaf.diagnostic.boot-4.2.1.jarbin0 -> 31249 bytes
-rw-r--r--test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/apache/karaf/diagnostic/org.apache.karaf.diagnostic.core/4.2.1/org.apache.karaf.diagnostic.core-4.2.1.jarbin0 -> 43888 bytes
-rw-r--r--test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/apache/karaf/features/enterprise/4.2.1/enterprise-4.2.1-features.xml271
-rw-r--r--test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/apache/karaf/features/framework/4.2.1/framework-4.2.1-features.xml62
-rw-r--r--test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/apache/karaf/features/org.apache.karaf.features.command/4.2.1/org.apache.karaf.features.command-4.2.1.jarbin0 -> 72914 bytes
-rw-r--r--test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/apache/karaf/features/org.apache.karaf.features.core/4.2.1/org.apache.karaf.features.core-4.2.1.jarbin0 -> 733044 bytes
-rw-r--r--test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/apache/karaf/features/org.apache.karaf.features.extension/4.2.1/org.apache.karaf.features.extension-4.2.1.jarbin0 -> 16990 bytes
-rw-r--r--test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/apache/karaf/features/spring/4.2.1/spring-4.2.1-features.xml104
-rw-r--r--test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/apache/karaf/features/standard/4.2.1/standard-4.2.1-features.xml1652
-rw-r--r--test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/apache/karaf/instance/org.apache.karaf.instance.core/4.2.1/org.apache.karaf.instance.core-4.2.1.jarbin0 -> 260241 bytes
-rw-r--r--test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/apache/karaf/jaas/blueprint/org.apache.karaf.jaas.blueprint.config/4.2.1/org.apache.karaf.jaas.blueprint.config-4.2.1.jarbin0 -> 16575 bytes
-rw-r--r--test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/apache/karaf/jaas/org.apache.karaf.jaas.boot/4.2.1/org.apache.karaf.jaas.boot-4.2.1.jarbin0 -> 19104 bytes
-rw-r--r--test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/apache/karaf/jaas/org.apache.karaf.jaas.command/4.2.1/org.apache.karaf.jaas.command-4.2.1.jarbin0 -> 58575 bytes
-rw-r--r--test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/apache/karaf/jaas/org.apache.karaf.jaas.config/4.2.1/org.apache.karaf.jaas.config-4.2.1.jarbin0 -> 42123 bytes
-rw-r--r--test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/apache/karaf/jaas/org.apache.karaf.jaas.modules/4.2.1/org.apache.karaf.jaas.modules-4.2.1.jarbin0 -> 1290443 bytes
-rw-r--r--test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/apache/karaf/kar/org.apache.karaf.kar.core/4.2.1/org.apache.karaf.kar.core-4.2.1.jarbin0 -> 106772 bytes
-rw-r--r--test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/apache/karaf/log/org.apache.karaf.log.core/4.2.1/org.apache.karaf.log.core-4.2.1.jarbin0 -> 98031 bytes
-rw-r--r--test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/apache/karaf/management/org.apache.karaf.management.server/4.2.1/org.apache.karaf.management.server-4.2.1.jarbin0 -> 86972 bytes
-rw-r--r--test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/apache/karaf/org.apache.karaf.client/4.2.1/org.apache.karaf.client-4.2.1.jarbin0 -> 77793 bytes
-rw-r--r--test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/apache/karaf/org.apache.karaf.event/4.2.1/org.apache.karaf.event-4.2.1.jarbin0 -> 28253 bytes
-rw-r--r--test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/apache/karaf/package/org.apache.karaf.package.core/4.2.1/org.apache.karaf.package.core-4.2.1.jarbin0 -> 57113 bytes
-rw-r--r--test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/apache/karaf/service/org.apache.karaf.service.core/4.2.1/org.apache.karaf.service.core-4.2.1.jarbin0 -> 33845 bytes
-rw-r--r--test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/apache/karaf/services/org.apache.karaf.services.eventadmin/4.2.1/org.apache.karaf.services.eventadmin-4.2.1.jarbin0 -> 97289 bytes
-rw-r--r--test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/apache/karaf/shell/org.apache.karaf.shell.commands/4.2.1/org.apache.karaf.shell.commands-4.2.1.jarbin0 -> 77080 bytes
-rw-r--r--test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/apache/karaf/shell/org.apache.karaf.shell.console/4.2.1/org.apache.karaf.shell.console-4.2.1.jarbin0 -> 211570 bytes
-rw-r--r--test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/apache/karaf/shell/org.apache.karaf.shell.core/4.2.1/org.apache.karaf.shell.core-4.2.1.jarbin0 -> 668171 bytes
-rw-r--r--test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/apache/karaf/shell/org.apache.karaf.shell.ssh/4.2.1/org.apache.karaf.shell.ssh-4.2.1.jarbin0 -> 98456 bytes
-rw-r--r--test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/apache/karaf/shell/org.apache.karaf.shell.table/4.2.1/org.apache.karaf.shell.table-4.2.1.jarbin0 -> 17578 bytes
-rw-r--r--test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/apache/karaf/system/org.apache.karaf.system.core/4.2.1/org.apache.karaf.system.core-4.2.1.jarbin0 -> 86923 bytes
-rw-r--r--test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/apache/karaf/wrapper/org.apache.karaf.wrapper.core/4.2.1/org.apache.karaf.wrapper.core-4.2.1.jarbin0 -> 1206907 bytes
-rw-r--r--test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/apache/openjpa/openjpa-features/3.0.0/openjpa-features-3.0.0-features.xml16
-rw-r--r--test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/apache/servicemix/bundles/org.apache.servicemix.bundles.jaxb-impl/2.2.11_1/org.apache.servicemix.bundles.jaxb-impl-2.2.11_1.jarbin0 -> 1302365 bytes
-rw-r--r--test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/apache/servicemix/bundles/org.apache.servicemix.bundles.not-yet-commons-ssl/0.3.11_1/org.apache.servicemix.bundles.not-yet-commons-ssl-0.3.11_1.jarbin0 -> 279039 bytes
-rw-r--r--test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/apache/servicemix/specs/org.apache.servicemix.specs.activation-api-1.1/2.5.0/org.apache.servicemix.specs.activation-api-1.1-2.5.0.jarbin0 -> 65743 bytes
-rw-r--r--test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/apache/servicemix/specs/org.apache.servicemix.specs.jaxb-api-2.2/2.5.0/org.apache.servicemix.specs.jaxb-api-2.2-2.5.0.jarbin0 -> 121169 bytes
-rw-r--r--test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/apache/sshd/sshd-core/1.7.0/sshd-core-1.7.0.jarbin0 -> 1741039 bytes
-rw-r--r--test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/eclipse/platform/org.eclipse.osgi/3.12.100/org.eclipse.osgi-3.12.100.jarbin0 -> 1387666 bytes
-rw-r--r--test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/fusesource/jansi/jansi/1.17.1/jansi-1.17.1.jarbin0 -> 283858 bytes
-rw-r--r--test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/hibernate/hibernate-osgi/5.2.9.Final/hibernate-osgi-5.2.9.Final-karaf.xml35
-rw-r--r--test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/hibernate/validator/hibernate-validator-osgi-karaf-features/6.0.12.Final/hibernate-validator-osgi-karaf-features-6.0.12.Final-features.xml44
-rw-r--r--test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/jline/jline-builtins/3.9.0/jline-builtins-3.9.0.jarbin0 -> 177461 bytes
-rw-r--r--test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/jline/jline-reader/3.9.0/jline-reader-3.9.0.jarbin0 -> 140167 bytes
-rw-r--r--test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/jline/jline-terminal-jansi/3.9.0/jline-terminal-jansi-3.9.0.jarbin0 -> 38473 bytes
-rw-r--r--test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/jline/jline-terminal/3.9.0/jline-terminal-3.9.0.jarbin0 -> 208392 bytes
-rw-r--r--test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/jline/jline/3.9.0/jline-3.9.0.jarbin0 -> 707273 bytes
-rw-r--r--test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/ops4j/pax/cdi/pax-cdi-features/1.0.0/pax-cdi-features-1.0.0-features.xml151
-rw-r--r--test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/ops4j/pax/jdbc/pax-jdbc-features/1.3.0/pax-jdbc-features-1.3.0-features.xml191
-rw-r--r--test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/ops4j/pax/jms/pax-jms-features/1.0.1/pax-jms-features-1.0.1-features.xml103
-rw-r--r--test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/ops4j/pax/logging/pax-logging-api/1.10.1/pax-logging-api-1.10.1.jarbin0 -> 375107 bytes
-rw-r--r--test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/ops4j/pax/logging/pax-logging-log4j2/1.10.1/pax-logging-log4j2-1.10.1.jarbin0 -> 1448620 bytes
-rw-r--r--test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/ops4j/pax/logging/pax-logging-logback/1.10.1/pax-logging-logback-1.10.1.jarbin0 -> 806498 bytes
-rw-r--r--test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/ops4j/pax/transx/pax-transx-features/0.3.0/pax-transx-features-0.3.0-features.xml77
-rw-r--r--test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/ops4j/pax/transx/pax-transx-features/0.4.0/pax-transx-features-0.4.0-features.xml85
-rw-r--r--test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/ops4j/pax/url/pax-url-aether/2.5.4/pax-url-aether-2.5.4.jarbin0 -> 3233598 bytes
-rw-r--r--test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/ops4j/pax/url/pax-url-wrap/2.5.4/pax-url-wrap-2.5.4-uber.jarbin0 -> 1158686 bytes
-rw-r--r--test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/ops4j/pax/web/pax-web-features/7.2.3/pax-web-features-7.2.3-features.xml290
-rw-r--r--test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/ow2/asm/asm-analysis/6.2.1/asm-analysis-6.2.1.jarbin0 -> 32677 bytes
-rw-r--r--test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/ow2/asm/asm-commons/6.2.1/asm-commons-6.2.1.jarbin0 -> 78989 bytes
-rw-r--r--test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/ow2/asm/asm-tree/6.2.1/asm-tree-6.2.1.jarbin0 -> 50383 bytes
-rw-r--r--test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/ow2/asm/asm-util/6.2.1/asm-util-6.2.1.jarbin0 -> 79823 bytes
-rw-r--r--test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/ow2/asm/asm/6.2.1/asm-6.2.1.jarbin0 -> 112958 bytes
-rw-r--r--test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/slf4j/slf4j-api/1.7.12/slf4j-api-1.7.12.jarbin0 -> 32127 bytes
-rw-r--r--test/servlet-containers/karaf/karaf-run/karaf-run-pom.xml21
-rw-r--r--test/servlet-containers/karaf/karaf-run/pom.xml80
-rw-r--r--test/servlet-containers/karaf/pom.xml3
-rw-r--r--test/servlet-containers/karaf/vaadin-karaf-bundle1/pom.xml8
-rw-r--r--test/servlet-containers/karaf/vaadin-karaf-bundle2/pom.xml8
183 files changed, 11794 insertions, 31 deletions
diff --git a/test/servlet-containers/karaf/karaf-run/.gitignore b/test/servlet-containers/karaf/karaf-run/.gitignore
new file mode 100644
index 0000000000..ced3b4596c
--- /dev/null
+++ b/test/servlet-containers/karaf/karaf-run/.gitignore
@@ -0,0 +1,4 @@
+apache-karaf-4.2.1-minimal/karaf.pid
+apache-karaf-4.2.1-minimal/lock
+apache-karaf-4.2.1-minimal/instances
+apache-karaf-4.2.1-minimal/data \ No newline at end of file
diff --git a/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/BUILDING.md b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/BUILDING.md
new file mode 100644
index 0000000000..4d110b2e82
--- /dev/null
+++ b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/BUILDING.md
@@ -0,0 +1,58 @@
+<!--
+ 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.
+-->
+
+# Building Apache Karaf
+
+## Initial Setup
+
+1. Install J2SE 8.0 SDK (or later), which can be downloaded from
+ http://www.oracle.com/technetwork/java/javase/downloads/index.html
+ Use version of "JDK 8.0 Update 131" (or later).
+
+2. Make sure that your JAVA_HOME environment variable is set to the newly installed
+ JDK location, and that your PATH includes `%JAVA_HOME%\bin` (windows) or
+ `$JAVA_HOME$/bin` (unix).
+
+3. Install Maven 3.0.3 (or later), which can be downloaded from
+ http://maven.apache.org/download.html. Make sure that your PATH includes
+ the `$MVN_HOME/bin` directory.
+
+
+## Building
+
+1. Change to the top level directory of Apache Karaf source distribution.
+2. Run
+
+ ```
+ $> mvn clean install
+ ```
+
+ This will compile Apache Karaf and run all of the tests in the
+ Apache Karaf source distribution. Alternatively, you can run:
+
+ ```
+ $> mvn clean install -DskipTests
+ ```
+
+ This will compile Apache Karaf without running the tests and takes less
+ time to build.
+
+3. The distributions will be available under `assemblies/apache-karaf/target`
+ and `assemblies/apache-karaf-minimal/target` directories.
+
diff --git a/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/LICENSE b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/LICENSE
new file mode 100644
index 0000000000..b36a53db89
--- /dev/null
+++ b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/LICENSE
@@ -0,0 +1,475 @@
+
+ Apache License
+ Version 2.0, January 2004
+ http://www.apache.org/licenses/
+
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+ 1. Definitions.
+
+ "License" shall mean the terms and conditions for use, reproduction,
+ and distribution as defined by Sections 1 through 9 of this document.
+
+ "Licensor" shall mean the copyright owner or entity authorized by
+ the copyright owner that is granting the License.
+
+ "Legal Entity" shall mean the union of the acting entity and all
+ other entities that control, are controlled by, or are under common
+ control with that entity. For the purposes of this definition,
+ "control" means (i) the power, direct or indirect, to cause the
+ direction or management of such entity, whether by contract or
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
+ outstanding shares, or (iii) beneficial ownership of such entity.
+
+ "You" (or "Your") shall mean an individual or Legal Entity
+ exercising permissions granted by this License.
+
+ "Source" form shall mean the preferred form for making modifications,
+ including but not limited to software source code, documentation
+ source, and configuration files.
+
+ "Object" form shall mean any form resulting from mechanical
+ transformation or translation of a Source form, including but
+ not limited to compiled object code, generated documentation,
+ and conversions to other media types.
+
+ "Work" shall mean the work of authorship, whether in Source or
+ Object form, made available under the License, as indicated by a
+ copyright notice that is included in or attached to the work
+ (an example is provided in the Appendix below).
+
+ "Derivative Works" shall mean any work, whether in Source or Object
+ form, that is based on (or derived from) the Work and for which the
+ editorial revisions, annotations, elaborations, or other modifications
+ represent, as a whole, an original work of authorship. For the purposes
+ of this License, Derivative Works shall not include works that remain
+ separable from, or merely link (or bind by name) to the interfaces of,
+ the Work and Derivative Works thereof.
+
+ "Contribution" shall mean any work of authorship, including
+ the original version of the Work and any modifications or additions
+ to that Work or Derivative Works thereof, that is intentionally
+ submitted to Licensor for inclusion in the Work by the copyright owner
+ or by an individual or Legal Entity authorized to submit on behalf of
+ the copyright owner. For the purposes of this definition, "submitted"
+ means any form of electronic, verbal, or written communication sent
+ to the Licensor or its representatives, including but not limited to
+ communication on electronic mailing lists, source code control systems,
+ and issue tracking systems that are managed by, or on behalf of, the
+ Licensor for the purpose of discussing and improving the Work, but
+ excluding communication that is conspicuously marked or otherwise
+ designated in writing by the copyright owner as "Not a Contribution."
+
+ "Contributor" shall mean Licensor and any individual or Legal Entity
+ on behalf of whom a Contribution has been received by Licensor and
+ subsequently incorporated within the Work.
+
+ 2. Grant of Copyright License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ copyright license to reproduce, prepare Derivative Works of,
+ publicly display, publicly perform, sublicense, and distribute the
+ Work and such Derivative Works in Source or Object form.
+
+ 3. Grant of Patent License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ (except as stated in this section) patent license to make, have made,
+ use, offer to sell, sell, import, and otherwise transfer the Work,
+ where such license applies only to those patent claims licensable
+ by such Contributor that are necessarily infringed by their
+ Contribution(s) alone or by combination of their Contribution(s)
+ with the Work to which such Contribution(s) was submitted. If You
+ institute patent litigation against any entity (including a
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
+ or a Contribution incorporated within the Work constitutes direct
+ or contributory patent infringement, then any patent licenses
+ granted to You under this License for that Work shall terminate
+ as of the date such litigation is filed.
+
+ 4. Redistribution. You may reproduce and distribute copies of the
+ Work or Derivative Works thereof in any medium, with or without
+ modifications, and in Source or Object form, provided that You
+ meet the following conditions:
+
+ (a) You must give any other recipients of the Work or
+ Derivative Works a copy of this License; and
+
+ (b) You must cause any modified files to carry prominent notices
+ stating that You changed the files; and
+
+ (c) You must retain, in the Source form of any Derivative Works
+ that You distribute, all copyright, patent, trademark, and
+ attribution notices from the Source form of the Work,
+ excluding those notices that do not pertain to any part of
+ the Derivative Works; and
+
+ (d) If the Work includes a "NOTICE" text file as part of its
+ distribution, then any Derivative Works that You distribute must
+ include a readable copy of the attribution notices contained
+ within such NOTICE file, excluding those notices that do not
+ pertain to any part of the Derivative Works, in at least one
+ of the following places: within a NOTICE text file distributed
+ as part of the Derivative Works; within the Source form or
+ documentation, if provided along with the Derivative Works; or,
+ within a display generated by the Derivative Works, if and
+ wherever such third-party notices normally appear. The contents
+ of the NOTICE file are for informational purposes only and
+ do not modify the License. You may add Your own attribution
+ notices within Derivative Works that You distribute, alongside
+ or as an addendum to the NOTICE text from the Work, provided
+ that such additional attribution notices cannot be construed
+ as modifying the License.
+
+ You may add Your own copyright statement to Your modifications and
+ may provide additional or different license terms and conditions
+ for use, reproduction, or distribution of Your modifications, or
+ for any such Derivative Works as a whole, provided Your use,
+ reproduction, and distribution of the Work otherwise complies with
+ the conditions stated in this License.
+
+ 5. Submission of Contributions. Unless You explicitly state otherwise,
+ any Contribution intentionally submitted for inclusion in the Work
+ by You to the Licensor shall be under the terms and conditions of
+ this License, without any additional terms or conditions.
+ Notwithstanding the above, nothing herein shall supersede or modify
+ the terms of any separate license agreement you may have executed
+ with Licensor regarding such Contributions.
+
+ 6. Trademarks. This License does not grant permission to use the trade
+ names, trademarks, service marks, or product names of the Licensor,
+ except as required for reasonable and customary use in describing the
+ origin of the Work and reproducing the content of the NOTICE file.
+
+ 7. Disclaimer of Warranty. Unless required by applicable law or
+ agreed to in writing, Licensor provides the Work (and each
+ Contributor provides its Contributions) on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+ implied, including, without limitation, any warranties or conditions
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+ PARTICULAR PURPOSE. You are solely responsible for determining the
+ appropriateness of using or redistributing the Work and assume any
+ risks associated with Your exercise of permissions under this License.
+
+ 8. Limitation of Liability. In no event and under no legal theory,
+ whether in tort (including negligence), contract, or otherwise,
+ unless required by applicable law (such as deliberate and grossly
+ negligent acts) or agreed to in writing, shall any Contributor be
+ liable to You for damages, including any direct, indirect, special,
+ incidental, or consequential damages of any character arising as a
+ result of this License or out of the use or inability to use the
+ Work (including but not limited to damages for loss of goodwill,
+ work stoppage, computer failure or malfunction, or any and all
+ other commercial damages or losses), even if such Contributor
+ has been advised of the possibility of such damages.
+
+ 9. Accepting Warranty or Additional Liability. While redistributing
+ the Work or Derivative Works thereof, You may choose to offer,
+ and charge a fee for, acceptance of support, warranty, indemnity,
+ or other liability obligations and/or rights consistent with this
+ License. However, in accepting such obligations, You may act only
+ on Your own behalf and on Your sole responsibility, not on behalf
+ of any other Contributor, and only if You agree to indemnify,
+ defend, and hold each Contributor harmless for any liability
+ incurred by, or claims asserted against, such Contributor by reason
+ of your accepting any such warranty or additional liability.
+
+ END OF TERMS AND CONDITIONS
+
+ APPENDIX: How to apply the Apache License to your work.
+
+ To apply the Apache License to your work, attach the following
+ boilerplate notice, with the fields enclosed by brackets "[]"
+ replaced with your own identifying information. (Don't include
+ the brackets!) The text should be enclosed in the appropriate
+ comment syntax for the file format. We also recommend that a
+ file or class name and description of purpose be included on the
+ same "printed page" as the copyright notice for easier
+ identification within third-party archives.
+
+ Copyright [yyyy] [name of copyright owner]
+
+ Licensed 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.
+
+For asm:
+Copyright (c) 2000-2011 INRIA, France Telecom
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+
+1. Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+
+2. Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+
+3. Neither the name of the copyright holders nor the names of its
+ contributors may be used to endorse or promote products derived from
+ this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+THE POSSIBILITY OF SUCH DAMAGE.
+
+For equinox:
+Eclipse Public License - v 1.0
+
+THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE PUBLIC LICENSE ("AGREEMENT").
+ANY USE, REPRODUCTION OR DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT.
+
+1. DEFINITIONS
+
+"Contribution" means:
+
+a) in the case of the initial Contributor, the initial code and documentation distributed under this Agreement, and
+
+b) in the case of each subsequent Contributor:
+
+i) changes to the Program, and
+
+ii) additions to the Program;
+
+where such changes and/or additions to the Program originate from and are distributed by that particular Contributor.
+A Contribution 'originates' from a Contributor if it was added to the Program by such Contributor itself or anyone
+acting on such Contributor's behalf. Contributions do not include additions to the Program which: (i) are separate
+modules of software distributed in conjunction with the Program under their own license agreement, and (ii) are not
+derivative works of the Program.
+
+"Contributor" means any person or entity that distributes the Program.
+
+"Licensed Patents" mean patent claims licensable by a Contributor which are necessarily infringed by the use or sale
+of its Contribution alone or when combined with the Program.
+
+"Program" means the Contributions distributed in accordance with this Agreement.
+
+"Recipient" means anyone who receives the Program under this Agreement, including all Contributors.
+
+2. GRANT OF RIGHTS
+
+a) Subject to the terms of this Agreement, each Contributor hereby grants Recipient a non-exclusive, worldwide,
+royalty-free copyright license to reproduce, prepare derivative works of, publicly display, publicly perform,
+distribute and sublicense the Contribution of such Contributor, if any, and such derivative works, in source code
+and object code form.
+
+b) Subject to the terms of this Agreement, each Contributor hereby grants Recipient a non-exclusive, worldwide,
+royalty-free patent license under Licensed Patents to make, use, sell, offer to sell, import and otherwise transfer
+the Contribution of such Contributor, if any, in source code and object code form. This patent license shall apply to
+the combination of the Contribution and the Program if, at the time the Contribution is added by the Contributor, such
+addition of the Contribution causes such combination to be covered by the Licensed Patents. The patent license shall
+not apply to any other combinations which include the Contribution. No hardware per se is licensed hereunder.
+
+c) Recipient understands that although each Contributor grants the licenses to its Contributions set forth herein, no
+assurances are provided by any Contributor that the Program does not infringe the patent or other intellectual property
+rights of any other entity. Each Contributor disclaims any liability to Recipient for claims brought by any other entity
+based on infringement of intellectual property rights or otherwise. As a condition to exercising the rights and licenses
+granted hereunder, each Recipient hereby assumes sole responsibility to secure any other intellectual property rights
+needed, if any. For example, if a third party patent license is required to allow Recipient to distribute the Program,
+it is Recipient's responsibility to acquire that license before distributing the Program.
+
+d) Each Contributor represents that to its knowledge it has sufficient copyright rights in its Contribution, if any,
+to grant the copyright license set forth in this Agreement.
+
+3. REQUIREMENTS
+
+A Contributor may choose to distribute the Program in object code form under its own license agreement, provided that:
+
+a) it complies with the terms and conditions of this Agreement; and
+
+b) its license agreement:
+
+i) effectively disclaims on behalf of all Contributors all warranties and conditions, express and implied, including
+warranties or conditions of title and non-infringement, and implied warranties or conditions of merchantability and
+fitness for a particular purpose;
+
+ii) effectively excludes on behalf of all Contributors all liability for damages, including direct, indirect, special,
+incidental and consequential damages, such as lost profits;
+
+iii) states that any provisions which differ from this Agreement are offered by that Contributor alone and not by any
+other party; and
+
+iv) states that source code for the Program is available from such Contributor, and informs licensees how to obtain
+it in a reasonable manner on or through a medium customarily used for software exchange.
+
+When the Program is made available in source code form:
+
+a) it must be made available under this Agreement; and
+
+b) a copy of this Agreement must be included with each copy of the Program.
+
+Contributors may not remove or alter any copyright notices contained within the Program.
+
+Each Contributor must identify itself as the originator of its Contribution, if any, in a manner that reasonably
+allows subsequent Recipients to identify the originator of the Contribution.
+
+4. COMMERCIAL DISTRIBUTION
+
+Commercial distributors of software may accept certain responsibilities with respect to end users, business partners
+and the like. While this license is intended to facilitate the commercial use of the Program, the Contributor who
+includes the Program in a commercial product offering should do so in a manner which does not create potential
+liability for other Contributors. Therefore, if a Contributor includes the Program in a commercial product offering,
+such Contributor ("Commercial Contributor") hereby agrees to defend and indemnify every other Contributor
+("Indemnified Contributor") against any losses, damages and costs (collectively "Losses") arising from claims,
+lawsuits and other legal actions brought by a third party against the Indemnified Contributor to the extent caused
+by the acts or omissions of such Commercial Contributor in connection with its distribution of the Program in a
+commercial product offering. The obligations in this section do not apply to any claims or Losses relating to any
+actual or alleged intellectual property infringement. In order to qualify, an Indemnified Contributor must: a) promptly
+notify the Commercial Contributor in writing of such claim, and b) allow the Commercial Contributor to control, and
+cooperate with the Commercial Contributor in, the defense and any related settlement negotiations. The
+Indemnified Contributor may participate in any such claim at its own expense.
+
+For example, a Contributor might include the Program in a commercial product offering, Product X. That Contributor is
+then a Commercial Contributor. If that Commercial Contributor then makes performance claims, or offers warranties
+related to Product X, those performance claims and warranties are such Commercial Contributor's responsibility alone.
+Under this section, the Commercial Contributor would have to defend claims against the other Contributors related to
+those performance claims and warranties, and if a court requires any other Contributor to pay any damages as a result,
+the Commercial Contributor must pay those damages.
+
+5. NO WARRANTY
+
+EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR
+CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE,
+NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely responsible for
+determining the appropriateness of using and distributing the Program and assumes all risks associated with its
+exercise of rights under this Agreement , including but not limited to the risks and costs of program errors,
+compliance with applicable laws, damage to or loss of data, programs or equipment, and unavailability or interruption
+of operations.
+
+6. DISCLAIMER OF LIABILITY
+
+EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR
+ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION LOST
+PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS
+GRANTED HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+
+7. GENERAL
+
+If any provision of this Agreement is invalid or unenforceable under applicable law, it shall not affect the validity
+or enforceability of the remainder of the terms of this Agreement, and without further action by the parties hereto,
+such provision shall be reformed to the minimum extent necessary to make such provision valid and enforceable.
+
+If Recipient institutes patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit)
+alleging that the Program itself (excluding combinations of the Program with other software or hardware) infringes
+such Recipient's patent(s), then such Recipient's rights granted under Section 2(b) shall terminate as of the date
+such litigation is filed.
+
+All Recipient's rights under this Agreement shall terminate if it fails to comply with any of the material terms or
+conditions of this Agreement and does not cure such failure in a reasonable period of time after becoming aware of
+such noncompliance. If all Recipient's rights under this Agreement terminate, Recipient agrees to cease use and
+distribution of the Program as soon as reasonably practicable. However, Recipient's obligations under this Agreement
+and any licenses granted by Recipient relating to the Program shall continue and survive.
+
+Everyone is permitted to copy and distribute copies of this Agreement, but in order to avoid inconsistency the
+Agreement is copyrighted and may only be modified in the following manner. The Agreement Steward reserves the right
+to publish new versions (including revisions) of this Agreement from time to time. No one other than the Agreement
+Steward has the right to modify this Agreement. The Eclipse Foundation is the initial Agreement Steward. The Eclipse
+Foundation may assign the responsibility to serve as the Agreement Steward to a suitable separate entity. Each new
+version of the Agreement will be given a distinguishing version number. The Program (including Contributions) may
+always be distributed subject to the version of the Agreement under which it was received. In addition, after a new
+version of the Agreement is published, Contributor may elect to distribute the Program (including its Contributions)
+under the new version. Except as expressly stated in Sections 2(a) and 2(b) above, Recipient receives no rights or
+licenses to the intellectual property of any Contributor under this Agreement, whether expressly, by implication,
+estoppel or otherwise. All rights in the Program not expressly granted under this Agreement are reserved.
+
+This Agreement is governed by the laws of the State of New York and the intellectual property laws of the United States
+of America. No party to this Agreement will bring a legal action under this Agreement more than one year after the
+cause of action arose. Each party waives its rights to a jury trial in any resulting litigation.
+
+For Java Service Wrapper:
+Copyright (c) 1999, 2006 Tanuki Software, Inc.
+
+Permission is hereby granted, free of charge, to any person
+obtaining a copy of the Java Service Wrapper and associated
+documentation files (the "Software"), to deal in the Software
+without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sub-license,
+and/or sell copies of the Software, and to permit persons to
+whom the Software is furnished to do so, subject to the
+following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NON-INFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+OTHER DEALINGS IN THE SOFTWARE.
+
+
+Portions of the Software have been derived from source code
+developed by Silver Egg Technology under the following license:
+
+BEGIN Silver Egg Techology License -----------------------------------
+
+ Copyright (c) 2001 Silver Egg Technology
+
+ Permission is hereby granted, free of charge, to any person
+ obtaining a copy of this software and associated documentation
+ files (the "Software"), to deal in the Software without
+ restriction, including without limitation the rights to use,
+ copy, modify, merge, publish, distribute, sub-license, and/or
+ sell copies of the Software, and to permit persons to whom the
+ Software is furnished to do so, subject to the following
+ conditions:
+
+ The above copyright notice and this permission notice shall be
+ included in all copies or substantial portions of the Software.
+
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+ OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ NON-INFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+ HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+ WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+ OTHER DEALINGS IN THE SOFTWARE.
+
+END Silver Egg Techology License -------------------------------------
+
+For slf4j
+Copyright (c) 2004-2011 QOS.ch
+All rights reserved.
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. \ No newline at end of file
diff --git a/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/NOTICE b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/NOTICE
new file mode 100644
index 0000000000..a0a4468605
--- /dev/null
+++ b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/NOTICE
@@ -0,0 +1,65 @@
+Apache Karaf
+Copyright 2010-2018 The Apache Software Foundation
+
+I. Included Software
+
+This product includes software developed at
+The Apache Software Foundation (http://www.apache.org/).
+Licensed under the Apache License 2.0.
+
+This product includes software developed at
+The OSGi Alliance (http://www.osgi.org/).
+Copyright (c) OSGi Alliance (2000, 2010).
+Licensed under the Apache License 2.0.
+
+This product includes software developed at
+OW2 (http://www.ow2.org/).
+Licensed under the BSD License.
+
+This product includes software developed at
+OPS4J (http://www.ops4j.org/).
+Licensed under the Apache License 2.0.
+
+This product includes software developed at
+Eclipse Foundation (http://www.eclipse.org/).
+Licensed under the EPL.
+
+This product includes software written by
+Antony Lesuisse.
+Licensed under Public Domain.
+
+II. Used Software
+
+This product uses software developed at
+FUSE Source (http://www.fusesource.org/).
+Licensed under the Apache License 2.0.
+
+This product uses software developed at
+AOP Alliance (http://aopalliance.sourceforge.net/).
+Licensed under the Public Domain.
+
+This product uses software developed at
+Tanuki Software (http://www.tanukisoftware.com/).
+Licensed under the Apache License 2.0.
+
+This product uses software developed at
+Jasypt (http://jasypt.sourceforge.net/).
+Licensed under the Apache License 2.0.
+
+This product uses software developed at
+JLine (https://github.com/jline/).
+Licensed under the BSD License.
+
+This product uses software developed at
+SLF4J (http://www.slf4j.org/).
+Licensed under the MIT License.
+
+This product uses software developed at
+SpringSource (http://www.springsource.org/).
+Licensed under the Apache License 2.0.
+
+III. License Summary
+- Apache License 2.0
+- BSD License
+- EPL License
+- MIT License
diff --git a/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/README.md b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/README.md
new file mode 100644
index 0000000000..402d9cc145
--- /dev/null
+++ b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/README.md
@@ -0,0 +1,92 @@
+<!--
+ 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.
+-->
+
+# Apache Karaf
+
+[Apache Karaf](http://karaf.apache.org) is a modern and polymorphic applications container.
+It's a lightweight, powered, and enterprise ready container powered by OSGi.
+[Apache Karaf](http://karaf.apache.org) is a "product project", providing a complete and turnkey runtime. The runtime is
+"multi-facets", meaning that you can deploy different kind of applications: OSGi or non OSGi, webapplication, services based, ...
+
+## Overview
+
+* **Hot deployment**: Karaf supports hot deployment of OSGi bundles by monitoring
+ jar files inside the [home]/deploy directory. Each time a jar is copied in this folder,
+ it will be installed inside the runtime. You can then update or delete it and changes will
+ be handled automatically. In addition, the Kernel also supports exploded bundles and custom
+ deployers (a spring one is included by default).
+* **Dynamic configuration**: Services are usually configured through the ConfigurationAdmin OSGi
+ service. Such configuration can be defined in Karaf using property files inside
+ the [home]/etc directory. These configurations are monitored and changes on the properties
+ files will be propagated to the services.
+* **Resolver**: Apache Karaf resolver is able to deal with requirements and capabilities of your module,
+ simplifying the way of deploying your applications.
+* **Logging System**: using a centralized logging back end supported by Log4J, Karaf
+ supports a number of different APIs (JDK 1.4, JCL, SLF4J, Avalon, Tomcat, OSGi)
+* **Provisioning**: Provisioning of libraries or applications can be done through a number of
+ different ways, by which they will be downloaded locally, installed and started. It interacts
+ with the resolver to automatically install the required components.
+* **Native OS integration**: Karaf can be integrated into your own Operating System as
+ a service so that the lifecycle will be bound to your Operating System.
+* **Extensible Shell console**: Karaf features a nice text console where you can manage the
+ services, install new applications or libraries and manage their state. This shell is easily
+ extensible by deploying new commands dynamically along with new features or applications.
+* **Remote access**: use any SSH client to connect to the kernel and issue commands in the console
+* **Security & ACL** framework based on JAAS providing complete RBAC solution.
+* **Managing instances**: Karaf provides simple commands for managing instances of Karaf.
+ You can easily create, delete, start and stop instances of Karaf through the console.
+* **Enterprise features**: Karaf provides a bunch of enterprise features that you can use in your applications (JDBC, JPA, JTA, JMS, ...).
+* **WebContainer**: Karaf provides a full features web container, allowing you to deploy your web applications.
+* **REST & Services**: Karaf supports different service frameworks as Apache CXF allowing you to easily implements your services.
+* **Karaf Extensions**: Karaf project is a complete ecosystem. The container can be extended by other Karaf subprojects such as Karaf Decanter, Karaf Cellar, Karaf Cave, ...
+* **Third Party Extensions**: Karaf is a supported runtime for a lot of other projects as [Apache Camel](http://camel.apache.org), and much more.
+
+## Getting Started
+
+For an Apache Karaf source distribution, please read [BUILDING.md](https://github.com/apache/karaf/BUILDING.md) for instructions on building Apache Karaf.
+
+For an Apache Karaf binary distribution, please read [RELEASE-NOTES.md](https://github.com/apache/karaf/RELEASE-NOTES.md) for installation instructions and list of supported
+and unsupported features.
+
+The PDF manual is the right place to find any information about Karaf.
+
+The [examples](http://github.com/apache/karaf/examples) provide a bunch of turnkey minimal applications that you can deploy in Apache Karaf and extend/template as you want.
+
+## Contact Us
+
+To get involved in Apache Karaf:
+
+* [Subscribe](mailto:user-subscribe@karaf.apache.org) or [mail](mailto:user@karaf.apache.org) the [user@karaf.apache.org](http://mail-archives.apache.org/mod_mbox/karaf-user/) list.
+* [Subscribe](mailto:dev-subscribe@karaf.apache.org) or [mail](mailto:dev@karaf.apache.org) the [dev@karaf.apache.org](http://mail-archives.apache.org/mod_mbox/karaf-dev/) list.
+* Report issues on [JIRA](https://issues.apache.org/jira/browse/KARAF).
+
+We also have a [contributor's guide](http://karaf.apache.org/community.html#contribute).
+
+## More Information
+
+* [Apache Karaf](http://karaf.apache.org)
+* [Apache Karaf News](http://karaf.apache.org/news.html)
+* [Apache Karaf Download](http://karaf.apache.org/download.html)
+* [Apache Karaf Documentation](http://karaf.apache.org/documentation.html)
+* [Apache Karaf Community](http://karaf.apache.org/community.html)
+* [Apache Software Foundation](https://www.apache.org)
+
+Many thanks for using Apache Karaf.
+
+**The Apache Karaf Team**
diff --git a/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/RELEASE-NOTES.md b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/RELEASE-NOTES.md
new file mode 100644
index 0000000000..21aecbb265
--- /dev/null
+++ b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/RELEASE-NOTES.md
@@ -0,0 +1,622 @@
+<!--
+ 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.
+-->
+
+## Apache Karaf 4.2.1
+
+Apache Karaf 4.2.1 is a major update on the 4.2.x series. It brings bunch of fixes, dependencies updates
+and new features, especially:
+
+* new assembly tooling to create Karaf Docker images
+* new Docker feature allowing you to manipulate Docker directly from a Karaf instance
+* Better Java 9/10/11 support
+* new examples directly as part of the Karaf distribution
+* improved KarafTestSupport allowing you to easily implement your itests
+
+### ChangeLog
+
+#### Bug
+ * [KARAF-4996] - Missing packages in created instances
+ * [KARAF-5422] - Feature Repository with Spaces in Path
+ * [KARAF-5683] - Completion is "weird" on Windows 8
+ * [KARAF-5689] - Console is broken after Ctrl+C
+ * [KARAF-5690] - Add missing jaxb endorsed / osgi classes
+ * [KARAF-5692] - Alias not honoured in config:edit --factory --alias
+ * [KARAF-5694] - strip url to ensure it's a valid one which could download
+ * [KARAF-5695] - Starting Karaf Container 4.2.0 in Ubuntu 17.10 with OpenJDK 9 fails
+ * [KARAF-5696] - Java detection is broken on windows
+ * [KARAF-5697] - feature:start and feature:stop should be able to select multiple features
+ * [KARAF-5699] - Upgrade to jolokia 1.5.0
+ * [KARAF-5701] - feature installation: Crash and ResolutionException
+ * [KARAF-5705] - Java 10 issues with jetty
+ * [KARAF-5729] - Karaf won't start on Solaris 11 and AIX 7.2
+ * [KARAF-5748] - Command results are not printed anymore unless they are strings
+ * [KARAF-5749] - Possible shell crash when executing malformed script
+ * [KARAF-5750] - Karaf console not calling Converter for custom gogo commands
+ * [KARAF-5753] - Karaf won't start correctly on HP-UX
+ * [KARAF-5760] - VerifyMojo should allow blacklisting feature repositories
+ * [KARAF-5765] - karaf-service script not working on HP-UX
+ * [KARAF-5768] - karaf-service script not working on AIX platforms
+ * [KARAF-5781] - Properties edit doesn't conserve the existing ones
+ * [KARAF-5791] - need to check the blacklist when we add feature repo through JMX
+ * [KARAF-5798] - Karaf slave instance does not write pid or port file until it becomes master
+ * [KARAF-5809] - 'simple' host.key files no longer work
+ * [KARAF-5840] - Karaf specs activator is missing when used with wrapper
+ * [KARAF-5842] - Console unusable in docker
+ * [KARAF-5850] - JPA features should provide the engine capability
+ * [KARAF-5851] - Remove heading spaces in the cfg files
+ * [KARAF-5862] - org.apache.karaf.specs.java.xml doesn't work with IBM JDK
+
+#### New Feature
+ * [KARAF-5761] - Print better usage of commands in karaf shell
+ * [KARAF-5867] - Provide openjpa 3.0.0 support
+ * [KARAF-5870] - Upgrade to Hibernate Validator 6.0.12.Final
+ * [KARAF-5871] - Upgrade to ASM 6.2.1
+ * [KARAF-5872] - Upgrade to Spring 5.0.8.RELEASE
+
+#### Improvement
+ * [KARAF-3235] - Provide karaf itest common bundle
+ * [KARAF-5363] - Add --no-start option to kar:install, kar cfg and kar MBean
+ * [KARAF-5644] - Add docker feature
+ * [KARAF-5685] - Add ProfileMBean
+ * [KARAF-5700] - handle \* scope specifically for ACL match
+ * [KARAF-5706] - Upgrade to Felix Utils 1.11.0
+ * [KARAF-5742] - Possibility to configure colors for karaf shell
+ * [KARAF-5752] - Add bundle ID in bundle:classes output
+ * [KARAF-5759] - Add an option to config:list to list only the PIDs
+ * [KARAF-5778] - NPE in the ssh client if TERM is null
+ * [KARAF-5787] - Improve scheduler whiteboard to avoid ClassCastException
+ * [KARAF-5796] - Heap dump needs to end in .hprof w/ newer JDK
+ * [KARAF-5804] - FastDateFormatTest fails on EDT (jdk 1.8.0_151)
+ * [KARAF-5805] - Add feature required item field to JmxFeature CompositeData
+ * [KARAF-5839] - Add assertServiceAvailable() in KarafTestSupport
+ * [KARAF-5847] - org.apache.felix.coordinator could be installed with configadmin, to prevent its refreshes
+ * [KARAF-5868] - be able to remove properties during distribution assembly
+
+#### Test
+ * [KARAF-5845] - JMXSecurityTest.testJMXSecurityAsManager is flaky
+ * [KARAF-5846] - ConfigManagedServiceFactoryTest.updateProperties is flacky
+
+#### Task
+ * [KARAF-2511] - Review and update documentation
+ * [KARAF-5764] - ensure we can build and run Karaf master with JDK11
+
+#### Dependency upgrade
+ * [KARAF-5698] - Upgrade to Felix Gogo Runtime / JLine 1.0.12
+ * [KARAF-5710] - Upgrade to Felix Resolver 1.16.0
+ * [KARAF-5713] - Upgrade to Maven API 3.5.3
+ * [KARAF-5714] - Upgrade to ServiceMix Spec Locator 2.10
+ * [KARAF-5715] - Upgrade to XBean 4.8
+ * [KARAF-5716] - Upgrade to awaitability 3.1.0
+ * [KARAF-5717] - Upgrade to easymock 3.6
+ * [KARAF-5718] - Upgrade to Equinox 3.12.100
+ * [KARAF-5719] - Upgrade to Jansi 1.17.1
+ * [KARAF-5720] - Upgrade to JLine 3.7.1
+ * [KARAF-5721] - Upgrade to Pax JMS 1.0.1
+ * [KARAF-5722] - Upgrade to ASM 6.2 & Aries Proxy Impl 1.1.2
+ * [KARAF-5723] - Upgrade to Pax JDBC 1.3.0
+ * [KARAF-5726] - Upgrade to Aries Proxy version Java 10 compliant
+ * [KARAF-5728] - Upgrade to Pax Web 7.1.1 & Jetty 9.4.10.v20180503
+ * [KARAF-5732] - Upgrade to Felix ConfigAdmin 1.9.0
+ * [KARAF-5733] - Upgrade to Felix EventAdmin 1.5.0
+ * [KARAF-5734] - Upgrade to Felix Metatype 1.2.0
+ * [KARAF-5735] - Upgrade to Felix SCR 2.1.0
+ * [KARAF-5736] - Upgrade to Narayana 5.8.1.Final
+ * [KARAF-5737] - Upgrade to Aries JPA 2.7.0
+ * [KARAF-5738] - Upgrade to maven-resources-plugin 3.1.0
+ * [KARAF-5745] - Upgrade to Spring 5.0.5.RELEASE
+ * [KARAF-5758] - Update to Hibernate Validator 6.0.10.Final
+ * [KARAF-5766] - Upgrade to Felix Connect 0.2.0
+ * [KARAF-5771] - Upgrade to Pax Transx 0.3.0
+ * [KARAF-5779] - Upgrade to Spring 4.3.17.RELEASE and 5.0.6.RELEASE
+ * [KARAF-5800] - Upgrade to Felix Gogo 1.1.0
+ * [KARAF-5807] - Upgrade to Pax Exam 4.12.0
+ * [KARAF-5812] - Upgrade to Spring 4.3.18.RELEASE
+ * [KARAF-5813] - Upgrade to Spring 5.0.7.RELEASE
+ * [KARAF-5815] - Upgrade to commons-compress 1.17
+ * [KARAF-5816] - Upgrade to Aries Transaction Blueprint 2.2.0
+ * [KARAF-5817] - Upgrade to maven-bundle-plugin 3.5.1
+ * [KARAF-5818] - Upgrade to Felix ConfigAdmin 1.9.2
+ * [KARAF-5821] - Upgrade to Maven API 3.5.4
+ * [KARAF-5822] - Upgrade to Maven Wagon 3.1.0
+ * [KARAF-5824] - Upgrade to awaitility 3.1.1
+ * [KARAF-5826] - Upgrade to narayana 5.9.0.Final
+ * [KARAF-5827] - Upgrade to jline 3.9.0
+ * [KARAF-5829] - Upgrade to Xerces 2.12.0
+ * [KARAF-5830] - Upgrade to tagsoup 1.2.1
+ * [KARAF-5831] - Upgrade to maven-enforcer-plugin 3.0.0-M2
+ * [KARAF-5832] - Upgrade to maven-jar-plugin 3.1.0
+ * [KARAF-5833] - Upgrade to maven-project-info-reports-plugin 3.0.0
+ * [KARAF-5834] - Upgrade to maven-site-plugin 3.7.1
+ * [KARAF-5835] - Upgrade to maven-surefire-plugin 2.22.0
+ * [KARAF-5836] - Upgrade to maven-war-plugin 3.2.2
+ * [KARAF-5837] - Upgrade to maven-jacoco-plugin 0.8.1
+ * [KARAF-5838] - Upgrade to eclipselink 2.7.2
+ * [KARAF-5841] - Upgrade to Pax Web 7.2.1
+ * [KARAF-5849] - Upgrade to Pax Transx 0.4.0
+ * [KARAF-5856] - Upgrade to Pax Web 7.2.2
+ * [KARAF-5857] - Upgrade to maven-compiler-plugin 3.8.0
+ * [KARAF-5858] - Upgrade to Felix ConfigAdmin 1.9.4
+ * [KARAF-5859] - Upgrade to Hibernate Validator 6.0.11.Final
+ * [KARAF-5861] - Upgrade to Pax Web 7.2.3 / Jetty 9.4.11.v20180605
+ * [KARAF-5865] - Upgrade to eclipselink 2.7.3
+ * [KARAF-5866] - Upgrade to Felix SCR 2.1.2
+ * [KARAF-5869] - Upgrade to awaitility 3.1.2
+
+## Apache Karaf 4.2.0
+
+Apache Karaf 4.2.0 is the first GA release on the 4.2.x series. We encourage all users to upgrade to this
+ new stable series, bringing a lot of fixes, improvements and new features.
+
+### ChangeLog
+
+#### Bug
+ * [KARAF-5342] - No reference to branding-ssh.properties in console branding section
+ * [KARAF-5384] - Optional dependencies in MINA SSHD Core cause system bundle refreshes
+ * [KARAF-5473] - Karaf SSH session timing out
+ * [KARAF-5554] - the karaf.secured.command.compulsory.roles shouldn't apply for alias commands
+ * [KARAF-5559] - log:tail kills ssh & karaf when root logger is in DEBUG
+ * [KARAF-5563] - Enf-of-line display problem with the ShellTable on windows
+ * [KARAF-5566] - Features installed through prerequisites lead to errors when uninstalling features
+ * [KARAF-5569] - Cannot pass commands to client script when sftpEnabled=false
+ * [KARAF-5573] - Karaf on Windows does not pass the version check when JAVA_HOME contains whitespace
+ * [KARAF-5581] - bin/client -u karaf -p karaf can login if we enable jasypt for jaas
+ * [KARAF-5585] - Verify mojo configure pax-url-mvn with non existent settings.xml
+ * [KARAF-5591] - Blacklisted features should be considered as dependencies and/or conditionals
+ * [KARAF-5592] - Karaf shell unexpected exit when Ctrl + C during log:display or select text then press Enter
+ * [KARAF-5610] - Build problems with JDK9
+ * [KARAF-5611] - karaf.bat still uses endorsed dirs with Java 9 install
+ * [KARAF-5634] - karaf/karaf.bat scripts do not handle lib.next->lib update correctly
+ * [KARAF-5639] - NPE during instance:start
+ * [KARAF-5641] - Karaf boot scripts need to deal with JDK10 version patterns
+ * [KARAF-5642] - karaf:deploy goal broken
+ * [KARAF-5645] - Karaf crashes when using the character ']' in the console
+ * [KARAF-5646] - Support env:XXX subtitution missing for system.properties
+ * [KARAF-5647] - start, stop, shell, status and client fail on Solaris Sparc 11
+ * [KARAF-5657] - client.bat doesn't work on Windows
+ * [KARAF-5667] - Installing the audit-log feature never ends
+ * [KARAF-5670] - pax-web throws an exception when running with a security manager
+ * [KARAF-5671] - Demo profiles still use "old style" pax-logging configuration
+ * [KARAF-5672] - Servlets urls are displayed without the http context path
+ * [KARAF-5673] - karaf-maven-plugin can be very long to apply profile
+ * [KARAF-5678] - Existing configfiles (in kar) may be overwritten when building assembly
+ * [KARAF-5688] - XML parsing fails when xerces is installed on JDK 8
+
+#### New Feature
+ * [KARAF-1677] - Unpacked KAR deployment
+ * [KARAF-5614] - Add HttpRedirect/Proxy service with http:redirect/proxy command & MBean
+ * [KARAF-5629] - Add new karaf commands shell:elif and shell:else
+ * [KARAF-5635] - Integrate WebConsole Memory Usage plugin
+ * [KARAF-5665] - Sometimes the command description does not show when listing commands with "TAB"
+ * [KARAF-5680] - Provide support for xml parsers deployed as bundle on Java 9
+
+#### Improvement
+ * [KARAF-2688] - Karaf info - Add memory details about perm gen pool
+ * [KARAF-4496] - UserPrincipal lookup in the JAAS' BackingEngine
+ * [KARAF-5448] - Fix Java 9 warnings
+ * [KARAF-5558] - Be able to configure the Quartz Scheduler
+ * [KARAF-5568] - Karaf Commands cannot have return codes
+ * [KARAF-5578] - Add repo URL for sling
+ * [KARAF-5588] - Increase max number of threads in the scheduler by default
+ * [KARAF-5604] - karaf:features-generate-descriptor takes long when faced with complex feature dependencies
+ * [KARAF-5627] - Upgrade to PAX-JMS 0.3.0
+ * [KARAF-5677] - deploy goal throws NPE with artifactLocations is not provided
+ * [KARAF-5679] - Upgrade to Hibernate Validator 6.0.9.Final
+
+#### Task
+ * [KARAF-5586] - Upgrade to Hibernate-validator 5.4.2
+
+#### Dependency upgrade
+ * [KARAF-5574] - Upgrade to Pax Web 7.0.0/Jetty 9.4.6
+ * [KARAF-5584] - Upgrade to SSHD 1.7.0
+ * [KARAF-5595] - Upgrade toJLine 3.6.0 and Jansi 1.17
+ * [KARAF-5596] - Upgrade to Spring 5.0.3.RELEASE
+ * [KARAF-5597] - Upgrade to Spring 4.3.14.RELEASE
+ * [KARAF-5599] - Upgrade Narayana to version 5.7.2.Final
+ * [KARAF-5602] - Upgrade to Spring Security 4.2.4.RELEASE
+ * [KARAF-5605] - Upgrade to OpenJPA 2.4.2
+ * [KARAF-5606] - Upgrade to EclipseLink 2.7.1
+ * [KARAF-5607] - Upgrade to Hibernate 5.2.9.Final
+ * [KARAF-5612] - Upgrade to blueprint-core 1.9.0, blueprint-cm-1.2.0, blueprint-spring-0.6.0 and blueprint-spring-extender-0.4.0
+ * [KARAF-5616] - Upgrade to SCR 2.0.14
+ * [KARAF-5617] - Upgrade to JNA 4.5.1
+ * [KARAF-5618] - Upgrade to Aries JMX Blueprint 1.2.0
+ * [KARAF-5619] - Upgrade to Aries JMX Core 1.1.8 & JMX Whiteboard 1.2.0
+ * [KARAF-5622] - Upgrade to commons-compress 1.16.1
+ * [KARAF-5623] - Upgrade to maven-bundle-plugin 3.5.0
+ * [KARAF-5624] - Upgrade to jline 3.6.1
+ * [KARAF-5625] - Upgrade to Pax Swissbox 1.8.3
+ * [KARAF-5631] - Upgrade to PAX-CDI 1.0.0
+ * [KARAF-5658] - Upgrade to Spring 5.0.4.RELEASE
+ * [KARAF-5668] - Upgrade to JLine 3.6.2
+ * [KARAF-5675] - Upgrade to XBean 4.7
+
+## Apache Karaf 4.2.0.M2
+
+ Apache Karaf 4.2.0.M2 is a the second technical preview of the 4.2.x series. It's not yet a GA release. It
+ brings a lot of improvements and new features, in preparation for the first 4.2.0 GA release.
+
+### ChangeLog
+
+#### Bug
+ * [KARAF-2792] - shared cm-properties empty for second bundle
+ * [KARAF-3875] - Karaf scheduler should wrap QuartzException in exported SchedulerException
+ * [KARAF-3976] - Broken compatibility with 3.x jdbc DataSources
+ * [KARAF-4181] - blacklist.properties and overrides.properties are not properties file
+ * [KARAF-4662] - Unable to create Karaf Cave 4.0.0 Kar file
+ * [KARAF-4684] - karaf-maven-plugin assembly goal fails to find nested features with explicit version containing qualifier
+ * [KARAF-4912] - Cannot register Servlet via http-whiteboard under Java 9
+ * [KARAF-5203] - KAR:Create missing bundles that are marked conditional
+ * [KARAF-5210] - Seemingly random NPEs from Aether resolver
+ * [KARAF-5372] - startup.properties doesn't respect overrides
+ * [KARAF-5446] - Fragment bundles are not resolved properly when installing/restarting the container
+ * [KARAF-5452] - [SCR] Karaf can't activate/deactivate SCR components via JMX
+ * [KARAF-5455] - remove redundant sshRole comment
+ * [KARAF-5458] - karaf-maven-plugin fails to assemble artifacts if only available within local reactor
+ * [KARAF-5461] - incorrect filter in EncryptionSupport of jaas modules
+ * [KARAF-5464] - karaf.bat file is missing KARAF_SYSTEM_OPTS property
+ * [KARAF-5466] - Karaf does not start on JDK 9.0.1
+ * [KARAF-5467] - Karaf doesn't recognize Java 9 on Ubuntu 16.04
+ * [KARAF-5470] - Karaf fails build with Java 9.0.1
+ * [KARAF-5472] - Karaf RmiRegistryFactory throws a warning with Java 9
+ * [KARAF-5478] - Provide a Version class to check Karaf version used.
+ * [KARAF-5480] - The webconsole gogo plugin is broken
+ * [KARAF-5495] - Upgrade SyncopeBackingEngineFactory to support Syncope 2.x
+ * [KARAF-5496] - NPEs in SyncopeLoginModule if "version" is not specified
+ * [KARAF-5498] - SyncopeLoginModule parses roles instead of groups for Syncope 2.0.x
+ * [KARAF-5505] - Jetty version out of date
+ * [KARAF-5508] - Error using OSGi JAX RS Connector in Java 9
+ * [KARAF-5527] - the karaf.secured.command.compulsory.roles should only affect command ACL rules
+ * [KARAF-5528] - Karaf feature deployer should stop refreshed bundles together with the updated ones
+ * [KARAF-5533] - KarArtifactInstaller does not properly detect already installed KAR files
+ * [KARAF-5541] - ensure check the compulsory.roles even there's no ACL for a specific command scope
+ * [KARAF-5542] - Installing a feature triggers restarting previous ones
+ * [KARAF-5546] - incorrect acl rules for system:start-level
+ * [KARAF-5547] - Blueprint namespace handlers cause warning to be printed
+
+#### Dependency upgrade
+ * [KARAF-5412] - Upgrade to ASM 6.0
+ * [KARAF-5488] - Upgrade to Felix Framework 5.6.10
+ * [KARAF-5489] - Upgrade to commons-io 2.6
+ * [KARAF-5490] - Upgrade to JNA 4.5.0
+ * [KARAF-5491] - Upgrade to commons-compress 1.15
+ * [KARAF-5516] - Upgrade to commons-lang3 3.7
+ * [KARAF-5517] - Upgrade to Apache Felix Metatype 1.1.6
+ * [KARAF-5518] - Upgrade to Apache Felix WebConsole DS plugin 2.0.8
+ * [KARAF-5519] - Upgrade to Apache Felix WebConsole EventAdmin plugin 1.1.8
+ * [KARAF-5520] - Upgrade to Maven dependencies 3.5.2
+ * [KARAF-5521] - Upgrade to Maven Wagon 3.0.0
+ * [KARAF-5522] - Upgrade to easymock 3.5.1
+ * [KARAF-5523] - Upgrade to Equinox 3.12.50
+ * [KARAF-5524] - Upgrade to maven-dependency-tree 3.0.1
+ * [KARAF-5525] - Upgrade to PAX tinybundle 3.0.0
+ * [KARAF-5531] - Upgrade to maven-compiler-plugin 3.7.0
+ * [KARAF-5532] - Upgrade to maven-dependency-plugin 3.0.2
+ * [KARAF-5535] - Upgrade to maven-javadoc-plugin 3.0.0
+ * [KARAF-5536] - Upgrade to maven-war-plugin 3.2.0
+ * [KARAF-5537] - Upgrade to modello-maven-plugin 1.9.1
+ * [KARAF-5538] - Upgrade to maven-invoker-plugin 3.0.1
+ * [KARAF-5539] - Upgrade to maven-archetype-plugin 3.0.1
+ * [KARAF-5549] - Upgrade to JLine 3.5.4
+ * [KARAF-5550] - Upgrade to pax-url 2.5.4
+ * [KARAF-5551] - Upgrade to Pax Web 6.1.0
+
+#### Improvement
+ * [KARAF-3674] - Document and improve scheduler feature
+ * [KARAF-4329] - Consider bundles from override.properties while creating the assembly
+ * [KARAF-5273] - karaf-maven-plugin assembly should take feature wildcards
+ * [KARAF-5323] - Set multi-location for created configurations
+ * [KARAF-5339] - Allow to define blacklisted bundles in a profile
+ * [KARAF-5418] - SSH public key authentication from LDAP
+ * [KARAF-5448] - Fix Java 9 warnings
+ * [KARAF-5456] - introduce a property karaf.shell.history.file.maxSize to configure the history file size on disk
+ * [KARAF-5476] - Reduce number of logins when using the webconsole
+ * [KARAF-5486] - Add a command to change job scheduling
+ * [KARAF-5494] - Fix performance issue generating service metadata, change logging
+ * [KARAF-5506] - ensure we also check the ACL for alias cmds before auto-completer
+ * [KARAF-5511] - Proper Provide-Capability for org.apache.karaf.jaas.modules.EncryptionService
+ * [KARAF-5529] - Rewrite SCR management layer to more closely follow the real object model
+ * [KARAF-5544] - Provide bundle consistency report from custom Karaf distribution
+ * [KARAF-5548] - Improve the find-class command to support package names
+
+#### New Feature
+ * [KARAF-5307] - Add SchedulerMBean to mimic scheduler shell commands
+ * [KARAF-5447] - Support Spring 5.0.x
+ * [KARAF-5475] - Provide a security audit log
+ * [KARAF-5485] - Be able to disable the sftp server
+
+#### Proposal
+ * [KARAF-5376] - Processor mechanism for feature definitions (a.k.a. "better overrides")
+
+#### Task
+ * [KARAF-5468] - Clean up AssemblyMojo
+
+## Apache Karaf 4.2.0.M1
+
+ Apache Karaf 4.2.0.M1 is a technical preview of the 4.2.x series. It's not yet a GA release. It
+ brings a lot of improvements and new features, including Java 9 support.
+
+### ChangeLog
+
+#### Bug
+ * [KARAF-3347] - 'LATEST' placeholder is not resolved correctly for descriptors and repositories
+ * [KARAF-3429] - always use proxy server listed in maven settings.xml when installing features
+ * [KARAF-3531] - SimpleMavenResolver does not handle wrap: prefix in mvn urls
+ * [KARAF-3875] - Karaf scheduler should wrap QuartzException in exported SchedulerException
+ * [KARAF-4174] - NullPointerException when running obr:info on a bundle served by cave
+ * [KARAF-4380] - Remove blueprint feature in standard distribution
+ * [KARAF-4490] - LDAPLoginModule use authentication to check user password
+ * [KARAF-4603] - Nashorn support in Karaf
+ * [KARAF-4655] - karaf-maven-plugin add-features-to-repo goal can't add Camel feature
+ * [KARAF-4985] - Karaf does not start with JDK 9 in Windows
+ * [KARAF-4988] - Refreshing a feature repository from webconsole fails
+ * [KARAF-5031] - Subshell doesn't show in prompt
+ * [KARAF-5051] - Command "shell wrapper:install" fails
+ * [KARAF-5073] - OpenSSHGeneratorFileKeyProvider is unable to write SSH keys
+ * [KARAF-5078] - Shell crash
+ * [KARAF-5091] - log:get does not show correct level
+ * [KARAF-5094] - Remove -server option in Karaf scripts
+ * [KARAF-5096] - Karaf 4.1.1 Console Issues Over SSH (PuTTY)
+ * [KARAF-5103] - Quick start fails at the step "feature:install camel-spring"
+ * [KARAF-5105] - Issue with bin/shell command in karaf 4.1.1
+ * [KARAF-5106] - karaf-maven-plugin hangs the build (probably when having cyclic deps in the features def)
+ * [KARAF-5109] - endorsed and ext directories are not set properly when using instance start
+ * [KARAF-5115] - Error while installing cxf
+ * [KARAF-5116] - Defining karaf.log.console as a log4j2 log level causes exceptions
+ * [KARAF-5119] - log:tail on OSX does not display updates without user input and exits shell on ctrl + c
+ * [KARAF-5120] - etc/org.apache.karaf.shell.cfg is "raw", all comments are lost in the distribution
+ * [KARAF-5121] - blueprint created by jms:create is not correct
+ * [KARAF-5123] - Executing feature:repo-remove can leave karaf in an invalid state
+ * [KARAF-5124] - NPE when location information is included in console logging pattern
+ * [KARAF-5128] - Upgrade to aries.proxy 1.1.1
+ * [KARAF-5134] - Instance org.apache.karaf.features.cfg refers to 4.1.1-SNAPSHOT
+ * [KARAF-5138] - CTRL-D on a connected instance exits from the root one
+ * [KARAF-5143] - Command cannot be executed via SSH when property "karaf.shell.init.script" (etc/system.properties) has its default value
+ * [KARAF-5144] - java.lang.RuntimeException: Command name evaluates to null: $.jline.terminal
+ * [KARAF-5147] - Upgrade to pax-web-6.0.4
+ * [KARAF-5164] - karaf-maven-plugin fails to verify artifacts if only available within local reactor
+ * [KARAF-5165] - Custom Distributions: Pax-Web gets installed twice
+ * [KARAF-5167] - Instance etc folder is not sync automatically
+ * [KARAF-5171] - Upgrade to ServiceMix Specs 2.9.0
+ * [KARAF-5174] - Uninstalling feature using liquibase-slf4j crashes karaf
+ * [KARAF-5176] - Fix support for characters entered while executing a command
+ * [KARAF-5179] - Setting the karaf.restart.jvm property to true causes system halt commands to behave as reboots
+ * [KARAF-5180] - The framework is restarted and sometimes spits an exception when refreshing a fragment
+ * [KARAF-5181] - NPE while running "threads --tree" command from console
+ * [KARAF-5182] - Console command log:list returns "null"
+ * [KARAF-5184] - ClassLoader leak when org.apache.karaf.shell.core bundle is refreshed
+ * [KARAF-5196] - Strongly consider removing -XX:+UnsyncloadClass from start scripts
+ * [KARAF-5197] - Features deployed from a KAR file do not respect the feature's install setting
+ * [KARAF-5199] - Karaf installs both version of the feature (old and new) in case if referencing feature contains wrapped bundle with package import
+ * [KARAF-5206] - Karaf doesn't start after not clean reboot, because stored PID corresponds to running process
+ * [KARAF-5207] - Features 1.4 namespace not supported by the features deployer
+ * [KARAF-5211] - NPE in StoredWiringResolver if BundleEvent.UNRESOLVED handled before BundleEvent.RESOLVED event
+ * [KARAF-5216] - Exiting karaf shell, mess the bash shell
+ * [KARAF-5218] - bin/client exists when typing CTRL-C
+ * [KARAF-5221] - karaf-maven-plugin's pidsToExtract handled incorrectly
+ * [KARAF-5223] - "Error in initialization script" messages printed to the main console when clients connect through ssh
+ * [KARAF-5229] - The download manager may generate wrong jar with custom urls
+ * [KARAF-5234] - Update BUILDING file to reference Java 8
+ * [KARAF-5245] - Running karaf.bat inside a "Program Files (x86)" directory
+ * [KARAF-5247] - java.lang.InterruptedException after logout command in shell
+ * [KARAF-5250] - SNAPSHOT metadata doesn't match SNAPSHOT artifacts after mvn deploy
+ * [KARAF-5252] - Upgrade Narayana to version 5.6.3.Final
+ * [KARAF-5255] - Upgrade to pax-web-6.0.6
+ * [KARAF-5259] - Duplicate log entries displayed when using log:tail
+ * [KARAF-5260] - log:tail default should start at the end of the file
+ * [KARAF-5264] - Clean up maven dependencies
+ * [KARAF-5267] - Karaf does not work correctly after log:tail
+ * [KARAF-5271] - Improve JDBC generic lock to better support network glitches
+ * [KARAF-5276] - Do not use right prompt by default
+ * [KARAF-5279] - InterruptedException when updating the shell.core bundle
+ * [KARAF-5283] - Karaf in offline (no internet) environment - NamespaceHandler bugs
+ * [KARAF-5298] - config:update doesn't create the cfg file in the etc folder
+ * [KARAF-5304] - checkRootInstance function in karaf script fails under AIX
+ * [KARAF-5305] - FeatureConfigInstaller writes incorrect config if append=true and file already exists
+ * [KARAF-5311] - NPE in karaf-maven-plugin when specifying descriptor by file url
+ * [KARAF-5312] - bin/stop script output some unwanted message on mac
+ * [KARAF-5313] - Exception when deleting a .cfg file from hot deploy directory
+ * [KARAF-5314] - The performance of profile builder used by karaf maven plugin has reduced significantly in 4.1 compared to 4.0
+ * [KARAF-5315] - Race condition during shutdown using SIGTERM
+ * [KARAF-5317] - "Exception in thread "SIGWINCH handler" java.lang.UnsupportedOperationException" occurs when resizing the console while `log:tail` is run
+ * [KARAF-5320] - Karaf Command Arguments escapes backslash characters
+ * [KARAF-5326] - variables in cfg files are expanded
+ * [KARAF-5327] - Threads not stopped on karaf.restart + bundle(0).stop()
+ * [KARAF-5328] - NPE is thrown when execute source command from client/ssh
+ * [KARAF-5330] - Require a specific role to access the SSH console
+ * [KARAF-5331] - Use shell command access control lists during command completion
+ * [KARAF-5332] - bin/stop script fails when KARAF_DEBUG is set
+ * [KARAF-5333] - UnsupportedCharsetException: cp65001 and unprintable characters from karaf 4.1.2 console
+ * [KARAF-5334] - Fix broken shell.support.table.ShellTableTest on Windows
+ * [KARAF-5337] - karaf-maven-plugin generates an "override.properties" instead of "overrides.properties"
+ * [KARAF-5338] - Unable to access the local JMX server on OSX
+ * [KARAF-5340] - A "Set<LocalDependency>" cannot contain a "Artifact" in Dependency31Helper
+ * [KARAF-5343] - Upgrade to pax-web-6.0.7
+ * [KARAF-5344] - Remote shell *really* doesn't like you resizing the console window
+ * [KARAF-5352] - KARAF_ETC envvar ignored
+ * [KARAF-5355] - The scripts triggered with {{scheduler::schedule}} command fail to execute
+ * [KARAF-5361] - shell:watch is broken
+ * [KARAF-5371] - Race condition between FeatureService and Fileinstall
+ * [KARAF-5373] - Karaf-maven-plugin fails to create feature file
+ * [KARAF-5374] - karaf-maven-plugin can't configure the start-level for the startupBundles
+ * [KARAF-5375] - feature:stop command does not stop the bundles
+ * [KARAF-5377] - Speed up repository loading
+ * [KARAF-5382] - Karaf shell session.readLine consumes backslashes
+ * [KARAF-5385] - shutdown -f command can't exit the karaf
+ * [KARAF-5387] - Build fail on JLineTerminal
+ * [KARAF-5388] - create dump doesn't include log file anymore
+ * [KARAF-5390] - tar.gz archives contains invalid data in demos\web\src\main\webapp\WEB-INF\karaf\system\org\apache\felix
+ * [KARAF-5394] - maven-metadata-local.xml in KARs cause SAXParseException
+ * [KARAF-5395] - Improve memory consumption during resolution
+ * [KARAF-5398] - The "cd" command should not attempt to complete multiple directories
+ * [KARAF-5404] - CLI autocompletion issue
+ * [KARAF-5406] - CLI error on window resize on Linux(Wayland)
+ * [KARAF-5411] - Client doesn't prompt for user if no user.properties file
+ * [KARAF-5413] - Missing explicit version in features
+ * [KARAF-5414] - Features mentioned in feature.xml stubs aren't taken into account in dependency calculations
+ * [KARAF-5420] - Bad console behavior when dealing with the input stream with the exec command
+ * [KARAF-5423] - Karaf is flagged as vulnerable to CVE-2015-5262
+ * [KARAF-5425] - ArrayIndexOutOfBoundsException running history | grep
+ * [KARAF-5435] - BundleException when installing a bundle by API when the FeatureService install a feature
+ * [KARAF-5436] - Factory configurations file in etc/ are not deleted when the configuration is deleted
+ * [KARAF-5440] - No override facility for properties in system.properties
+
+#### Dependency
+ * [KARAF-5345] - Upgrade to pax-jms-0.1.0 and ActiveMQ 5.15.0
+
+#### Dependency upgrade
+ * [KARAF-4921] - Upgrade to pax-logging 1.10.0
+ * [KARAF-4991] - Upgrade to Narayana 5.5.2.Final
+ * [KARAF-5085] - Upgrade to Aries JPA 2.6.1
+ * [KARAF-5087] - Upgrade to Spring 4.3.7.RELEASE
+ * [KARAF-5090] - Update equinox to 3.11.3
+ * [KARAF-5112] - Upgrade to jansi 1.16
+ * [KARAF-5113] - Upgrade to jline 3.3.0
+ * [KARAF-5114] - Upgrade to gogo 1.0.6
+ * [KARAF-5132] - Cellar: Upgrade Hazelcast to 3.8.2
+ * [KARAF-5146] - Upgrade to Narayana 5.6.0.Final
+ * [KARAF-5149] - Upgrade to JNA 4.4.0
+ * [KARAF-5150] - Upgrade to Aries Blueprint Core 1.8.1
+ * [KARAF-5151] - Upgrade to Aries Transaction Manager 1.3.3
+ * [KARAF-5152] - Upgrade to commons-compress 1.14
+ * [KARAF-5153] - Upgrade to Felix BundleRepository 2.0.10
+ * [KARAF-5154] - Upgrade to Felix Framework 5.6.4
+ * [KARAF-5155] - Upgrade to Felix HttpLite 0.1.6
+ * [KARAF-5157] - Upgrade to Felix Resolver 1.14.0
+ * [KARAF-5158] - Upgrade to Felix SCR 2.0.10
+ * [KARAF-5159] - Upgrade to Felix WebConsole 4.3.4
+ * [KARAF-5160] - Upgrade to Equinox Region 1.2.101.v20150831-1342
+ * [KARAF-5214] - Upgrade to Pax Logging 1.10.1
+ * [KARAF-5219] - Upgrade Narayana to version 5.6.2.Final
+ * [KARAF-5220] - Cellar-Kubernetes: Bump to Kubernetes-client 2.4.1
+ * [KARAF-5231] - Upgrade to jline 3.3.1
+ * [KARAF-5248] - Upgrade to blueprint-core 1.8.2
+ * [KARAF-5249] - Upgrade to blueprint spring 0.4.0
+ * [KARAF-5253] - Update pax-jdbc to 1.1.0
+ * [KARAF-5256] - Upgrade to Felix SCR 2.0.12
+ * [KARAF-5257] - Upgrade to sshd 1.6.0
+ * [KARAF-5258] - Upgrade to Pax Exam 4.11.0
+ * [KARAF-5268] - Upgrade to commons-logging 1.2
+ * [KARAF-5269] - Upgrade to commons-lang3 3.6
+ * [KARAF-5278] - Update to felix framework 5.6.6
+ * [KARAF-5281] - Upgrade to Spring 4.3.10.RELEASE
+ * [KARAF-5288] - Cellar: Bump to Kubernetes-client 2.5.9
+ * [KARAF-5289] - Upgrade to jline 3.4.0
+ * [KARAF-5291] - Upgrade Narayana to version 5.6.4.Final
+ * [KARAF-5293] - Upgrade to Apache POM 18
+ * [KARAF-5309] - Upgrade to directory server 2.0.0-M24
+ * [KARAF-5310] - Upgrade to maven surefire plugin 2.20 to get colored output
+ * [KARAF-5349] - Upgrade to pax-jdbc-1.2.0
+ * [KARAF-5359] - Upgrade to JLine 3.5.0
+ * [KARAF-5360] - Upgrade to Felix Gogo Runtime / JLine 1.0.8
+ * [KARAF-5365] - Upgrade to Aries Subsystem 2.0.10
+ * [KARAF-5366] - Upgrade to Felix ConfigAdmin 1.8.16
+ * [KARAF-5367] - Upgrade to Felix EventAdmin 1.4.10
+ * [KARAF-5368] - Upgrade to Felix Framework & Main 5.6.8
+ * [KARAF-5369] - Upgrade to Felix Metatype 1.1.4
+ * [KARAF-5370] - Upgrade to Felix Resolver 1.14.0
+ * [KARAF-5401] - Upgrade to Aries Blueprint Spring 0.5.0
+ * [KARAF-5419] - Upgrade to Aries Blueprint Core 1.8.3
+ * [KARAF-5429] - Upgrade Narayana to version 5.7.0.Final
+ * [KARAF-5430] - Upgrade to Spring 4.0.9.RELEASE & 4.3.12.RELEASE
+ * [KARAF-5431] - Upgrade to Felix Gogo Runtime / JLine 1.0.10
+ * [KARAF-5432] - Upgrade to Felix Utils 1.10.4 and FileInstall 3.6.4
+ * [KARAF-5439] - Upgrade Narayana to version 5.7.1.Final
+
+#### Documentation
+ * [KARAF-5357] - Help string for feature:stop is incorrect
+
+#### Improvement
+ * [KARAF-3825] - Add ability to shutdown Karaf with a disabled shutdown port
+ * [KARAF-4417] - Display a summary for the verify goal
+ * [KARAF-4418] - Ability to exclude a set of features from the verify goal
+ * [KARAF-4748] - Make Felix Resolver Threads configurable
+ * [KARAF-4785] - Use the scr gogo commands and provide completion
+ * [KARAF-4803] - Allow to turn off Karaf configuration persistence manager
+ * [KARAF-4932] - Remove blueprint compat and blueprint annotations bundles
+ * [KARAF-4973] - Refactoring of features extension
+ * [KARAF-5004] - Discover the artifact type instead of relying on the artifact type/classifier string (kar / features / bundle)
+ * [KARAF-5023] - Improve config commands to better support substituted and typed properties
+ * [KARAF-5072] - Add setting to ssh server for forcing a provided key
+ * [KARAF-5080] - Use the full ttop command from gogo-jline
+ * [KARAF-5102] - org.ops4j.pax.logging.cfg contains non-ASCII character
+ * [KARAF-5104] - karaf:run should support a features set
+ * [KARAF-5118] - Make SSHD server threads configurable
+ * [KARAF-5126] - Use awaitility and matchers in JmsTest
+ * [KARAF-5131] - XA + JMS support
+ * [KARAF-5162] - Code can be simplified using new Map methods
+ * [KARAF-5168] - Replace old-style loops with foreach loops or streams
+ * [KARAF-5169] - Remove redundant type information
+ * [KARAF-5170] - Use try-with-resources
+ * [KARAF-5173] - Some tests could benefit from a common CallbackHandler
+ * [KARAF-5178] - Code can be simplified using lambdas
+ * [KARAF-5185] - Karaf enterprise feature shall omit the jpa feature in favor of the aries jpa feature
+ * [KARAF-5205] - Add -r/--refresh option to bundle:update command
+ * [KARAF-5208] - Improve feature:install error message
+ * [KARAF-5222] - Make possible to force the start of a karaf instance even if another one has been detected as running.
+ * [KARAF-5230] - Support version range when installing features
+ * [KARAF-5235] - Remove null values from AssemblyMojo configuration
+ * [KARAF-5241] - Improve RBAC logging for JMX
+ * [KARAF-5243] - add -p option for bin/client
+ * [KARAF-5266] - log commands should limit number of lines printed instead of number of log entries
+ * [KARAF-5272] - Enhance the features deployer so that it performs a real upgrade
+ * [KARAF-5280] - Shell should not display the welcome message again when it is restarted
+ * [KARAF-5282] - SyncopeLoginModule should support Syncope 2.x response format
+ * [KARAF-5286] - Separate server key generation from key reading
+ * [KARAF-5287] - Provide a way to hide passwords in shell
+ * [KARAF-5292] - uneeded dependency to dbcp in eclipselink feature
+ * [KARAF-5294] - Cleanup Maven repository
+ * [KARAF-5308] - Remove RepositoryImpl lazy loading as we always load it upfront anyway
+ * [KARAF-5316] - Jaas Encryption should be easier to use
+ * [KARAF-5319] - the jetty feature in karaf shouldn't depend on pax-jetty feature
+ * [KARAF-5363] - Add --no-start option to kar:install, kar cfg and kar MBean
+ * [KARAF-5380] - Fix typo in JDBC lock implementation
+ * [KARAF-5400] - Remove usage of felix scr compatibility bundle
+ * [KARAF-5407] - Allow feature:info to print the xml for a given feature
+ * [KARAF-5426] - Print type of wiring resource
+ * [KARAF-5427] - Add RBAC support for reflection invocation and redirections in the console
+ * [KARAF-5437] - Use named thread pools to help identifying threads
+ * [KARAF-5443] - Add a completer for bundle symbolic names
+ * [KARAF-5445] - Completers should be followed by a space when complete
+
+#### New Feature
+ * [KARAF-2401] - Improve log coloring
+ * [KARAF-3270] - Add command/MBean operation to give current user and his roles
+ * [KARAF-4188] - Add support for Systemd's watchdog
+ * [KARAF-5008] - Provide Maven diagnostic commands
+ * [KARAF-5074] - Support for typed config files (as in Felix ConfigAdmin config files) in features
+ * [KARAF-5082] - Allow the use of external data for features configuration
+ * [KARAF-5107] - Allow hooking into the feature installation process
+ * [KARAF-5129] - JMS Pooling and better Artemis support
+ * [KARAF-5172] - Add simple LDAPBackingEngine
+ * [KARAF-5175] - Provide a debugs option for the karaf script to make it easier to debug karaf startup sequence
+ * [KARAF-5306] - Add scheduler:trigger command
+ * [KARAF-5354] - The log:get and log:set commands should support etc/log4j2.xml configuration
+ * [KARAF-5416] - Remove support for ext and endorsed libraries for Java 9 compatibility
+
+#### Task
+ * [KARAF-5125] - Upgrade to Narayana 5.5.6.Final
+ * [KARAF-5148] - Replace use of org.json
+ * [KARAF-5225] - Add Narayana dependencies to DependencyManagement
+ * [KARAF-5226] - Add Hibernate-validator dependency to DependencyManagement
+ * [KARAF-5227] - Use an explicit Awaitility version property
+ * [KARAF-5396] - Ensure Karaf can build with JDK9 GA(build 9+181)
+ * [KARAF-5417] - Trim down distributions
+
+#### Test
+ * [KARAF-4936] - FeatureTest#repoRefreshCommand failure
diff --git a/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/bin/client b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/bin/client
new file mode 100755
index 0000000000..174ab21977
--- /dev/null
+++ b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/bin/client
@@ -0,0 +1,139 @@
+#!/bin/sh
+#
+# 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.
+#
+
+realpath() {
+ # Use in priority xpg4 awk or nawk on SunOS as standard awk is outdated
+ AWK=awk
+ if ${solaris}; then
+ if [ -x /usr/xpg4/bin/awk ]; then
+ AWK=/usr/xpg4/bin/awk
+ elif [ -x /usr/bin/nawk ]; then
+ AWK=/usr/bin/nawk
+ fi
+ fi
+
+ READLINK_EXISTS=$(command -v readlink &> /dev/null)
+ if [ -z "$READLINK_EXISTS" ]; then
+ OURPWD=${PWD}
+ cd "$(dirname "${1}")" || exit 2
+ LINK=$(ls -l "$(basename "${1}")" | ${AWK} -F"-> " '{print $2}')
+ while [ "${LINK}" ]; do
+ echo "link: ${LINK}" >&2
+ cd "$(dirname "${LINK}")" || exit 2
+ LINK=$(ls -l "$(basename "${1}")" | ${AWK} -F"-> " '{print $2}')
+ done
+ REALPATH="${PWD}/$(basename "${1}")"
+ cd "${OURPWD}" || exit 2
+ echo "${REALPATH}"
+ else
+ OURPWD=${PWD}
+ cd "$(dirname "${1}")" || exit 2
+ LINK=$(readlink "$(basename "${1}")")
+ while [ "${LINK}" ]; do
+ echo "link: ${LINK}" >&2
+ cd "$(dirname "${LINK}")" || exit 2
+ LINK=$(readlink "$(basename "${1}")")
+ done
+ REALPATH="${PWD}/$(basename "${1}")"
+ cd "${OURPWD}" || exit 2
+ echo "${REALPATH}"
+ fi
+}
+
+REALNAME=$(realpath "$0")
+DIRNAME=$(dirname "${REALNAME}")
+PROGNAME=$(basename "${REALNAME}")
+
+#
+# Load common functions
+#
+. "${DIRNAME}/inc"
+
+#
+# Sourcing environment settings for karaf similar to tomcats setenv
+#
+KARAF_SCRIPT="${PROGNAME}"
+export KARAF_SCRIPT
+if [ -f "${DIRNAME}/setenv" ]; then
+ . "${DIRNAME}/setenv"
+fi
+
+setupClassPath() {
+ # Add the jars in the lib dir
+ CLASSPATH="${KARAF_HOME}/system/org/apache/karaf/org.apache.karaf.client/4.2.1/org.apache.karaf.client-4.2.1.jar"
+ CLASSPATH="${CLASSPATH}:${KARAF_HOME}/system/org/apache/sshd/sshd-core/1.7.0/sshd-core-1.7.0.jar"
+ CLASSPATH="${CLASSPATH}:${KARAF_HOME}/system/org/fusesource/jansi/jansi/1.17.1/jansi-1.17.1.jar"
+ CLASSPATH="${CLASSPATH}:${KARAF_HOME}/system/org/jline/jline/3.9.0/jline-3.9.0.jar"
+ CLASSPATH="${CLASSPATH}:${KARAF_HOME}/system/org/slf4j/slf4j-api/1.7.12/slf4j-api-1.7.12.jar"
+}
+
+init() {
+ # Determine if there is special OS handling we must perform
+ detectOS
+
+ # Unlimit the number of file descriptors if possible
+ unlimitFD
+
+ # Locate the Karaf home directory
+ locateHome
+
+ # Locate the Karaf base directory
+ locateBase
+
+ # Locate the Karaf data directory
+ locateData
+
+ # Locate the Karaf etc directory
+ locateEtc
+
+ # Setup the native library path
+ setupNativePath
+
+ # Locate the Java VM to execute
+ locateJava
+
+ # Determine the JVM vendor
+ detectJVM
+
+ # Setup default options
+ setupDefaults
+
+ # Setup classpath
+ setupClassPath
+}
+
+run() {
+ convertPaths
+ exec "${JAVA}" ${JAVA_OPTS} \
+ -Dkaraf.instances="${KARAF_HOME}/instances" \
+ -Dkaraf.home="${KARAF_HOME}" \
+ -Dkaraf.base="${KARAF_BASE}" \
+ -Dkaraf.etc="${KARAF_ETC}" \
+ -Djava.io.tmpdir="${KARAF_DATA}/tmp" \
+ -Djava.util.logging.config.file="${KARAF_BASE}/etc/java.util.logging.properties" \
+ ${KARAF_OPTS} ${OPTS} \
+ -classpath "${CLASSPATH}" \
+ org.apache.karaf.client.Main "$@"
+}
+
+main() {
+ init
+ run "$@"
+}
+
+main "$@"
diff --git a/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/bin/client.bat b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/bin/client.bat
new file mode 100755
index 0000000000..146c831d48
--- /dev/null
+++ b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/bin/client.bat
@@ -0,0 +1,135 @@
+@echo off
+rem
+rem
+rem Licensed to the Apache Software Foundation (ASF) under one or more
+rem contributor license agreements. See the NOTICE file distributed with
+rem this work for additional information regarding copyright ownership.
+rem The ASF licenses this file to You under the Apache License, Version 2.0
+rem (the "License"); you may not use this file except in compliance with
+rem the License. You may obtain a copy of the License at
+rem
+rem http://www.apache.org/licenses/LICENSE-2.0
+rem
+rem Unless required by applicable law or agreed to in writing, software
+rem distributed under the License is distributed on an "AS IS" BASIS,
+rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+rem See the License for the specific language governing permissions and
+rem limitations under the License.
+rem
+
+if not "%ECHO%" == "" echo %ECHO%
+
+setlocal
+set DIRNAME=%~dp0%
+set PROGNAME=%~nx0%
+set ARGS=%*
+
+rem Sourcing environment settings for karaf similar to tomcats setenv
+SET KARAF_SCRIPT="client.bat"
+if exist "%DIRNAME%setenv.bat" (
+ call "%DIRNAME%setenv.bat"
+)
+
+rem Check console window title. Set to Karaf by default
+if not "%KARAF_TITLE%" == "" (
+ title %KARAF_TITLE%
+) else (
+ title Karaf
+)
+
+rem Check/Set up some easily accessible MIN/MAX params for JVM mem usage
+if "%JAVA_MIN_MEM%" == "" (
+ set JAVA_MIN_MEM=128M
+)
+if "%JAVA_MAX_MEM%" == "" (
+ set JAVA_MAX_MEM=512M
+)
+
+goto BEGIN
+
+:warn
+ echo %PROGNAME%: %*
+goto :EOF
+
+:BEGIN
+
+rem # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
+
+if not "%KARAF_HOME%" == "" (
+ call :warn Ignoring predefined value for KARAF_HOME
+)
+set KARAF_HOME=%DIRNAME%..
+if not exist "%KARAF_HOME%" (
+ call :warn KARAF_HOME is not valid: "%KARAF_HOME%"
+ goto END
+)
+
+if not "%KARAF_BASE%" == "" (
+ if not exist "%KARAF_BASE%" (
+ call :warn KARAF_BASE is not valid: "%KARAF_BASE%"
+ goto END
+ )
+)
+if "%KARAF_BASE%" == "" (
+ set "KARAF_BASE=%KARAF_HOME%"
+)
+
+if not "%KARAF_DATA%" == "" (
+ if not exist "%KARAF_DATA%" (
+ call :warn KARAF_DATA is not valid: "%KARAF_DATA%"
+ goto END
+ )
+)
+if "%KARAF_DATA%" == "" (
+ set "KARAF_DATA=%KARAF_BASE%\data"
+)
+
+if not "%KARAF_ETC%" == "" (
+ if not exist "%KARAF_ETC%" (
+ call :warn KARAF_ETC is not valid: "%KARAF_ETC%"
+ goto END
+ )
+)
+if "%KARAF_ETC%" == "" (
+ set "KARAF_ETC=%KARAF_BASE%\etc"
+)
+
+
+rem Support for loading native libraries
+set PATH=%PATH%;%KARAF_BASE%\lib;%KARAF_HOME%\lib
+
+rem Setup the Java Virtual Machine
+if not "%JAVA%" == "" goto :Check_JAVA_END
+ set JAVA=java
+ if "%JAVA_HOME%" == "" call :warn JAVA_HOME not set; results may vary
+ if not "%JAVA_HOME%" == "" set JAVA=%JAVA_HOME%\bin\java
+ if not exist "%JAVA_HOME%" (
+ call :warn JAVA_HOME is not valid: "%JAVA_HOME%"
+ goto END
+ )
+:Check_JAVA_END
+
+if "%JAVA_OPTS%" == "" set JAVA_OPTS=%DEFAULT_JAVA_OPTS%
+
+if "%EXTRA_JAVA_OPTS%" == "" goto :KARAF_EXTRA_JAVA_OPTS_END
+ set JAVA_OPTS=%JAVA_OPTS% %EXTRA_JAVA_OPTS%
+:KARAF_EXTRA_JAVA_OPTS_END
+
+set CLASSPATH=%KARAF_HOME%\system\org\apache\karaf\org.apache.karaf.client\4.2.1\org.apache.karaf.client-4.2.1.jar
+set CLASSPATH=%CLASSPATH%;%KARAF_HOME%\system\org\apache\sshd\sshd-core\1.7.0\sshd-core-1.7.0.jar
+set CLASSPATH=%CLASSPATH%;%KARAF_HOME%\system\org\jline\jline\3.9.0\jline-3.9.0.jar
+set CLASSPATH=%CLASSPATH%;%KARAF_HOME%\system\org\fusesource\jansi\jansi\1.17.1\jansi-1.17.1.jar
+set CLASSPATH=%CLASSPATH%;%KARAF_HOME%\system\org\slf4j\slf4j-api\1.7.12\slf4j-api-1.7.12.jar
+
+:EXECUTE
+ if "%SHIFT%" == "true" SET ARGS=%2 %3 %4 %5 %6 %7 %8 %9
+ if not "%SHIFT%" == "true" SET ARGS=%1 %2 %3 %4 %5 %6 %7 %8 %9
+ rem Execute the Java Virtual Machine
+ "%JAVA%" %JAVA_OPTS% %OPTS% -classpath "%CLASSPATH%" -Dkaraf.instances="%KARAF_HOME%\instances" -Dkaraf.home="%KARAF_HOME%" -Dkaraf.base="%KARAF_BASE%" -Dkaraf.etc="%KARAF_ETC%" -Djava.io.tmpdir="%KARAF_DATA%\tmp" -Djava.util.logging.config.file="%KARAF_BASE%\etc\java.util.logging.properties" %KARAF_OPTS% org.apache.karaf.client.Main %ARGS%
+
+rem # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
+
+:END
+
+endlocal
+
diff --git a/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/bin/contrib/karaf-service-template.conf b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/bin/contrib/karaf-service-template.conf
new file mode 100644
index 0000000000..52ff876fd4
--- /dev/null
+++ b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/bin/contrib/karaf-service-template.conf
@@ -0,0 +1,33 @@
+# 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.
+
+#
+# Karaf Service
+#
+KARAF_SERVICE_PATH="${KARAF_SERVICE_PATH}"
+KARAF_SERVICE_NAME="${KARAF_SERVICE_NAME}"
+KARAF_SERVICE_LOG="${KARAF_SERVICE_LOG}"
+KARAF_SERVICE_USER="${KARAF_SERVICE_USER}"
+KARAF_SERVICE_GROUP="${KARAF_SERVICE_GROUP}"
+KARAF_LOCKFILE="/var/lock/subsys/$KARAF_SERVICE_NAME"
+KARAF_SERVICE_PIDFILE="${KARAF_SERVICE_PIDFILE}"
+KARAF_SERVICE_EXECUTABLE="${KARAF_SERVICE_EXECUTABLE}"
+#
+# Karaf
+#
+
+#
+# User
+#
diff --git a/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/bin/contrib/karaf-service-template.init b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/bin/contrib/karaf-service-template.init
new file mode 100644
index 0000000000..c89992a108
--- /dev/null
+++ b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/bin/contrib/karaf-service-template.init
@@ -0,0 +1,171 @@
+#!/bin/sh
+# 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.
+#
+# Karaf control script
+# description: Karaf startup script
+# processname: ${KARAF_SERVICE_NAME}
+# pidfile: ${KARAF_SERVICE_PIDFILE}
+# config: ${KARAF_SERVICE_CONF}
+#
+
+if [ -r "${KARAF_SERVICE_CONF}" ]; then
+ . "${KARAF_SERVICE_CONF}"
+else
+ echo "Error KARAF_SERVICE_CONF not defined"
+ exit -1
+fi
+
+# Location of JDK
+if [ -n "$JAVA_HOME" ]; then
+ export JAVA_HOME
+fi
+
+# Setup the JVM
+if [ -z "$JAVA" ]; then
+ if [ -n "$JAVA_HOME" ]; then
+ JAVA="$JAVA_HOME/bin/java"
+ else
+ JAVA="java"
+ fi
+fi
+
+if [ -z "$STARTUP_WAIT" ]; then
+ STARTUP_WAIT=30
+fi
+
+if [ -z "$SHUTDOWN_WAIT" ]; then
+ SHUTDOWN_WAIT=30
+fi
+
+prog=${KARAF_SERVICE_NAME}
+
+do_start() {
+ echo "Starting $prog: "
+ if [ -f "$KARAF_SERVICE_PIDFILE" ]; then
+ read ppid < "$KARAF_SERVICE_PIDFILE"
+ if [ `ps -p $ppid 2> /dev/null | grep -c $ppid 2> /dev/null` -eq '1' ]; then
+ echo "$prog is already running"
+ return 1
+ else
+ rm -f "$KARAF_SERVICE_PIDFILE"
+ fi
+ fi
+
+ LOG_PATH=`dirname "$KARAF_SERVICE_LOG"`
+ mkdir -p "$LOG_PATH"
+ cat /dev/null > "$KARAF_SERVICE_LOG"
+ chown $KARAF_SERVICE_USER:$KARAF_SERVICE_GROUP "$KARAF_SERVICE_LOG"
+
+ PID_PATH=`dirname "$KARAF_SERVICE_PIDFILE"`
+ mkdir -p "$PID_PATH"
+ chown $KARAF_SERVICE_USER:$KARAF_SERVICE_GROUP "$PID_PATH" || true
+
+ if [ ! -z "$KARAF_SERVICE_USER" ]; then
+ if [ "$KARAF_SERVICE_USER" = "root" ]; then
+ KARAF_EXEC=exec
+ export KARAF_EXEC
+
+ JAVA_HOME=$JAVA_HOME
+ export JAVA_HOME
+
+ "$KARAF_SERVICE_PATH/bin/$KARAF_SERVICE_EXECUTABLE" daemon >> "$KARAF_SERVICE_LOG" 2>&1 &
+
+ echo $! > "$KARAF_SERVICE_PIDFILE"
+ else
+ su - $KARAF_SERVICE_USER \
+ -c " { export KARAF_EXEC=exec; export JAVA_HOME=$JAVA_HOME; \"$KARAF_SERVICE_PATH/bin/$KARAF_SERVICE_EXECUTABLE\" daemon >> \"$KARAF_SERVICE_LOG\" 2>&1 & } ; echo \$! >| \"$KARAF_SERVICE_PIDFILE\" "
+ fi
+
+ sleep 1
+ if [ -f "$KARAF_SERVICE_PIDFILE" ]; then
+ chown $KARAF_SERVICE_USER:$KARAF_SERVICE_GROUP "$KARAF_SERVICE_PIDFILE"
+ fi
+ fi
+
+ RETVAL=$?
+ return $RETVAL
+}
+
+do_stop() {
+ echo $"Stopping $prog: "
+ count=0;
+
+ if [ -f "$KARAF_SERVICE_PIDFILE" ]; then
+ read kpid < "$KARAF_SERVICE_PIDFILE"
+ kwait=$SHUTDOWN_WAIT
+
+ if [ "$KARAF_SERVICE_USER" = "root" ]; then
+ JAVA_HOME=$JAVA_HOME
+ export JAVA_HOME
+
+ "$KARAF_SERVICE_PATH/bin/$KARAF_SERVICE_EXECUTABLE" stop >> "$KARAF_SERVICE_LOG" 2>&1
+ else
+ su - $KARAF_SERVICE_USER \
+ -c "export JAVA_HOME=$JAVA_HOME; \"$KARAF_SERVICE_PATH/bin/$KARAF_SERVICE_EXECUTABLE\" stop >> \"$KARAF_SERVICE_LOG\" 2>&1"
+ fi
+
+ until [ `ps -p $kpid 2> /dev/null | grep -c $kpid 2> /dev/null` -eq '0' ] || [ $count -gt $kwait ]
+ do
+ sleep 1
+ count=`expr $count + 1`
+ done
+
+ if [ $count -gt $kwait ]; then
+ if [ `ps -p $kpid 2> /dev/null | grep -c $kpid 2> /dev/null` -eq '1' ]; then
+ kill -9 $kpid
+ fi
+ fi
+ fi
+
+ rm -f "$KARAF_SERVICE_PIDFILE"
+ rm -f $KARAF_LOCKFILE
+}
+
+do_status() {
+ if [ -f "$KARAF_SERVICE_PIDFILE" ]; then
+ read ppid < "$KARAF_SERVICE_PIDFILE"
+ if [ `ps -p $ppid 2> /dev/null | grep -c $ppid 2> /dev/null` -eq '1' ]; then
+ echo "$prog is running (pid $ppid)"
+ return 0
+ else
+ echo "$prog dead but pid file exists"
+ return 1
+ fi
+ fi
+ echo "$prog is not running"
+ return 3
+}
+
+case "$1" in
+ start)
+ do_start
+ ;;
+ stop)
+ do_stop
+ ;;
+ restart)
+ do_stop
+ do_start
+ ;;
+ status)
+ do_status
+ ;;
+ *)
+ ## If no parameters are given, print which are avaiable.
+ echo "Usage: $0 {start|stop|status|restart}"
+ exit 1
+ ;;
+esac \ No newline at end of file
diff --git a/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/bin/contrib/karaf-service-template.init-debian b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/bin/contrib/karaf-service-template.init-debian
new file mode 100644
index 0000000000..b06227229f
--- /dev/null
+++ b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/bin/contrib/karaf-service-template.init-debian
@@ -0,0 +1,246 @@
+#!/bin/sh
+# 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.
+#
+# /etc/init.d/${KARAF_SERVICE_NAME} -- startup script for Karaf
+#
+#
+### BEGIN INIT INFO
+# Provides: ${KARAF_SERVICE_NAME}
+# Required-Start: $remote_fs $network
+# Required-Stop: $remote_fs $network
+# Should-Start: $named
+# Should-Stop: $named
+# Default-Start: 2 3 4 5
+# Default-Stop: 0 1 6
+# Short-Description: Karaf
+# Description: Provide Karaf startup/shutdown script
+### END INIT INFO
+
+NAME=${KARAF_SERVICE_NAME}
+DESC=${KARAF_SERVICE_NAME}
+DEFAULT="/etc/default/$NAME"
+
+# Check privileges
+if [ `id -u` -ne 0 ]; then
+ echo "You need root privileges to run this script"
+ exit 1
+fi
+
+# Make sure karaf is started with system locale
+if [ -r /etc/default/locale ]; then
+ . /etc/default/locale
+ export LANG
+fi
+
+. /lib/lsb/init-functions
+
+if [ -r /etc/default/rcS ]; then
+ . /etc/default/rcS
+fi
+
+# Overwrite settings from default file
+if [ -f "$DEFAULT" ]; then
+ . "$DEFAULT"
+fi
+
+if [ -r "${KARAF_SERVICE_CONF}" ]; then
+ . "${KARAF_SERVICE_CONF}"
+else
+ echo "Error KARAF_SERVICE_CONF not defined"
+ exit -1
+fi
+
+# Location of JDK
+if [ -n "$JAVA_HOME" ]; then
+ export JAVA_HOME
+fi
+
+# Setup the JVM
+if [ -z "$JAVA" ]; then
+ if [ -n "$JAVA_HOME" ]; then
+ JAVA="$JAVA_HOME/bin/java"
+ else
+ JAVA="java"
+ fi
+fi
+
+# Check karaf user
+id $KARAF_SERVICE_USER > /dev/null 2>&1
+if [ $? -ne 0 -o -z "$KARAF_SERVICE_USER" ]; then
+ echo "User \"$KARAF_SERVICE_USER\" does not exist..." >&2
+ exit 1
+fi
+
+# Check owner of KARAF_SERVICE_PATH
+if [ ! $(stat -L -c "%U" "$KARAF_SERVICE_PATH") = $KARAF_SERVICE_USER ]; then
+ echo "The user \"$KARAF_SERVICE_USER\" is not owner of \"$KARAF_SERVICE_PATH\"" >&2
+ exit 1
+fi
+
+# The amount of time to wait for startup
+if [ -z "$STARTUP_WAIT" ]; then
+ STARTUP_WAIT=30
+fi
+
+# The amount of time to wait for shutdown
+if [ -z "$SHUTDOWN_WAIT" ]; then
+ SHUTDOWN_WAIT=30
+fi
+
+
+# Helper function to check status of karaf service
+check_status() {
+ pidofproc -p "$KARAF_SERVICE_PIDFILE" "$JAVA" >/dev/null 2>&1
+}
+
+case "$1" in
+ start)
+ echo "Starting $DESC" "$NAME"
+
+ # PID file
+ PID_PATH=$(dirname "$KARAF_SERVICE_PIDFILE")
+ if [ ! -d "$PID_PATH" ]; then
+ mkdir -p "$PID_PATH"
+ fi
+
+ chown $KARAF_SERVICE_USER:$KARAF_SERVICE_GROUP "$PID_PATH" || true
+
+ # Console log
+ LOG_PATH=$(dirname "$KARAF_SERVICE_LOG")
+
+ if [ ! -d "$LOG_PATH" ]; then
+ mkdir -p "$LOG_PATH"
+ fi
+
+ cat /dev/null > "$KARAF_SERVICE_LOG"
+ chown $KARAF_SERVICE_USER:$KARAF_SERVICE_GROUP "$LOG_PATH"
+ chown $KARAF_SERVICE_USER:$KARAF_SERVICE_GROUP "$KARAF_SERVICE_LOG"
+
+ start-stop-daemon \
+ --start \
+ --user "$KARAF_SERVICE_USER" \
+ --chuid "$KARAF_SERVICE_USER" \
+ --chdir "$KARAF_SERVICE_PATH" \
+ --pidfile "$KARAF_SERVICE_PIDFILE" \
+ --make-pidfile \
+ --exec "$KARAF_SERVICE_PATH/bin/$KARAF_SERVICE_EXECUTABLE" -- "daemon" \
+ >> "$KARAF_SERVICE_LOG" 2>&1 &
+
+ count=0
+ launched=0
+ until [ $count -gt $STARTUP_WAIT ]
+ do
+ sleep 1
+ count=$((count + 1));
+ if check_status; then
+ launched=1
+ break
+ fi
+ done
+
+ if check_status; then
+ log_end_msg 0
+ else
+ log_end_msg 1
+ fi
+
+ if [ $launched -eq 0 ]; then
+ log_warning_msg "$DESC hasn't started within the timeout allowed"
+ log_warning_msg "please review file \"$KARAF_SERVICE_LOG\" to see the status of the service"
+ fi
+ ;;
+ stop)
+ check_status
+ status_stop=$?
+ if [ $status_stop -eq 0 ]; then
+ kwait=$SHUTDOWN_WAIT
+ read kpid < "$KARAF_SERVICE_PIDFILE"
+ log_daemon_msg "Stopping $DESC" "$NAME"
+
+ children_pids=$(pgrep -P $kpid)
+
+ su - $KARAF_SERVICE_USER \
+ -c "export JAVA_HOME=$JAVA_HOME; \"$KARAF_SERVICE_PATH/bin/$KARAF_SERVICE_EXECUTABLE\" stop"
+
+ count=0
+ until [ `ps --pid $kpid 2> /dev/null | grep -c $kpid 2> /dev/null` -eq '0' ] || [ $count -gt $kwait ]
+ do
+ sleep 1
+ count=$((count + 1));
+ done
+
+ if check_status; then
+ start-stop-daemon \
+ --stop \
+ --quiet \
+ --pidfile "$KARAF_SERVICE_PIDFILE" \
+ --user "$KARAF_SERVICE_USER" \
+ --retry=TERM/$SHUTDOWN_WAIT/KILL/5 \
+ > /dev/null 2>&1
+
+ if [ $? -eq 2 ]; then
+ log_failure_msg "$DESC can't be stopped"
+ exit 1
+ fi
+ fi
+
+ for child in $children_pids; do
+ /bin/kill -9 $child >/dev/null 2>&1
+ done
+
+ log_end_msg 0
+
+ rm -rf "$KARAF_SERVICE_PIDFILE"
+ elif [ $status_stop -eq 1 ]; then
+ log_action_msg "$DESC is not running but the pid file exists, cleaning up"
+ rm -f "$KARAF_SERVICE_PIDFILE"
+ elif [ $status_stop -eq 3 ]; then
+ log_action_msg "$DESC is not running"
+ fi
+ ;;
+ restart)
+ check_status
+ status_restart=$?
+ if [ $status_restart -eq 0 ]; then
+ $0 stop
+ fi
+ $0 start
+ ;;
+ status)
+ check_status
+ status=$?
+ if [ $status -eq 0 ]; then
+ read pid < $KARAF_SERVICE_PIDFILE
+ log_action_msg "$DESC is running with pid $pid"
+ exit 0
+ elif [ $status -eq 1 ]; then
+ log_action_msg "$DESC is not running and the pid file exists"
+ exit 1
+ elif [ $status -eq 3 ]; then
+ log_action_msg "$DESC is not running"
+ exit 3
+ else
+ log_action_msg "Unable to determine $DESC status"
+ exit 4
+ fi
+ ;;
+ *)
+ log_action_msg "Usage: $0 {start|stop|restart|status}"
+ exit 2
+ ;;
+esac
+
+exit 0
diff --git a/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/bin/contrib/karaf-service-template.init-redhat b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/bin/contrib/karaf-service-template.init-redhat
new file mode 100644
index 0000000000..e8fee16a8e
--- /dev/null
+++ b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/bin/contrib/karaf-service-template.init-redhat
@@ -0,0 +1,164 @@
+#!/bin/sh
+# 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.
+#
+# Karaf control script
+#
+# chkconfig: - 80 20
+# description: Karaf startup script
+# processname: ${KARAF_SERVICE_NAME}
+# pidfile: ${KARAF_SERVICE_PIDFILE}
+# config: ${KARAF_SERVICE_CONF}
+#
+
+# Source function library.
+. /etc/init.d/functions
+
+# Load Java configuration.
+[ -r /etc/java/java.conf ] && . /etc/java/java.conf
+export JAVA_HOME
+
+if [ -r "${KARAF_SERVICE_CONF}" ]; then
+ . "${KARAF_SERVICE_CONF}"
+else
+ echo "Error KARAF_SERVICE_CONF not defined"
+ exit -1
+fi
+
+if [ -z "$STARTUP_WAIT" ]; then
+ STARTUP_WAIT=30
+fi
+
+if [ -z "$SHUTDOWN_WAIT" ]; then
+ SHUTDOWN_WAIT=30
+fi
+
+prog=${KARAF_SERVICE_NAME}
+currenttime=$(date +%s%N | cut -b1-13)
+
+start() {
+ echo -n "Starting $prog: "
+ if [ -f "$KARAF_SERVICE_PIDFILE" ]; then
+ read ppid < "$KARAF_SERVICE_PIDFILE"
+ if [ `ps --pid $ppid 2> /dev/null | grep -c $ppid 2> /dev/null` -eq '1' ]; then
+ echo -n "$prog is already running"
+ failure
+ echo
+ return 1
+ else
+ rm -f "$KARAF_SERVICE_PIDFILE"
+ fi
+ fi
+
+ LOG_PATH=`dirname "$KARAF_SERVICE_LOG"`
+ mkdir -p "$LOG_PATH"
+ cat /dev/null > "$KARAF_SERVICE_LOG"
+ chown $KARAF_SERVICE_USER:$KARAF_SERVICE_GROUP "$KARAF_SERVICE_LOG"
+
+ PID_PATH=`dirname "$KARAF_SERVICE_PIDFILE"`
+ mkdir -p "$PID_PATH"
+ chown $KARAF_SERVICE_USER:$KARAF_SERVICE_GROUP "$PID_PATH" || true
+
+ if [ ! -z "$KARAF_SERVICE_USER" ]; then
+ if [ -r /etc/rc.d/init.d/functions ]; then
+ daemon \
+ --user="$KARAF_SERVICE_USER" \
+ --pidfile="$KARAF_SERVICE_PIDFILE" \
+ " { \"$KARAF_SERVICE_PATH/bin/$KARAF_SERVICE_EXECUTABLE\" daemon >> \"$KARAF_SERVICE_LOG\" 2>&1 & } ; echo \$! >| \"$KARAF_SERVICE_PIDFILE\" "
+ else
+ su - $KARAF_SERVICE_USER \
+ -c " { \"$KARAF_SERVICE_PATH/bin/$KARAF_SERVICE_EXECUTABLE\" daemon >> \"$KARAF_SERVICE_LOG\" 2>&1 & } ; echo \$! >| \"$KARAF_SERVICE_PIDFILE\" "
+ fi
+
+ if [ -f "$KARAF_SERVICE_PIDFILE" ]; then
+ chown $KARAF_SERVICE_USER:$KARAF_SERVICE_GROUP "$KARAF_SERVICE_PIDFILE"
+ fi
+ fi
+
+ RETVAL=$?
+ echo
+
+ if [ $RETVAL -eq 0 ]; then
+ touch $KARAF_LOCKFILE
+ fi
+
+ return $RETVAL
+}
+
+stop() {
+ echo -n $"Stopping $prog: "
+ count=0;
+
+ if [ -f "$KARAF_SERVICE_PIDFILE" ]; then
+ read kpid < "$KARAF_SERVICE_PIDFILE"
+ let kwait=$SHUTDOWN_WAIT
+
+ # Try issuing SIGTERM
+ su - $KARAF_SERVICE_USER \
+ -c "export JAVA_HOME=$JAVA_HOME; \"$KARAF_SERVICE_PATH/bin/$KARAF_SERVICE_EXECUTABLE\" stop"
+
+ until [ `ps --pid $kpid 2> /dev/null | grep -c $kpid 2> /dev/null` -eq '0' ] || [ $count -gt $kwait ]
+ do
+ sleep 1
+ let count=$count+1;
+ done
+
+ if [ $count -gt $kwait ]; then
+ kill -9 $kpid
+ fi
+ fi
+
+ rm -f "$KARAF_SERVICE_PIDFILE"
+ rm -f "$KARAF_LOCKFILE"
+
+ success
+ echo
+}
+
+status() {
+ if [ -f "$KARAF_SERVICE_PIDFILE" ]; then
+ read ppid < "$KARAF_SERVICE_PIDFILE"
+ if [ `ps --pid $ppid 2> /dev/null | grep -c $ppid 2> /dev/null` -eq '1' ]; then
+ echo "$prog is running (pid $ppid)"
+ return 0
+ else
+ echo "$prog dead but pid file exists"
+ return 1
+ fi
+ fi
+ echo "$prog is not running"
+ return 3
+}
+
+case "$1" in
+ start)
+ start
+ ;;
+ stop)
+ stop
+ ;;
+ restart)
+ $0 stop
+ $0 start
+ ;;
+ status)
+ status
+ ;;
+ *)
+ ## If no parameters are given, print which are avaiable.
+ echo "Usage: $0 {start|stop|status|restart}"
+ exit 1
+ ;;
+esac
diff --git a/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/bin/contrib/karaf-service-template.solaris-smf b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/bin/contrib/karaf-service-template.solaris-smf
new file mode 100644
index 0000000000..d6751abc8f
--- /dev/null
+++ b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/bin/contrib/karaf-service-template.solaris-smf
@@ -0,0 +1,94 @@
+<?xml version="1.0" ?>
+<!--
+
+ 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.
+-->
+
+<!DOCTYPE service_bundle
+ SYSTEM '/usr/share/lib/xml/dtd/service_bundle.dtd.1'>
+
+<service_bundle type="manifest" name="application/${KARAF_SERVICE_NAME}">
+ <service version="1" type="service" name="application/${KARAF_SERVICE_NAME}">
+
+ <create_default_instance enabled='false' />
+ <single_instance />
+
+ <dependency
+ restart_on="none"
+ type="service"
+ name="multi_user_dependency"
+ grouping="require_all">
+
+ <service_fmri value="svc:/milestone/multi-user"/>
+ </dependency>
+
+ <method_context>
+ <method_credential user='${KARAF_SERVICE_USER}' group='${KARAF_SERVICE_GROUP}'/>
+ <method_environment>
+ <envvar name="JAVA_HOME" value="${JAVA_HOME}"/>
+ </method_environment>
+ </method_context>
+
+ <!-- *************************************************************** -->
+ <!-- STOP/START -->
+ <!-- *************************************************************** -->
+
+ <exec_method
+ timeout_seconds="60"
+ type="method"
+ name="start"
+ exec="${KARAF_SERVICE_PATH}/bin/${KARAF_SERVICE_EXECUTABLE} daemon &amp;">
+ </exec_method>
+
+ <exec_method
+ timeout_seconds="60"
+ type="method"
+ name="stop"
+ exec="${KARAF_SERVICE_PATH}/bin/${KARAF_SERVICE_EXECUTABLE} stop">
+ </exec_method>
+
+ <!-- *************************************************************** -->
+ <!-- -->
+ <!-- *************************************************************** -->
+
+ <!-- do not restart the service in case of errors -->
+ <property_group name='startd' type='framework'>
+ <propval name='duration'
+ type='astring'
+ value='transient'/>
+ <propval name='ignore_error'
+ type='astring'
+ value='core,signal'/>
+ </property_group>
+
+ <stability value='Evolving' />
+
+ <template>
+ <common_name>
+ <loctext xml:lang="C">
+ ${KARAF_SERVICE_NAME}
+ </loctext>
+ </common_name>
+ <description>
+ <loctext xml:lang="C">
+ ${KARAF_SERVICE_NAME}
+ </loctext>
+ </description>
+ </template>
+
+ </service>
+</service_bundle>
+
diff --git a/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/bin/contrib/karaf-service-template.systemd b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/bin/contrib/karaf-service-template.systemd
new file mode 100644
index 0000000000..a0d728f690
--- /dev/null
+++ b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/bin/contrib/karaf-service-template.systemd
@@ -0,0 +1,39 @@
+#
+# 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.
+#
+
+[Unit]
+Description=Karaf - ${KARAF_SERVICE_NAME}
+After=syslog.target network.target
+
+[Service]
+EnvironmentFile=${KARAF_SERVICE_CONF}
+
+ExecStart=${KARAF_SERVICE_PATH}/bin/${KARAF_SERVICE_EXECUTABLE} daemon
+ExecStop=${KARAF_SERVICE_PATH}/bin/${KARAF_SERVICE_EXECUTABLE} stop
+
+User=${KARAF_SERVICE_USER}
+Group=${KARAF_SERVICE_GROUP}
+
+SuccessExitStatus=0 143
+RestartSec=15
+Restart=on-failure
+
+LimitNOFILE=102642
+
+[Install]
+WantedBy=multi-user.target
+
diff --git a/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/bin/contrib/karaf-service-template.systemd-instances b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/bin/contrib/karaf-service-template.systemd-instances
new file mode 100644
index 0000000000..8094a6b2ad
--- /dev/null
+++ b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/bin/contrib/karaf-service-template.systemd-instances
@@ -0,0 +1,42 @@
+#
+# 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.
+#
+
+[Unit]
+Description=Karaf - ${KARAF_SERVICE_NAME} - %i
+After=syslog.target network.target
+Requires=${KARAF_SERVICE_NAME}.service
+
+[Service]
+EnvironmentFile=-${KARAF_SERVICE_PATH}/etc/${KARAF_SERVICE_NAME}-%i.conf
+EnvironmentFile=-${KARAF_SERVICE_PATH}/instances/%i/etc/${KARAF_SERVICE_NAME}.conf
+Environment=KARAF_HOME=${KARAF_SERVICE_PATH}
+Environment=KARAF_BASE=${KARAF_SERVICE_PATH}/instances/%i
+
+ExecStart=${KARAF_SERVICE_PATH}/bin/${KARAF_SERVICE_EXECUTABLE} daemon
+ExecStop=${KARAF_SERVICE_PATH}/bin/${KARAF_SERVICE_EXECUTABLE} stop
+
+User=${KARAF_SERVICE_USER}
+Group=${KARAF_SERVICE_GROUP}
+
+SuccessExitStatus=0 1 143
+RestartSec=15
+Restart=on-failure
+
+LimitNOFILE=102642
+
+[Install]
+WantedBy=multi-user.target
diff --git a/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/bin/contrib/karaf-service-win.exe b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/bin/contrib/karaf-service-win.exe
new file mode 100644
index 0000000000..c6e8fc2900
--- /dev/null
+++ b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/bin/contrib/karaf-service-win.exe
Binary files differ
diff --git a/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/bin/contrib/karaf-service-win.xml b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/bin/contrib/karaf-service-win.xml
new file mode 100644
index 0000000000..9dd4baa9b4
--- /dev/null
+++ b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/bin/contrib/karaf-service-win.xml
@@ -0,0 +1,50 @@
+<!--
+ 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.
+-->
+<service>
+
+ <!--
+ This script is provided as a template you can quckly customize by replacing
+ the following variables:
+
+ KARAF_SERVICE_NAME
+ KARAF_SERVICE_PATH
+ KARAF_SERVICE_EXECUTABLE
+
+ For a detailed overview of the confguration options, please visit winsw home
+ page (https://github.com/kohsuke/winsw)
+ -->
+
+ <id>%KARAF_SERVICE_NAME%</id>
+ <name>%KARAF_SERVICE_NAME%</name>
+ <description>Apache Karaf %KARAF_SERVICE_NAME%</description>
+
+ <!-- start -->
+ <executable>%KARAF_SERVICE_PATH%\bin\%KARAF_SERVICE_EXECUTABLE%</executable>
+ <startargument>daemon</startargument>
+
+ <!-- stop -->
+ <stopexecutable>%KARAF_SERVICE_PATH%\bin\%KARAF_SERVICE_EXECUTABLE%</stopexecutable>
+ <stopargument>stop</stopargument>
+ <stoptimeout>10sec</stoptimeout>
+
+ <!-- logging -->
+ <logpath>%KARAF_SERVICE_PATH%\data\log</logpath>
+ <log mode="roll-by-time">
+ <pattern>yyyyMMdd</pattern>
+ </log>
+
+</service>
diff --git a/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/bin/contrib/karaf-service.sh b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/bin/contrib/karaf-service.sh
new file mode 100644
index 0000000000..0c47886cc6
--- /dev/null
+++ b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/bin/contrib/karaf-service.sh
@@ -0,0 +1,206 @@
+#!/usr/bin/env bash
+#
+# 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.
+#
+
+function usage {
+ cat <<-END >&2
+ USAGE: $0
+ -k KARAF_SERVICE_PATH # Karaf installation path
+ -d KARAF_SERVICE_DATA # Karaf data path (default to \${KARAF_SERVICE_PATH}/data)
+ -c KARAF_SERVICE_CONF # Karaf configuration file (default to \${KARAF_SERVICE_PATH/etc/\${KARAF_SERVICE_NAME}.conf
+ -t KARAF_SERVICE_ETC # Karaf etc path (default to \${KARAF_SERVICE_PATH/etc}
+ -p KARAF_SERVICE_PIDFILE # Karaf pid path (default to \${KARAF_SERVICE_DATA}/\${KARAF_SERVICE_NAME}.pid)
+ -n KARAF_SERVICE_NAME # Karaf service name (default karaf)
+ -e KARAF_ENV # Karaf environment variable (can be repeated)
+ -u KARAF_SERVICE_USER # Karaf user
+ -g KARAF_SERVICE_GROUP # Karaf group (default \${KARAF_SERVICE_USER)
+ -l KARAF_SERVICE_LOG # Karaf console log (default to \${KARAF_SERVICE_DATA}/log/\${KARAF_SERVICE_NAME}-console.log)
+ -f KARAF_SERVICE_TEMPLATE # Template file to use
+ -x KARAF_SERVICE_EXECUTABLE # Karaf executable name (defaul karaf, should support daemon and stop commands)
+ -h # this usage message
+END
+ exit
+}
+
+CONF_TEMPLATE="karaf-service-template.conf"
+SYSTEMD_TEMPLATE="karaf-service-template.systemd"
+SYSTEMD_TEMPLATE_INSTANCES="karaf-service-template.systemd-instances"
+INIT_TEMPLATE="karaf-service-template.init"
+INIT_REDHAT_TEMPLATE="karaf-service-template.init-redhat"
+INIT_DEBIAN_TEMPLATE="karaf-service-template.init-debian"
+SOLARIS_SMF_TEMPLATE="karaf-service-template.solaris-smf"
+
+################################################################################
+#
+################################################################################
+
+KARAF_ENV=()
+
+while getopts k:d:c:p:n:u:g:l:t:e:f:x:h opt
+do
+ case $opt in
+ k) export KARAF_SERVICE_PATH="$OPTARG" ;;
+ d) export KARAF_SERVICE_DATA="$OPTARG" ;;
+ c) export KARAF_SERVICE_CONF="$OPTARG" ;;
+ p) export KARAF_SERVICE_PIDFILE="$OPTARG" ;;
+ n) export KARAF_SERVICE_NAME="$OPTARG" ;;
+ u) export KARAF_SERVICE_USER="$OPTARG" ;;
+ g) export KARAF_SERVICE_GROUP="$OPTARG" ;;
+ l) export KARAF_SERVICE_LOG="$OPTARG" ;;
+ t) export KARAF_SERVICE_ETC="$OPTARG" ;;
+ f) export KARAF_SERVICE_TEMPLATE="$OPTARG" ;;
+ x) export KARAF_SERVICE_EXECUTABLE="$OPTARG" ;;
+ e) KARAF_ENV+=("$OPTARG") ;;
+ h|?) usage ;;
+ esac
+done
+
+shift $(( $OPTIND - 1 ))
+
+if [[ ! $KARAF_SERVICE_PATH ]]; then
+ echo "Warning, KARAF_SERVICE_PATH is required"
+ usage
+fi
+
+if [[ ! $KARAF_SERVICE_DATA ]]; then
+ export KARAF_SERVICE_DATA="${KARAF_SERVICE_PATH}/data"
+fi
+
+if [[ ! $KARAF_SERVICE_ETC ]]; then
+ export KARAF_SERVICE_ETC="${KARAF_SERVICE_PATH}/etc"
+fi
+
+if [[ ! $KARAF_SERVICE_NAME ]]; then
+ export KARAF_SERVICE_NAME="karaf"
+fi
+
+if [[ ! $KARAF_SERVICE_CONF ]]; then
+ export KARAF_SERVICE_CONF="${KARAF_SERVICE_PATH}/etc/${KARAF_SERVICE_NAME}.conf"
+fi
+
+if [[ ! $KARAF_SERVICE_PIDFILE ]]; then
+ export KARAF_SERVICE_PIDFILE="${KARAF_SERVICE_DATA}/${KARAF_SERVICE_NAME}.pid"
+fi
+
+if [[ ! $KARAF_SERVICE_LOG ]]; then
+ export KARAF_SERVICE_LOG="${KARAF_SERVICE_DATA}/log/${KARAF_SERVICE_NAME}-console.log"
+fi
+
+if [[ ! $KARAF_SERVICE_USER ]]; then
+ export KARAF_SERVICE_USER="root"
+fi
+
+if [[ ! $KARAF_SERVICE_GROUP ]]; then
+ export KARAF_SERVICE_GROUP="${KARAF_SERVICE_USER}"
+fi
+
+if [[ ! $KARAF_SERVICE_EXECUTABLE ]]; then
+ export KARAF_SERVICE_EXECUTABLE="karaf"
+fi
+
+################################################################################
+#
+################################################################################
+
+function generate_service_descriptor {
+ echo "Writing service file \"$2\""
+ perl -p -e 's/\$\{([^}]+)\}/defined $ENV{$1} ? $ENV{$1} : $&/eg' < "$1" > "$2"
+
+ if [ $# -eq 4 ]; then
+ echo "Writing service configuration file \"$4\""
+ perl -p -e 's/\$\{([^}]+)\}/defined $ENV{$1} ? $ENV{$1} : $&/eg' < "$3" > "$4"
+
+ for var in "${KARAF_ENV[@]}"; do
+ echo "${var}" >> "$4"
+ done
+ fi
+}
+
+################################################################################
+#
+################################################################################
+
+if [[ ! $KARAF_SERVICE_TEMPLATE ]]; then
+ case $(uname | tr [:upper:] [:lower:]) in
+ sunos)
+ # add KARAF_ENV vars to envirioment
+ for var in "${KARAF_ENV[@]}"; do
+ export $var
+ done
+
+ # Default java path if not set
+ if [[ ! $JAVA_HOME ]]; then
+ export JAVA_HOME=/usr/java
+ fi
+
+ # escape spaces in path
+ export KARAF_SERVICE_PATH="$(echo $KARAF_SERVICE_PATH | sed 's/ /\\ /g')"
+ export KARAF_SERVICE_DATA="$(echo $KARAF_SERVICE_DATA | sed 's/ /\\ /g')"
+ export KARAF_SERVICE_CONF="$(echo $KARAF_SERVICE_CONF | sed 's/ /\\ /g')"
+ export KARAF_SERVICE_PIDFILE="$(echo $KARAF_SERVICE_PIDFILE | sed 's/ /\\ /g')"
+
+ generate_service_descriptor \
+ "$SOLARIS_SMF_TEMPLATE" \
+ "${PWD}/${KARAF_SERVICE_NAME}.xml"
+ ;;
+ linux)
+ if [ -d /run/systemd/system ]; then
+ generate_service_descriptor \
+ "$SYSTEMD_TEMPLATE" \
+ "${PWD}/${KARAF_SERVICE_NAME}.service" \
+ "${CONF_TEMPLATE}" \
+ "${KARAF_SERVICE_CONF}"
+
+ generate_service_descriptor \
+ "$SYSTEMD_TEMPLATE_INSTANCES" \
+ "${PWD}/${KARAF_SERVICE_NAME}@.service"
+
+ elif [ -f /etc/redhat-release ]; then
+ generate_service_descriptor \
+ "$INIT_REDHAT_TEMPLATE" \
+ "${PWD}/${KARAF_SERVICE_NAME}" \
+ "${CONF_TEMPLATE}" \
+ "${KARAF_SERVICE_CONF}"
+
+ chmod 755 "${PWD}/${KARAF_SERVICE_NAME}"
+ elif [ -f /etc/debian-release ] || [ -f /etc/debian_version ]; then
+ generate_service_descriptor \
+ "$INIT_DEBIAN_TEMPLATE" \
+ "${PWD}/${KARAF_SERVICE_NAME}" \
+ "${CONF_TEMPLATE}" \
+ "${KARAF_SERVICE_CONF}"
+
+ chmod 755 "${PWD}/${KARAF_SERVICE_NAME}"
+ fi
+ ;;
+ *)
+ generate_service_descriptor \
+ "$INIT_TEMPLATE" \
+ "${PWD}/${KARAF_SERVICE_NAME}" \
+ "${CONF_TEMPLATE}" \
+ "${KARAF_SERVICE_CONF}"
+
+ chmod 755 "${PWD}/${KARAF_SERVICE_NAME}"
+ ;;
+ esac
+else
+ generate_service_descriptor \
+ "$KARAF_SERVICE_TEMPLATE" \
+ "${PWD}/${KARAF_SERVICE_NAME}" \
+ "${CONF_TEMPLATE}" \
+ "${KARAF_SERVICE_CONF}"
+fi
diff --git a/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/bin/inc b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/bin/inc
new file mode 100755
index 0000000000..f9b7050d2a
--- /dev/null
+++ b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/bin/inc
@@ -0,0 +1,321 @@
+#!/bin/sh
+#
+# 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.
+#
+
+warn() {
+ echo "${PROGNAME}: $*"
+}
+
+die() {
+ warn "$*"
+ exit 1
+}
+
+detectOS() {
+ # OS specific support (must be 'true' or 'false').
+ cygwin=false;
+ mingw=false;
+ darwin=false;
+ aix=false;
+ os400=false;
+ hpux=false;
+ solaris=false;
+ case "$(uname)" in
+ CYGWIN*)
+ cygwin=true
+ ;;
+ MINGW*)
+ mingw=true
+ ;;
+ Darwin*)
+ darwin=true
+ ;;
+ AIX*)
+ aix=true
+ # For AIX, set an environment variable
+ export LDR_CNTRL=MAXDATA=0xB0000000@DSA
+ echo ${LDR_CNTRL}
+ ;;
+ OS400*)
+ os400=true
+ ;;
+ HP-UX*)
+ hpux=true
+ # For HP-UX, set an environment variable
+ export PS_PREFIX="UNIX95= "
+ echo "${PS_PREFIX}"
+ ;;
+ SunOS*)
+ solaris=true
+ ;;
+ esac
+}
+
+unlimitFD() {
+ # Use the maximum available, or set MAX_FD != -1 to use that
+ if [ "x${MAX_FD}" = "x" ]; then
+ MAX_FD="maximum"
+ fi
+
+ # Increase the maximum file descriptors if we can
+ if [ "x$(command -v ulimit)" != "x" ] && [ "${os400}" = "false" ] ; then
+ if [ "${MAX_FD}" = "maximum" ] || [ "${MAX_FD}" = "max" ]; then
+ MAX_FD_LIMIT=$(ulimit -H -n)
+ if [ $? -eq 0 ]; then
+ # use the system max
+ MAX_FD="${MAX_FD_LIMIT}"
+ else
+ warn "Could not query system maximum file descriptor limit: ${MAX_FD_LIMIT}"
+ fi
+ fi
+ if [ "${MAX_FD}" != 'unlimited' ]; then
+ ulimit -n "${MAX_FD}" > /dev/null
+ if [ $? -ne 0 ]; then
+ warn "Could not set maximum file descriptor limit: ${MAX_FD}"
+ fi
+ fi
+ fi
+}
+
+locateHome() {
+ if [ "x${KARAF_HOME}" != "x" ]; then
+ warn "Ignoring predefined value for KARAF_HOME"
+ unset KARAF_HOME
+ fi
+ if [ "x${KARAF_HOME}" = "x" ]; then
+ # In POSIX shells, CDPATH may cause cd to write to stdout
+ (unset CDPATH) >/dev/null 2>&1 && unset CDPATH
+ # KARAF_HOME is not provided, fall back to default
+ KARAF_HOME=$(cd "${DIRNAME}/.." || exit 2; pwd)
+ fi
+
+ if [ ! -d "${KARAF_HOME}" ]; then
+ die "KARAF_HOME is not valid: ${KARAF_HOME}"
+ fi
+}
+
+locateBase() {
+ if [ "x${KARAF_BASE}" != "x" ]; then
+ if [ ! -d "${KARAF_BASE}" ]; then
+ die "KARAF_BASE is not valid: ${KARAF_BASE}"
+ fi
+ else
+ KARAF_BASE=${KARAF_HOME}
+ fi
+}
+
+locateData() {
+ if [ "x${KARAF_DATA}" != "x" ]; then
+ if [ ! -d "${KARAF_DATA}" ]; then
+ die "KARAF_DATA is not valid: ${KARAF_DATA}"
+ fi
+ else
+ KARAF_DATA=${KARAF_BASE}/data
+ fi
+}
+
+locateEtc() {
+ if [ "x${KARAF_ETC}" != "x" ]; then
+ if [ ! -d "${KARAF_ETC}" ]; then
+ die "KARAF_ETC is not valid: ${KARAF_ETC}"
+ fi
+ else
+ KARAF_ETC=${KARAF_BASE}/etc
+ fi
+}
+
+setupNativePath() {
+ # Support for loading native libraries
+ LD_LIBRARY_PATH="${LD_LIBRARY_PATH}:${KARAF_BASE}/lib:${KARAF_HOME}/lib"
+
+ # For Cygwin, set PATH from LD_LIBRARY_PATH
+ if ${cygwin}; then
+ LD_LIBRARY_PATH=$(cygpath --path --windows "${LD_LIBRARY_PATH}")
+ PATH="${PATH};${LD_LIBRARY_PATH}"
+ export PATH
+ fi
+ export LD_LIBRARY_PATH
+}
+
+pathCanonical() {
+ dst="${1}"
+ while [ -h "${dst}" ] ; do
+ ls=$(ls -ld "${dst}")
+ link=$(expr "${ls}" : '.*-> \(.*\)$')
+ if expr "${link}" : '/.*' > /dev/null; then
+ dst="${link}"
+ else
+ dst="$(dirname "${dst}")/${link}"
+ fi
+ done
+ bas=$(basename "${dst}")
+ dir=$(dirname "${dst}")
+ if [ "${bas}" != "${dir}" ]; then
+ dst="$(pathCanonical "${dir}")/${bas}"
+ fi
+ echo "${dst}" | sed -e 's#//#/#g' -e 's#/./#/#g' -e 's#/[^/]*/../#/#g'
+}
+
+locateJava() {
+ # Setup the Java Virtual Machine
+ if ${cygwin} ; then
+ [ -n "${JAVA}" ] && JAVA=$(cygpath --unix "${JAVA}")
+ [ -n "${JAVA_HOME}" ] && JAVA_HOME=$(cygpath --unix "${JAVA_HOME}")
+ fi
+
+ if [ "x${JAVA_HOME}" = "x" ] && [ "${darwin}" = "true" ]; then
+ JAVA_HOME="$(/usr/libexec/java_home -v 1.8)"
+ fi
+ if [ "x${JAVA}" = "x" ] && [ -r /etc/gentoo-release ] ; then
+ JAVA_HOME=$(java-config --jre-home)
+ fi
+ if [ "x${JAVA}" = "x" ]; then
+ if [ "x${JAVA_HOME}" != "x" ]; then
+ if [ ! -d "${JAVA_HOME}" ]; then
+ die "JAVA_HOME is not valid: ${JAVA_HOME}"
+ fi
+ JAVA="${JAVA_HOME}/bin/java"
+ else
+ warn "JAVA_HOME not set; results may vary"
+ JAVA=$(command -v java)
+ if [ "x${JAVA}" = "x" ]; then
+ die "java command not found"
+ fi
+ fi
+ fi
+ if [ "x${JAVA_HOME}" = "x" ]; then
+ JAVA_HOME="$(dirname "$(dirname "$(pathCanonical "${JAVA}")")")"
+ fi
+}
+
+detectJVM() {
+ # This service should call $(java -version),
+ # read stdout, and look for hints
+ if "${JAVA}" -version 2>&1 | grep "^IBM" ; then
+ JVM_VENDOR="IBM"
+ # on OS/400, java -version does not contain IBM explicitly
+ elif ${os400}; then
+ JVM_VENDOR="IBM"
+ else
+ JVM_VENDOR="SUN"
+ fi
+ # echo "JVM vendor is ${JVM_VENDOR}"
+}
+
+checkJvmVersion() {
+ # Use in priority xpg4 awk or nawk on SunOS as standard awk is outdated
+ AWK=awk
+ if ${solaris}; then
+ if [ -x /usr/xpg4/bin/awk ]; then
+ AWK=/usr/xpg4/bin/awk
+ elif [ -x /usr/bin/nawk ]; then
+ AWK=/usr/bin/nawk
+ fi
+ fi
+
+ VERSION=$("${JAVA}" -version 2>&1 | ${AWK} -F '"' '/version/ {print $2}' | sed -e 's/_.*//g; s/^1\.//g; s/\..*//g; s/-.*//g;')
+
+ # java must be at least version 8
+ if [ "${VERSION}" -lt "8" ]; then
+ die "JVM must be greater than 1.8"
+ fi
+}
+
+setupDebugOptions() {
+ if [ "x${JAVA_OPTS}" = "x" ]; then
+ JAVA_OPTS="${DEFAULT_JAVA_OPTS}"
+ fi
+ export JAVA_OPTS
+
+ if [ "x${EXTRA_JAVA_OPTS}" != "x" ]; then
+ JAVA_OPTS="${JAVA_OPTS} ${EXTRA_JAVA_OPTS}"
+ fi
+
+ # Set Debug options if enabled
+ if [ "x${KARAF_DEBUG}" != "x" ]; then
+ # Use the defaults if JAVA_DEBUG_OPTS was not set
+ if [ "x${JAVA_DEBUG_OPTS}" = "x" ]; then
+ JAVA_DEBUG_OPTS="${DEFAULT_JAVA_DEBUG_OPTS}"
+ fi
+
+ JAVA_OPTS="${JAVA_DEBUG_OPTS} ${JAVA_OPTS}"
+ warn "Enabling Java debug options: ${JAVA_DEBUG_OPTS}"
+ fi
+}
+
+setupDefaults() {
+ #
+ # Set up some easily accessible MIN/MAX params for JVM mem usage
+ #
+ if [ "x${JAVA_MIN_MEM}" = "x" ]; then
+ JAVA_MIN_MEM=128M
+ export JAVA_MIN_MEM
+ fi
+ if [ "x${JAVA_MAX_MEM}" = "x" ]; then
+ JAVA_MAX_MEM=512M
+ export JAVA_MAX_MEM
+ fi
+
+ DEFAULT_JAVA_OPTS="-Xms${JAVA_MIN_MEM} -Xmx${JAVA_MAX_MEM} -XX:+UnlockDiagnosticVMOptions "
+
+ #Set the JVM_VENDOR specific JVM flags
+ if [ "${JVM_VENDOR}" = "SUN" ]; then
+ DEFAULT_JAVA_OPTS="${DEFAULT_JAVA_OPTS} -Dcom.sun.management.jmxremote"
+ elif [ "${JVM_VENDOR}" = "IBM" ]; then
+ if ${os400}; then
+ DEFAULT_JAVA_OPTS="${DEFAULT_JAVA_OPTS}"
+ elif ${aix}; then
+ DEFAULT_JAVA_OPTS="-Xverify:none -Xdump:heap -Xlp ${DEFAULT_JAVA_OPTS}"
+ else
+ DEFAULT_JAVA_OPTS="-Xverify:none ${DEFAULT_JAVA_OPTS}"
+ fi
+ fi
+
+ DEFAULT_JAVA_DEBUG_PORT="5005"
+ if [ "x${JAVA_DEBUG_PORT}" = "x" ]; then
+ JAVA_DEBUG_PORT="${DEFAULT_JAVA_DEBUG_PORT}"
+ fi
+ DEFAULT_JAVA_DEBUG_OPTS="-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=${JAVA_DEBUG_PORT}"
+ DEFAULT_JAVA_DEBUGS_OPTS="-agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=${JAVA_DEBUG_PORT}"
+
+ ##
+ ## TODO: Move to conf/profiler/yourkit.{sh|cmd}
+ ##
+ # Uncomment to enable YourKit profiling
+ #DEFAULT_JAVA_DEBUG_OPTS="-Xrunyjpagent"
+}
+
+convertPaths() {
+ if $cygwin; then
+ if [ ! -z "${KARAF_HOME}" ]; then
+ KARAF_HOME=$(cygpath --path --windows "${KARAF_HOME}")
+ fi
+ if [ ! -z "${KARAF_BASE}" ]; then
+ KARAF_BASE=$(cygpath --path --windows "${KARAF_BASE}")
+ fi
+ if [ ! -z "${KARAF_DATA}" ]; then
+ KARAF_DATA=$(cygpath --path --windows "${KARAF_DATA}")
+ fi
+ if [ ! -z "${KARAF_ETC}" ]; then
+ KARAF_ETC=$(cygpath --path --windows "${KARAF_ETC}")
+ fi
+ if [ ! -z "${CLASSPATH}" ]; then
+ CLASSPATH=$(cygpath --path --windows "${CLASSPATH}")
+ fi
+ fi
+}
+
diff --git a/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/bin/instance b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/bin/instance
new file mode 100755
index 0000000000..238e5ddf70
--- /dev/null
+++ b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/bin/instance
@@ -0,0 +1,143 @@
+#!/bin/sh
+#
+# 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.
+#
+
+realpath() {
+ # Use in priority xpg4 awk or nawk on SunOS as standard awk is outdated
+ AWK=awk
+ if ${solaris}; then
+ if [ -x /usr/xpg4/bin/awk ]; then
+ AWK=/usr/xpg4/bin/awk
+ elif [ -x /usr/bin/nawk ]; then
+ AWK=/usr/bin/nawk
+ fi
+ fi
+
+ READLINK_EXISTS=$(command -v readlink &> /dev/null)
+ if [ -z "$READLINK_EXISTS" ]; then
+ OURPWD=${PWD}
+ cd "$(dirname "${1}")" || exit 2
+ LINK=$(ls -l "$(basename "${1}")" | ${AWK} -F"-> " '{print $2}')
+ while [ "${LINK}" ]; do
+ echo "link: ${LINK}" >&2
+ cd "$(dirname "${LINK}")" || exit 2
+ LINK=$(ls -l "$(basename "${1}")" | ${AWK} -F"-> " '{print $2}')
+ done
+ REALPATH="${PWD}/$(basename "${1}")"
+ cd "${OURPWD}" || exit 2
+ echo "${REALPATH}"
+ else
+ OURPWD=${PWD}
+ cd "$(dirname "${1}")" || exit 2
+ LINK=$(readlink "$(basename "${1}")")
+ while [ "${LINK}" ]; do
+ echo "link: ${LINK}" >&2
+ cd "$(dirname "${LINK}")" || exit 2
+ LINK=$(readlink "$(basename "${1}")")
+ done
+ REALPATH="${PWD}/$(basename "${1}")"
+ cd "${OURPWD}" || exit 2
+ echo "${REALPATH}"
+ fi
+}
+
+REALNAME=$(realpath "$0")
+DIRNAME=$(dirname "${REALNAME}")
+PROGNAME=$(basename "${REALNAME}")
+
+#
+# Load common functions
+#
+. "${DIRNAME}/inc"
+
+#
+# Sourcing environment settings for karaf similar to tomcats setenv
+#
+KARAF_SCRIPT="${PROGNAME}"
+export KARAF_SCRIPT
+if [ -f "${DIRNAME}/setenv" ]; then
+ . "${DIRNAME}/setenv"
+fi
+
+setupClassPath() {
+ # Setup classpath
+ CLASSPATH="${KARAF_HOME}/system/org/apache/karaf/instance/org.apache.karaf.instance.core/4.2.1/org.apache.karaf.instance.core-4.2.1.jar"
+ CLASSPATH="${CLASSPATH}:${KARAF_HOME}/system/org/apache/karaf/shell/org.apache.karaf.shell.core/4.2.1/org.apache.karaf.shell.core-4.2.1.jar"
+ CLASSPATH="${CLASSPATH}:${KARAF_HOME}/system/org/ops4j/pax/logging/pax-logging-api/1.10.1/pax-logging-api-1.10.1.jar"
+ CLASSPATH="${CLASSPATH}:${KARAF_HOME}/system/org/jline/jline/3.9.0/jline-3.9.0.jar"
+}
+
+init() {
+ # Determine if there is special OS handling we must perform
+ detectOS
+
+ # Unlimit the number of file descriptors if possible
+ unlimitFD
+
+ # Locate the Karaf home directory
+ locateHome
+
+ # Locate the Karaf base directory
+ locateBase
+
+ # Locate the Karaf data directory
+ locateData
+
+ # Locate the Karaf etc directory
+ locateEtc
+
+ # Setup the native library path
+ setupNativePath
+
+ # Locate the Java VM to execute
+ locateJava
+
+ # Determine the JVM vendor
+ detectJVM
+
+ # Setup default options
+ setupDefaults
+
+ # Setup classpath
+ setupClassPath
+
+ # Install debug options
+ setupDebugOptions
+
+}
+
+run() {
+ convertPaths
+ exec "${JAVA}" ${JAVA_OPTS} \
+ -Dkaraf.instances="${KARAF_HOME}/instances" \
+ -Dkaraf.home="${KARAF_HOME}" \
+ -Dkaraf.base="${KARAF_BASE}" \
+ -Dkaraf.etc="${KARAF_ETC}" \
+ -Djava.io.tmpdir="${KARAF_DATA}/tmp" \
+ -Djava.util.logging.config.file="${KARAF_BASE}/etc/java.util.logging.properties" \
+ ${KARAF_OPTS} ${OPTS} \
+ -classpath "${CLASSPATH}" \
+ org.apache.karaf.instance.main.Execute "$@"
+}
+
+main() {
+ init
+ run "$@"
+}
+
+main "$@"
+
diff --git a/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/bin/instance.bat b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/bin/instance.bat
new file mode 100755
index 0000000000..d38a6aa480
--- /dev/null
+++ b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/bin/instance.bat
@@ -0,0 +1,158 @@
+@echo off
+rem
+rem
+rem Licensed to the Apache Software Foundation (ASF) under one or more
+rem contributor license agreements. See the NOTICE file distributed with
+rem this work for additional information regarding copyright ownership.
+rem The ASF licenses this file to You under the Apache License, Version 2.0
+rem (the "License"); you may not use this file except in compliance with
+rem the License. You may obtain a copy of the License at
+rem
+rem http://www.apache.org/licenses/LICENSE-2.0
+rem
+rem Unless required by applicable law or agreed to in writing, software
+rem distributed under the License is distributed on an "AS IS" BASIS,
+rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+rem See the License for the specific language governing permissions and
+rem limitations under the License.
+rem
+
+if not "%ECHO%" == "" echo %ECHO%
+
+setlocal
+set DIRNAME=%~dp0%
+set PROGNAME=%~nx0%
+set ARGS=%*
+
+rem Sourcing environment settings for karaf similar to tomcats setenv
+SET KARAF_SCRIPT="instance.bat"
+if exist "%DIRNAME%setenv.bat" (
+ call "%DIRNAME%setenv.bat"
+)
+
+rem Check console window title. Set to Karaf by default
+if not "%KARAF_TITLE%" == "" (
+ title %KARAF_TITLE%
+) else (
+ title Karaf
+)
+
+rem Check/Set up some easily accessible MIN/MAX params for JVM mem usage
+if "%JAVA_MIN_MEM%" == "" (
+ set JAVA_MIN_MEM=128M
+)
+if "%JAVA_MAX_MEM%" == "" (
+ set JAVA_MAX_MEM=512M
+)
+
+goto BEGIN
+
+:warn
+ echo %PROGNAME%: %*
+goto :EOF
+
+:BEGIN
+
+rem # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
+
+if not "%KARAF_HOME%" == "" (
+ call :warn Ignoring predefined value for KARAF_HOME
+)
+set KARAF_HOME=%DIRNAME%..
+if not exist "%KARAF_HOME%" (
+ call :warn KARAF_HOME is not valid: "%KARAF_HOME%"
+ goto END
+)
+
+if not "%KARAF_BASE%" == "" (
+ if not exist "%KARAF_BASE%" (
+ call :warn KARAF_BASE is not valid: "%KARAF_BASE%"
+ goto END
+ )
+)
+if "%KARAF_BASE%" == "" (
+ set "KARAF_BASE=%KARAF_HOME%"
+)
+
+if not "%KARAF_DATA%" == "" (
+ if not exist "%KARAF_DATA%" (
+ call :warn KARAF_DATA is not valid: "%KARAF_DATA%"
+ goto END
+ )
+)
+if "%KARAF_DATA%" == "" (
+ set "KARAF_DATA=%KARAF_BASE%\data"
+)
+
+if not "%KARAF_ETC%" == "" (
+ if not exist "%KARAF_ETC%" (
+ call :warn KARAF_ETC is not valid: "%KARAF_ETC%"
+ goto END
+ )
+)
+if "%KARAF_ETC%" == "" (
+ set "KARAF_ETC=%KARAF_BASE%\etc"
+)
+
+set DEFAULT_JAVA_OPTS=
+set DEFAULT_JAVA_DEBUG_OPTS=-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005
+
+rem Support for loading native libraries
+set PATH=%PATH%;%KARAF_BASE%\lib;%KARAF_HOME%\lib
+
+rem Setup the Java Virtual Machine
+if not "%JAVA%" == "" goto :Check_JAVA_END
+ set JAVA=java
+ if "%JAVA_HOME%" == "" call :warn JAVA_HOME not set; results may vary
+ if not "%JAVA_HOME%" == "" set JAVA=%JAVA_HOME%\bin\java
+ if not exist "%JAVA_HOME%" (
+ call :warn JAVA_HOME is not valid: "%JAVA_HOME%"
+ goto END
+ )
+:Check_JAVA_END
+
+if "%JAVA_OPTS%" == "" set JAVA_OPTS=%DEFAULT_JAVA_OPTS%
+
+if "%EXTRA_JAVA_OPTS%" == "" goto :KARAF_EXTRA_JAVA_OPTS_END
+ set JAVA_OPTS="%JAVA_OPTS% %EXTRA_JAVA_OPTS%"
+:KARAF_EXTRA_JAVA_OPTS_END
+
+if "%KARAF_DEBUG%" == "" goto :KARAF_DEBUG_END
+ rem Use the defaults if JAVA_DEBUG_OPTS was not set
+ if "%JAVA_DEBUG_OPTS%" == "" set JAVA_DEBUG_OPTS=%DEFAULT_JAVA_DEBUG_OPTS%
+
+ set JAVA_OPTS="%JAVA_DEBUG_OPTS% %JAVA_OPTS%"
+ call :warn Enabling Java debug options: %JAVA_DEBUG_OPTS%
+:KARAF_DEBUG_END
+
+rem Setup the classpath
+pushd "%KARAF_HOME%\lib"
+for %%G in (*.jar) do call:APPEND_TO_CLASSPATH %%G
+popd
+goto CLASSPATH_END
+
+: APPEND_TO_CLASSPATH
+set filename=%~1
+set suffix=%filename:~-4%
+if %suffix% equ .jar set CLASSPATH=%CLASSPATH%;%KARAF_HOME%\lib\%filename%
+goto :EOF
+
+:CLASSPATH_END
+
+set CLASSPATH=%KARAF_HOME%\system\org\apache\karaf\instance\org.apache.karaf.instance.core\4.2.1\org.apache.karaf.instance.core-4.2.1.jar
+set CLASSPATH=%CLASSPATH%;%KARAF_HOME%\system\org\apache\karaf\shell\org.apache.karaf.shell.core\4.2.1\org.apache.karaf.shell.core-4.2.1.jar
+set CLASSPATH=%CLASSPATH%;%KARAF_HOME%\system\org\ops4j\pax\logging\pax-logging-api\1.10.1\pax-logging-api-1.10.1.jar
+set CLASSPATH=%CLASSPATH%;%KARAF_HOME%\system\org\jline\jline\3.9.0\jline-3.9.0.jar
+
+:EXECUTE
+ if "%SHIFT%" == "true" SET ARGS=%2 %3 %4 %5 %6 %7 %8
+ if not "%SHIFT%" == "true" SET ARGS=%1 %2 %3 %4 %5 %6 %7 %8
+ rem Execute the Java Virtual Machine
+ "%JAVA%" %JAVA_OPTS% %OPTS% -classpath "%CLASSPATH%" -Dkaraf.instances="%KARAF_HOME%\instances" -Dkaraf.home="%KARAF_HOME%" -Dkaraf.base="%KARAF_BASE%" -Dkaraf.etc="%KARAF_ETC%" -Djava.io.tmpdir="%KARAF_DATA%\tmp" -Djava.util.logging.config.file="%KARAF_BASE%\etc\java.util.logging.properties" %KARAF_OPTS% org.apache.karaf.instance.main.Execute %ARGS%
+
+rem # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
+
+:END
+
+endlocal
+
diff --git a/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/bin/karaf b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/bin/karaf
new file mode 100755
index 0000000000..3e00d0db2a
--- /dev/null
+++ b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/bin/karaf
@@ -0,0 +1,360 @@
+#!/bin/sh
+#
+# 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.
+#
+
+realpath() {
+ # Use in priority xpg4 awk or nawk on SunOS as standard awk is outdated
+ AWK=awk
+ if ${solaris}; then
+ if [ -x /usr/xpg4/bin/awk ]; then
+ AWK=/usr/xpg4/bin/awk
+ elif [ -x /usr/bin/nawk ]; then
+ AWK=/usr/bin/nawk
+ fi
+ fi
+
+ READLINK_EXISTS=$(command -v readlink &> /dev/null)
+ if [ -z "$READLINK_EXISTS" ]; then
+ OURPWD=${PWD}
+ cd "$(dirname "${1}")" || exit 2
+ LINK=$(ls -l "$(basename "${1}")" | ${AWK} -F"-> " '{print $2}')
+ while [ "${LINK}" ]; do
+ echo "link: ${LINK}" >&2
+ cd "$(dirname "${LINK}")" || exit 2
+ LINK=$(ls -l "$(basename "${1}")" | ${AWK} -F"-> " '{print $2}')
+ done
+ REALPATH="${PWD}/$(basename "${1}")"
+ cd "${OURPWD}" || exit 2
+ echo "${REALPATH}"
+ else
+ OURPWD=${PWD}
+ cd "$(dirname "${1}")" || exit 2
+ LINK=$(readlink "$(basename "${1}")")
+ while [ "${LINK}" ]; do
+ echo "link: ${LINK}" >&2
+ cd "$(dirname "${LINK}")" || exit 2
+ LINK=$(readlink "$(basename "${1}")")
+ done
+ REALPATH="${PWD}/$(basename "${1}")"
+ cd "${OURPWD}" || exit 2
+ echo "${REALPATH}"
+ fi
+}
+
+REALNAME=$(realpath "$0")
+DIRNAME=$(dirname "${REALNAME}")
+PROGNAME=$(basename "${REALNAME}")
+LOCAL_CLASSPATH=$CLASSPATH
+
+#
+# Load common functions
+#
+. "${DIRNAME}/inc"
+
+#
+# Sourcing environment settings for karaf similar to tomcats setenv
+#
+KARAF_SCRIPT="${PROGNAME}"
+export KARAF_SCRIPT
+if [ -f "${DIRNAME}/setenv" ]; then
+ . "${DIRNAME}/setenv"
+fi
+
+forceNoRoot() {
+ # If configured, prevent execution as root
+ if [ "${KARAF_NOROOT}" ] && [ "$(id -u)" -eq 0 ]; then
+ die "Do not run as root!"
+ fi
+}
+
+setupClassPath() {
+ # Add the jars in the lib dir
+ for file in "${KARAF_HOME}"/lib/boot/*.jar
+ do
+ if [ -z "${CLASSPATH}" ]; then
+ CLASSPATH="${file}"
+ else
+ CLASSPATH="${CLASSPATH}:${file}"
+ fi
+ done
+}
+
+checkRootInstance() {
+ ROOT_INSTANCE_RUNNING=false
+ if [ -f "${KARAF_HOME}/instances/instance.properties" ];
+ then
+ ROOT_INSTANCE_PID=$(sed -n -e '/item.0.pid/ s/.*\= *//p' "${KARAF_HOME}/instances/instance.properties")
+ ROOT_INSTANCE_NAME=$(sed -n -e '/item.0.name/ s/.*\= *//p' "${KARAF_HOME}/instances/instance.properties")
+ if [ "${ROOT_INSTANCE_PID}" -ne "0" ]; then
+ if ps -p "${ROOT_INSTANCE_PID}" > /dev/null
+ then
+ MAIN=org.apache.karaf.main.Main
+ PID_COMMAND=$("${PS_PREFIX}"ps -p "${ROOT_INSTANCE_PID}" -o args | sed 1d)
+
+ if [ "${PID_COMMAND#*$MAIN}" != "$PID_COMMAND" ]; then
+ ROOT_INSTANCE_RUNNING=true
+ fi
+ fi
+ fi
+ fi
+}
+
+init() {
+ # Prevent root execution if configured
+ forceNoRoot
+
+ # Determine if there is special OS handling we must perform
+ detectOS
+
+ # Unlimit the number of file descriptors if possible
+ unlimitFD
+
+ # Locate the Karaf home directory
+ locateHome
+
+ # Locate the Karaf base directory
+ locateBase
+
+ # Locate the Karaf data directory
+ locateData
+
+ # Locate the Karaf etc directory
+ locateEtc
+
+ # Setup the native library path
+ setupNativePath
+
+ # Locate the Java VM to execute
+ locateJava
+
+ # Determine the JVM vendor
+ detectJVM
+
+ # Determine the JVM version >= 1.6
+ checkJvmVersion
+
+ # Check if a root instance is already running
+ checkRootInstance
+
+ # Setup default options
+ setupDefaults
+
+ # Setup classpath
+ setupClassPath
+
+ # Install debug options
+ setupDebugOptions
+
+}
+
+run() {
+ OPTS="-Dkaraf.startLocalConsole=true -Dkaraf.startRemoteShell=true"
+ MAIN=org.apache.karaf.main.Main
+ if [ "x$CHECK_ROOT_INSTANCE_RUNNING" = "x" ]; then
+ CHECK_ROOT_INSTANCE_RUNNING=true
+ fi
+ JAVA_ENDORSED_DIRS="${JAVA_HOME}/jre/lib/endorsed:${JAVA_HOME}/lib/endorsed:${KARAF_HOME}/lib/endorsed"
+ JAVA_EXT_DIRS="${JAVA_HOME}/jre/lib/ext:${JAVA_HOME}/lib/ext:${KARAF_HOME}/lib/ext"
+ if ${cygwin}; then
+ JAVA_HOME=$(cygpath --path --windows "${JAVA_HOME}")
+ JAVA_ENDORSED_DIRS=$(cygpath --path --windows "${JAVA_ENDORSED_DIRS}")
+ JAVA_EXT_DIRS=$(cygpath --path --windows "${JAVA_EXT_DIRS}")
+ fi
+ convertPaths
+ cd "${KARAF_BASE}" || exit 2
+
+ if [ -z "${KARAF_EXEC}" ]; then
+ KARAF_EXEC=""
+ fi
+
+ debug=false
+ debugs=false
+ nodebug=false
+ while [ "${1}" != "" ]; do
+ case "${1}" in
+ 'clean')
+ rm -rf "${KARAF_DATA:?}"
+ shift
+ ;;
+ 'debug')
+ debug=true
+ shift
+ ;;
+ 'debugs')
+ debug=true
+ debugs=true
+ shift
+ ;;
+ 'status')
+ MAIN=org.apache.karaf.main.Status
+ CHECK_ROOT_INSTANCE_RUNNING=false
+ nodebug=true
+ shift
+ ;;
+ 'stop')
+ MAIN=org.apache.karaf.main.Stop
+ CHECK_ROOT_INSTANCE_RUNNING=false
+ nodebug=true
+ shift
+ ;;
+ 'console')
+ CHECK_ROOT_INSTANCE_RUNNING=false
+ shift
+ ;;
+ 'server')
+ OPTS="-Dkaraf.startLocalConsole=false -Dkaraf.startRemoteShell=true"
+ shift
+ ;;
+ 'run')
+ OPTS="-Dkaraf.startLocalConsole=false -Dkaraf.startRemoteShell=true -Dkaraf.log.console=ALL"
+ shift
+ ;;
+ 'daemon')
+ OPTS="-Dkaraf.startLocalConsole=false -Dkaraf.startRemoteShell=true"
+ KARAF_DAEMON="true"
+ KARAF_EXEC="exec"
+ shift
+ ;;
+ 'client')
+ OPTS="-Dkaraf.startLocalConsole=true -Dkaraf.startRemoteShell=false"
+ CHECK_ROOT_INSTANCE_RUNNING=false
+ nodebug=true
+ shift
+ ;;
+ 'classpath')
+ echo "Classpath: ${CLASSPATH}"
+ shift
+ ;;
+ *)
+ break
+ ;;
+ esac
+ done
+
+ if ${nodebug}; then
+ debug=false
+ fi
+ if ${debug}; then
+ if [ "x${JAVA_DEBUG_OPTS}" = "x" ]; then
+ if ${debugs}; then
+ JAVA_DEBUG_OPTS="${DEFAULT_JAVA_DEBUGS_OPTS}"
+ else
+ JAVA_DEBUG_OPTS="${DEFAULT_JAVA_DEBUG_OPTS}"
+ fi
+ fi
+ JAVA_OPTS="${JAVA_DEBUG_OPTS} ${JAVA_OPTS}"
+ fi
+
+ while true; do
+ # When users want to update the lib version of, they just need to create
+ # a lib.next directory and on the new restart, it will replace the current lib directory.
+ if [ -d "${KARAF_HOME:?}/lib.next" ] ; then
+ echo "Updating libs..."
+ rm -rf "${KARAF_HOME:?}/lib"
+ mv -f "${KARAF_HOME:?}/lib.next" "${KARAF_HOME}/lib"
+
+ echo "Updating classpath..."
+ CLASSPATH=$LOCAL_CLASSPATH
+ setupClassPath
+ fi
+
+ # Ensure the log directory exists
+ # We may need to have a place to redirect stdout/stderr
+ if [ ! -d "${KARAF_DATA}/log" ]; then
+ mkdir -p "${KARAF_DATA}/log"
+ fi
+ if [ ! -d "${KARAF_DATA}/tmp" ]; then
+ mkdir -p "${KARAF_DATA}/tmp"
+ fi
+
+ if [ "${ROOT_INSTANCE_RUNNING}" = "false" ] || [ "${CHECK_ROOT_INSTANCE_RUNNING}" = "false" ] ; then
+ if [ "${VERSION}" -gt "8" ]; then
+ ${KARAF_EXEC} "${JAVA}" ${JAVA_OPTS} \
+ --add-reads=java.xml=java.logging \
+ --patch-module java.base=lib/endorsed/org.apache.karaf.specs.locator-4.2.1.jar \
+ --patch-module java.xml=lib/endorsed/org.apache.karaf.specs.java.xml-4.2.1.jar \
+ --add-opens java.base/java.security=ALL-UNNAMED \
+ --add-opens java.base/java.net=ALL-UNNAMED \
+ --add-opens java.base/java.lang=ALL-UNNAMED \
+ --add-opens java.base/java.util=ALL-UNNAMED \
+ --add-opens java.naming/javax.naming.spi=ALL-UNNAMED \
+ --add-opens java.rmi/sun.rmi.transport.tcp=ALL-UNNAMED \
+ --add-exports=java.base/sun.net.www.protocol.http=ALL-UNNAMED \
+ --add-exports=java.base/sun.net.www.protocol.https=ALL-UNNAMED \
+ --add-exports=java.base/sun.net.www.protocol.jar=ALL-UNNAMED \
+ --add-exports=jdk.xml.dom/org.w3c.dom.html=ALL-UNNAMED \
+ --add-exports=jdk.naming.rmi/com.sun.jndi.url.rmi=ALL-UNNAMED \
+ -Dkaraf.instances="${KARAF_HOME}/instances" \
+ -Dkaraf.home="${KARAF_HOME}" \
+ -Dkaraf.base="${KARAF_BASE}" \
+ -Dkaraf.data="${KARAF_DATA}" \
+ -Dkaraf.etc="${KARAF_ETC}" \
+ -Dkaraf.restart.jvm.supported=true \
+ -Djava.io.tmpdir="${KARAF_DATA}/tmp" \
+ -Djava.util.logging.config.file="${KARAF_BASE}/etc/java.util.logging.properties" \
+ ${KARAF_SYSTEM_OPTS} \
+ ${KARAF_OPTS} \
+ ${OPTS} \
+ -classpath "${CLASSPATH}" \
+ ${MAIN} "$@"
+ else
+ ${KARAF_EXEC} "${JAVA}" ${JAVA_OPTS} \
+ -Djava.endorsed.dirs="${JAVA_ENDORSED_DIRS}" \
+ -Djava.ext.dirs="${JAVA_EXT_DIRS}" \
+ -Dkaraf.instances="${KARAF_HOME}/instances" \
+ -Dkaraf.home="${KARAF_HOME}" \
+ -Dkaraf.base="${KARAF_BASE}" \
+ -Dkaraf.data="${KARAF_DATA}" \
+ -Dkaraf.etc="${KARAF_ETC}" \
+ -Dkaraf.restart.jvm.supported=true \
+ -Djava.io.tmpdir="${KARAF_DATA}/tmp" \
+ -Djava.util.logging.config.file="${KARAF_BASE}/etc/java.util.logging.properties" \
+ ${KARAF_SYSTEM_OPTS} \
+ ${KARAF_OPTS} \
+ ${OPTS} \
+ -classpath "${CLASSPATH}" \
+ ${MAIN} "$@"
+ fi
+ else
+ die "There is a Root instance already running with name ${ROOT_INSTANCE_NAME} and pid ${ROOT_INSTANCE_PID}. If you know what you are doing and want to force the run anyway, export CHECK_ROOT_INSTANCE_RUNNING=false and re run the command."
+ fi
+
+ KARAF_RC=$?
+ if [ ${KARAF_DAEMON} ] ; then
+ exit ${KARAF_RC}
+ else
+ if [ "${KARAF_RC}" -eq 10 ]; then
+ echo "Restarting JVM..."
+ else
+ exit ${KARAF_RC}
+ fi
+ fi
+ done
+}
+
+nothing() {
+ # nothing to do here
+ a=a
+}
+
+main() {
+ init
+ trap 'nothing' TSTP
+ run "$@"
+}
+
+main "$@"
diff --git a/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/bin/karaf.bat b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/bin/karaf.bat
new file mode 100755
index 0000000000..754c49fae5
--- /dev/null
+++ b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/bin/karaf.bat
@@ -0,0 +1,480 @@
+@echo off
+rem
+rem
+rem Licensed to the Apache Software Foundation (ASF) under one or more
+rem contributor license agreements. See the NOTICE file distributed with
+rem this work for additional information regarding copyright ownership.
+rem The ASF licenses this file to You under the Apache License, Version 2.0
+rem (the "License"); you may not use this file except in compliance with
+rem the License. You may obtain a copy of the License at
+rem
+rem http://www.apache.org/licenses/LICENSE-2.0
+rem
+rem Unless required by applicable law or agreed to in writing, software
+rem distributed under the License is distributed on an "AS IS" BASIS,
+rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+rem See the License for the specific language governing permissions and
+rem limitations under the License.
+rem
+
+if not "%ECHO%" == "" echo %ECHO%
+
+setlocal
+set DIRNAME=%~dp0%
+set PROGNAME=%~nx0%
+set ARGS=%*
+
+rem Sourcing environment settings for karaf similar to tomcats setenv
+SET KARAF_SCRIPT="karaf.bat"
+if exist "%DIRNAME%setenv.bat" (
+ call "%DIRNAME%setenv.bat"
+)
+
+rem Check console window title. Set to Karaf by default
+if not "%KARAF_TITLE%" == "" (
+ title %KARAF_TITLE%
+) else (
+ title Karaf
+)
+
+rem Check/Set up some easily accessible MIN/MAX params for JVM mem usage
+if "%JAVA_MIN_MEM%" == "" (
+ set JAVA_MIN_MEM=128M
+)
+if "%JAVA_MAX_MEM%" == "" (
+ set JAVA_MAX_MEM=512M
+)
+
+goto BEGIN
+
+:warn
+ echo %PROGNAME%: %*
+goto :EOF
+
+:BEGIN
+
+rem # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
+
+if not "%KARAF_HOME%" == "" (
+ call :warn Ignoring predefined value for KARAF_HOME
+)
+set KARAF_HOME=%DIRNAME%..
+if not exist "%KARAF_HOME%" (
+ call :warn KARAF_HOME is not valid: "%KARAF_HOME%"
+ goto END
+)
+
+if not "%KARAF_BASE%" == "" (
+ if not exist "%KARAF_BASE%" (
+ call :warn KARAF_BASE is not valid: "%KARAF_BASE%"
+ goto END
+ )
+)
+if "%KARAF_BASE%" == "" (
+ set "KARAF_BASE=%KARAF_HOME%"
+)
+
+if not "%KARAF_DATA%" == "" (
+ if not exist "%KARAF_DATA%" (
+ call :warn KARAF_DATA is not valid: "%KARAF_DATA%"
+ call :warn Creating "%KARAF_DATA%"
+ mkdir "%KARAF_DATA%"
+ )
+)
+if "%KARAF_DATA%" == "" (
+ set "KARAF_DATA=%KARAF_BASE%\data"
+)
+
+if not "%KARAF_ETC%" == "" (
+ if not exist "%KARAF_ETC%" (
+ call :warn KARAF_ETC is not valid: "%KARAF_ETC%"
+ goto END
+ )
+)
+if "%KARAF_ETC%" == "" (
+ set "KARAF_ETC=%KARAF_BASE%\etc"
+)
+
+set LOCAL_CLASSPATH=%CLASSPATH%
+
+set CLASSPATH=%LOCAL_CLASSPATH%;%KARAF_BASE%\conf
+set DEFAULT_JAVA_DEBUG_OPTS=-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005
+set DEFAULT_JAVA_DEBUGS_OPTS=-agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=5005
+
+if "%LOCAL_CLASSPATH%" == "" goto :KARAF_CLASSPATH_EMPTY
+ set CLASSPATH=%LOCAL_CLASSPATH%;%KARAF_BASE%\conf
+ goto :KARAF_CLASSPATH_END
+:KARAF_CLASSPATH_EMPTY
+ set CLASSPATH=%KARAF_BASE%\conf
+:KARAF_CLASSPATH_END
+
+set CLASSPATH_INITIAL=%CLASSPATH%
+
+rem Setup Karaf Home
+if exist "%KARAF_HOME%\conf\karaf-rc.cmd" call %KARAF_HOME%\conf\karaf-rc.cmd
+if exist "%HOME%\karaf-rc.cmd" call %HOME%\karaf-rc.cmd
+
+rem Support for loading native libraries
+set PATH=%PATH%;%KARAF_BASE%\lib;%KARAF_HOME%\lib
+
+rem Setup the Java Virtual Machine
+if not "%JAVA%" == "" goto :Check_JAVA_END
+ if not "%JAVA_HOME%" == "" goto :TryJDKEnd
+ call :warn JAVA_HOME not set; results may vary
+:TryJRE
+ start /w regedit /e __reg1.txt "HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Runtime Environment"
+ if not exist __reg1.txt goto :TryJDK
+ type __reg1.txt | find "CurrentVersion" > __reg2.txt
+ if errorlevel 1 goto :TryJDK
+ for /f "tokens=2 delims==" %%x in (__reg2.txt) do set JavaTemp=%%~x
+ if errorlevel 1 goto :TryJDK
+ set JavaTemp=%JavaTemp%##
+ set JavaTemp=%JavaTemp: ##=##%
+ set JavaTemp=%JavaTemp: ##=##%
+ set JavaTemp=%JavaTemp: ##=##%
+ set JavaTemp=%JavaTemp: ##=##%
+ set JavaTemp=%JavaTemp: ##=##%
+ set JavaTemp=%JavaTemp:##=%
+ del __reg1.txt
+ del __reg2.txt
+ start /w regedit /e __reg1.txt "HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Runtime Environment\%JavaTemp%"
+ if not exist __reg1.txt goto :TryJDK
+ type __reg1.txt | find "JavaHome" > __reg2.txt
+ if errorlevel 1 goto :TryJDK
+ for /f "tokens=2 delims==" %%x in (__reg2.txt) do set JAVA_HOME=%%~x
+ if errorlevel 1 goto :TryJDK
+ del __reg1.txt
+ del __reg2.txt
+ goto TryJDKEnd
+:TryJDK
+ start /w regedit /e __reg1.txt "HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Development Kit"
+ if not exist __reg1.txt (
+ goto TryRegJRE
+ )
+ type __reg1.txt | find "CurrentVersion" > __reg2.txt
+ if errorlevel 1 (
+ goto TryRegJRE
+ )
+ for /f "tokens=2 delims==" %%x in (__reg2.txt) do set JavaTemp=%%~x
+ if errorlevel 1 (
+ goto TryRegJRE
+ )
+ set JavaTemp=%JavaTemp%##
+ set JavaTemp=%JavaTemp: ##=##%
+ set JavaTemp=%JavaTemp: ##=##%
+ set JavaTemp=%JavaTemp: ##=##%
+ set JavaTemp=%JavaTemp: ##=##%
+ set JavaTemp=%JavaTemp: ##=##%
+ set JavaTemp=%JavaTemp:##=%
+ del __reg1.txt
+ del __reg2.txt
+ start /w regedit /e __reg1.txt "HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Development Kit\%JavaTemp%"
+ if not exist __reg1.txt (
+ goto TryRegJRE
+ )
+ type __reg1.txt | find "JavaHome" > __reg2.txt
+ if errorlevel 1 (
+ goto TryRegJRE
+ )
+ for /f "tokens=2 delims==" %%x in (__reg2.txt) do set JAVA_HOME=%%~x
+ if errorlevel 1 (
+ goto TryRegJRE
+ )
+ del __reg1.txt
+ del __reg2.txt
+:TryRegJRE
+ rem try getting the JAVA_HOME from registry
+ FOR /F "usebackq tokens=3*" %%A IN (`REG QUERY "HKLM\Software\JavaSoft\Java Runtime Environment" /v CurrentVersion`) DO (
+ set JAVA_VERSION=%%A
+ )
+ FOR /F "usebackq tokens=3*" %%A IN (`REG QUERY "HKLM\Software\JavaSoft\Java Runtime Environment\%JAVA_VERSION%" /v JavaHome`) DO (
+ set JAVA_HOME=%%A %%B
+ )
+ if not exist "%JAVA_HOME%" (
+ goto TryRegJDK
+ )
+ goto TryJDKEnd
+:TryRegJDK
+ rem try getting the JAVA_HOME from registry
+ FOR /F "usebackq tokens=3*" %%A IN (`REG QUERY "HKLM\Software\JavaSoft\Java Development Kit" /v CurrentVersion`) DO (
+ set JAVA_VERSION=%%A
+ )
+ FOR /F "usebackq tokens=3*" %%A IN (`REG QUERY "HKLM\Software\JavaSoft\Java Development Kit\%JAVA_VERSION%" /v JavaHome`) DO (
+ set JAVA_HOME=%%A %%B
+ )
+ if not exist "%JAVA_HOME%" (
+ call :warn Unable to retrieve JAVA_HOME from Registry
+ )
+ goto TryJDKEnd
+:TryJDKEnd
+ if not exist "%JAVA_HOME%" (
+ call :warn JAVA_HOME is not valid: "%JAVA_HOME%"
+ goto END
+ )
+ set JAVA=%JAVA_HOME%\bin\java
+:Check_JAVA_END
+
+rem Retrieve java version
+for /f tokens^=2-5^ delims^=.-_+^" %%j in ('"%JAVA%" -fullversion 2^>^&1') do (
+ if %%j==1 (set JAVA_VERSION=%%k) else (set JAVA_VERSION=%%j)
+)
+
+:CheckRootInstance
+ set ROOT_INSTANCE_RUNNING=false
+ if exist "%KARAF_HOME%\instances\instance.properties" (
+ for /f "delims=" %%x in ( 'findstr "item.0.pid" "%KARAF_HOME%\instances\instance.properties" ' ) do @set pid=%%x
+ for /f "delims=" %%i in ( 'findstr "item.0.name" "%KARAF_HOME%\instances\instance.properties" ' ) do @set name=%%i
+ )
+ set ROOT_INSTANCE_PID=%pid:~13%
+
+ set ROOT_INSTANCE_NAME=%name:~14%
+ SET CHECK_RUNNING_CONDITION=true
+ if "%ROOT_INSTANCE_PID%" == "~13" SET CHECK_RUNNING_CONDITION=false
+ if "%ROOT_INSTANCE_PID%" == "0" SET CHECK_RUNNING_CONDITION=false
+ if "%CHECK_RUNNING_CONDITION%" == "true" (
+ tasklist /FI "PID eq %ROOT_INSTANCE_PID%" 2>NUL | find /I /N "java.exe" > NUL
+ if not errorlevel 1 set ROOT_INSTANCE_RUNNING=true
+ )
+
+
+if not exist "%JAVA_HOME%\bin\server\jvm.dll" (
+ if not exist "%JAVA_HOME%\jre\bin\server\jvm.dll" (
+ echo WARNING: Running Karaf on a Java HotSpot Client VM because server-mode is not available.
+ echo Install Java Developer Kit to fix this.
+ echo For more details see http://java.sun.com/products/hotspot/whitepaper.html#client
+ )
+)
+set DEFAULT_JAVA_OPTS=-Xms%JAVA_MIN_MEM% -Xmx%JAVA_MAX_MEM% -Dcom.sun.management.jmxremote -XX:+UnlockDiagnosticVMOptions
+
+rem Check some easily accessible MIN/MAX params for JVM mem usage
+if not "%JAVA_PERM_MEM%" == "" (
+ set DEFAULT_JAVA_OPTS=%DEFAULT_JAVA_OPTS% -XX:PermSize=%JAVA_PERM_MEM%
+)
+if not "%JAVA_MAX_PERM_MEM%" == "" (
+ set DEFAULT_JAVA_OPTS=%DEFAULT_JAVA_OPTS% -XX:MaxPermSize=%JAVA_MAX_PERM_MEM%
+)
+
+if "%JAVA_OPTS%" == "" set JAVA_OPTS=%DEFAULT_JAVA_OPTS%
+
+if "%EXTRA_JAVA_OPTS%" == "" goto :KARAF_EXTRA_JAVA_OPTS_END
+ set JAVA_OPTS=%JAVA_OPTS% %EXTRA_JAVA_OPTS%
+:KARAF_EXTRA_JAVA_OPTS_END
+
+if "%KARAF_DEBUG%" == "" goto :KARAF_DEBUG_END
+ if "%1" == "stop" goto :KARAF_DEBUG_END
+ if "%1" == "client" goto :KARAF_DEBUG_END
+ if "%1" == "status" goto :KARAF_DEBUG_END
+ rem Use the defaults if JAVA_DEBUG_OPTS was not set
+ if "%JAVA_DEBUG_OPTS%" == "" set JAVA_DEBUG_OPTS=%DEFAULT_JAVA_DEBUG_OPTS%
+
+ set JAVA_OPTS=%JAVA_DEBUG_OPTS% %JAVA_OPTS%
+ call :warn Enabling Java debug options: %JAVA_DEBUG_OPTS%
+:KARAF_DEBUG_END
+
+if "%KARAF_PROFILER%" == "" goto :KARAF_PROFILER_END
+ set KARAF_PROFILER_SCRIPT=%KARAF_HOME%\conf\profiler\%KARAF_PROFILER%.cmd
+
+ if exist "%KARAF_PROFILER_SCRIPT%" goto :KARAF_PROFILER_END
+ call :warn Missing configuration for profiler '%KARAF_PROFILER%': %KARAF_PROFILER_SCRIPT%
+ goto END
+:KARAF_PROFILER_END
+
+rem Setup the classpath
+pushd "%KARAF_HOME%\lib\boot"
+for %%G in (*.jar) do call:APPEND_TO_CLASSPATH %%G
+popd
+goto CLASSPATH_END
+
+: APPEND_TO_CLASSPATH
+set filename=%~1
+set suffix=%filename:~-4%
+if %suffix% equ .jar set CLASSPATH=%CLASSPATH%;%KARAF_HOME%\lib\boot\%filename%
+goto :EOF
+
+:CLASSPATH_END
+
+if "%CHECK_ROOT_INSTANCE_RUNNING%" == "" (
+ SET CHECK_ROOT_INSTANCE_RUNNING=true
+)
+
+rem Execute the JVM or the load the profiler
+if "%KARAF_PROFILER%" == "" goto :RUN
+ rem Execute the profiler if it has been configured
+ call :warn Loading profiler script: %KARAF_PROFILER_SCRIPT%
+ call %KARAF_PROFILER_SCRIPT%
+
+:RUN
+ SET OPTS=-Dkaraf.startLocalConsole=true -Dkaraf.startRemoteShell=true
+ SET MAIN=org.apache.karaf.main.Main
+ SET SHIFT=false
+
+:RUN_LOOP
+ if "%1" == "stop" goto :EXECUTE_STOP
+ if "%1" == "status" goto :EXECUTE_STATUS
+ if "%1" == "console" goto :EXECUTE_CONSOLE
+ if "%1" == "server" goto :EXECUTE_SERVER
+ if "%1" == "run" goto :EXECUTE_RUN
+ if "%1" == "daemon" goto :EXECUTE_DAEMON
+ if "%1" == "client" goto :EXECUTE_CLIENT
+ if "%1" == "clean" goto :EXECUTE_CLEAN
+ if "%1" == "debug" goto :EXECUTE_DEBUG
+ if "%1" == "debugs" goto :EXECUTE_DEBUGS
+ goto :EXECUTE
+
+:EXECUTE_STOP
+ SET MAIN=org.apache.karaf.main.Stop
+ SET CHECK_ROOT_INSTANCE_RUNNING=false
+ shift
+ goto :RUN_LOOP
+
+:EXECUTE_STATUS
+ SET MAIN=org.apache.karaf.main.Status
+ SET CHECK_ROOT_INSTANCE_RUNNING=false
+ shift
+ goto :RUN_LOOP
+
+:EXECUTE_CONSOLE
+ SET CHECK_ROOT_INSTANCE_RUNNING=false
+ shift
+ goto :RUN_LOOP
+
+:EXECUTE_SERVER
+ SET OPTS=-Dkaraf.startLocalConsole=false -Dkaraf.startRemoteShell=true
+ shift
+ goto :RUN_LOOP
+
+:EXECUTE_RUN
+ SET OPTS=-Dkaraf.startLocalConsole=false -Dkaraf.startRemoteShell=true -Dkaraf.log.console=ALL
+ shift
+ goto :RUN_LOOP
+
+:EXECUTE_DAEMON
+ SET OPTS=-Dkaraf.startLocalConsole=false -Dkaraf.startRemoteShell=true
+ SET KARAF_DAEMON=true
+ shift
+ goto :RUN_LOOP
+
+:EXECUTE_CLIENT
+ SET OPTS=-Dkaraf.startLocalConsole=true -Dkaraf.startRemoteShell=false
+ SET CHECK_ROOT_INSTANCE_RUNNING=false
+ shift
+ goto :RUN_LOOP
+
+:EXECUTE_CLEAN
+ pushd "%KARAF_DATA%" && (rmdir /S /Q "%KARAF_DATA%" 2>nul & popd)
+ shift
+ goto :RUN_LOOP
+
+:EXECUTE_DEBUG
+ if "%JAVA_DEBUG_OPTS%" == "" set JAVA_DEBUG_OPTS=%DEFAULT_JAVA_DEBUG_OPTS%
+ set JAVA_OPTS=%JAVA_DEBUG_OPTS% %JAVA_OPTS%
+ shift
+ goto :RUN_LOOP
+
+:EXECUTE_DEBUGS
+ if "%JAVA_DEBUG_OPTS%" == "" set JAVA_DEBUG_OPTS=%DEFAULT_JAVA_DEBUGS_OPTS%
+ set JAVA_OPTS=%JAVA_DEBUG_OPTS% %JAVA_OPTS%
+ shift
+ goto :RUN_LOOP
+
+:EXECUTE
+ SET ARGS=%1 %2 %3 %4 %5 %6 %7 %8
+ rem Execute the Java Virtual Machine
+ cd "%KARAF_BASE%"
+
+ rem When users want to update the lib version of, they just need to create
+ rem a lib.next directory and on the new restart, it will replace the current lib directory.
+ if exist "%KARAF_HOME%\lib.next" (
+ echo Updating libs...
+ RD /S /Q "%KARAF_HOME%\lib"
+ MOVE /Y "%KARAF_HOME%\lib.next" "%KARAF_HOME%\lib"
+
+ echo "Updating classpath..."
+ set CLASSPATH=%CLASSPATH_INITIAL%
+ pushd "%KARAF_HOME%\lib\boot"
+ for %%G in (*.jar) do call:APPEND_TO_CLASSPATH %%G
+ popd
+ )
+
+ SET IS_RUNNABLE=false
+ if "%ROOT_INSTANCE_RUNNING%" == "false" SET IS_RUNNABLE=true
+ if "%CHECK_ROOT_INSTANCE_RUNNING%" == "false" SET IS_RUNNABLE=true
+ if "%IS_RUNNABLE%" == "true" (
+ rem If major version is greater than 1 (meaning Java 9 or 10), we don't use endorsed lib but module
+ rem If major version is 1 (meaning Java 1.6, 1.7, 1.8), we use endorsed lib
+ if %JAVA_VERSION% GTR 8 (
+ "%JAVA%" %JAVA_OPTS% %OPTS% ^
+ --add-reads=java.xml=java.logging ^
+ --patch-module java.base=lib/endorsed/org.apache.karaf.specs.locator-4.2.1.jar ^
+ --patch-module java.xml=lib/endorsed/org.apache.karaf.specs.java.xml-4.2.1.jar ^
+ --add-opens java.base/java.security=ALL-UNNAMED ^
+ --add-opens java.base/java.net=ALL-UNNAMED ^
+ --add-opens java.base/java.lang=ALL-UNNAMED ^
+ --add-opens java.base/java.util=ALL-UNNAMED ^
+ --add-opens java.naming/javax.naming.spi=ALL-UNNAMED ^
+ --add-opens java.rmi/sun.rmi.transport.tcp=ALL-UNNAMED ^
+ --add-exports=java.base/sun.net.www.protocol.http=ALL-UNNAMED ^
+ --add-exports=java.base/sun.net.www.protocol.https=ALL-UNNAMED ^
+ --add-exports=java.base/sun.net.www.protocol.jar=ALL-UNNAMED ^
+ --add-exports=jdk.xml.dom/org.w3c.dom.html=ALL-UNNAMED ^
+ --add-exports=jdk.naming.rmi/com.sun.jndi.url.rmi=ALL-UNNAMED ^
+ -classpath "%CLASSPATH%" ^
+ -Dkaraf.instances="%KARAF_HOME%\instances" ^
+ -Dkaraf.home="%KARAF_HOME%" ^
+ -Dkaraf.base="%KARAF_BASE%" ^
+ -Dkaraf.etc="%KARAF_ETC%" ^
+ -Dkaraf.restart.jvm.supported=true ^
+ -Djava.io.tmpdir="%KARAF_DATA%\tmp" ^
+ -Dkaraf.data="%KARAF_DATA%" ^
+ -Djava.util.logging.config.file="%KARAF_BASE%\etc\java.util.logging.properties" ^
+ %KARAF_SYSTEM_OPTS% %KARAF_OPTS% %MAIN% %ARGS%
+ ) else (
+ "%JAVA%" %JAVA_OPTS% %OPTS% ^
+ -classpath "%CLASSPATH%" ^
+ -Djava.endorsed.dirs="%JAVA_HOME%\jre\lib\endorsed;%JAVA_HOME%\lib\endorsed;%KARAF_HOME%\lib\endorsed" ^
+ -Djava.ext.dirs="%JAVA_HOME%\jre\lib\ext;%JAVA_HOME%\lib\ext;%KARAF_HOME%\lib\ext" ^
+ -Dkaraf.instances="%KARAF_HOME%\instances" ^
+ -Dkaraf.home="%KARAF_HOME%" ^
+ -Dkaraf.base="%KARAF_BASE%" ^
+ -Dkaraf.etc="%KARAF_ETC%" ^
+ -Dkaraf.restart.jvm.supported=true ^
+ -Djava.io.tmpdir="%KARAF_DATA%\tmp" ^
+ -Dkaraf.data="%KARAF_DATA%" ^
+ -Djava.util.logging.config.file="%KARAF_BASE%\etc\java.util.logging.properties" ^
+ %KARAF_SYSTEM_OPTS% %KARAF_OPTS% %MAIN% %ARGS%
+ )
+ ) else (
+ echo There is a Root instance already running with name %ROOT_INSTANCE_NAME% and pid %ROOT_INSTANCE_PID%. If you know what you are doing and want to force the run anyway, SET CHECK_ROOT_INSTANCE_RUNNING=false and re run the command.
+ goto :END
+ )
+
+ rem If KARAF_DAEMON is defined, auto-restart is bypassed and control given
+ rem back to the operating system
+ if defined "%KARAF_DAEMON%" (
+ rem If Karaf has been started by winsw, the process can be restarted
+ rem by executing KARAF_DAEMON% restart!
+ rem https://github.com/kohsuke/winsw#restarting-service-from-itself
+ if defined "%WINSW_EXECUTABLE%" (
+ if ERRORLEVEL 10 (
+ echo Restarting ...
+ %KARAF_DAEMON% restart!
+ )
+ )
+ ) else (
+ if ERRORLEVEL 10 (
+ echo Restarting JVM...
+ goto EXECUTE
+ )
+ )
+
+
+rem # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
+
+:END
+
+endlocal
+
+if not "%PAUSE%" == "" pause
+
+:END_NO_PAUSE
+ EXIT /B %ERRORLEVEL%
diff --git a/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/bin/setenv b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/bin/setenv
new file mode 100755
index 0000000000..f285fc0187
--- /dev/null
+++ b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/bin/setenv
@@ -0,0 +1,52 @@
+#!/bin/sh
+#
+# 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.
+#
+
+#
+# handle specific scripts; the SCRIPT_NAME is exactly the name of the Karaf
+# script: client, instance, shell, start, status, stop, karaf
+#
+# if [ "${KARAF_SCRIPT}" == "SCRIPT_NAME" ]; then
+# Actions go here...
+# fi
+
+#
+# general settings which should be applied for all scripts go here; please keep
+# in mind that it is possible that scripts might be executed more than once, e.g.
+# in example of the start script where the start script is executed first and the
+# karaf script afterwards.
+#
+
+#
+# The following section shows the possible configuration options for the default
+# karaf scripts
+#
+# export JAVA_HOME # Location of Java installation
+# export JAVA_MIN_MEM # Minimum memory for the JVM
+# export JAVA_MAX_MEM # Maximum memory for the JVM
+# export JAVA_PERM_MEM # Minimum perm memory for the JVM
+# export JAVA_MAX_PERM_MEM # Maximum perm memory for the JVM
+# export EXTRA_JAVA_OPTS # Additional JVM options
+# export KARAF_HOME # Karaf home folder
+# export KARAF_DATA # Karaf data folder
+# export KARAF_BASE # Karaf base folder
+# export KARAF_ETC # Karaf etc folder
+# export KARAF_SYSTEM_OPTS # First citizen Karaf options
+# export KARAF_OPTS # Additional available Karaf options
+# export KARAF_DEBUG # Enable debug mode
+# export KARAF_REDIRECT # Enable/set the std/err redirection when using bin/start
+# export KARAF_NOROOT # Prevent execution as root if set to true
diff --git a/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/bin/setenv.bat b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/bin/setenv.bat
new file mode 100755
index 0000000000..b5ed41773e
--- /dev/null
+++ b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/bin/setenv.bat
@@ -0,0 +1,67 @@
+@echo off
+rem
+rem
+rem Licensed to the Apache Software Foundation (ASF) under one or more
+rem contributor license agreements. See the NOTICE file distributed with
+rem this work for additional information regarding copyright ownership.
+rem The ASF licenses this file to You under the Apache License, Version 2.0
+rem (the "License"); you may not use this file except in compliance with
+rem the License. You may obtain a copy of the License at
+rem
+rem http://www.apache.org/licenses/LICENSE-2.0
+rem
+rem Unless required by applicable law or agreed to in writing, software
+rem distributed under the License is distributed on an "AS IS" BASIS,
+rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+rem See the License for the specific language governing permissions and
+rem limitations under the License.
+rem
+
+rem
+rem handle specific scripts; the SCRIPT_NAME is exactly the name of the Karaf
+rem script; for example karaf.bat, start.bat, stop.bat, admin.bat, client.bat, ...
+rem
+rem if "%KARAF_SCRIPT%" == "SCRIPT_NAME" (
+rem Actions go here...
+rem )
+
+rem
+rem general settings which should be applied for all scripts go here; please keep
+rem in mind that it is possible that scripts might be executed more than once, e.g.
+rem in example of the start script where the start script is executed first and the
+rem karaf script afterwards.
+rem
+
+rem
+rem The following section shows the possible configuration options for the default
+rem karaf scripts
+rem
+rem Window name of the windows console
+rem SET KARAF_TITLE
+rem Location of Java installation
+rem SET JAVA_HOME
+rem Minimum memory for the JVM
+rem SET JAVA_MIN_MEM
+rem Maximum memory for the JVM
+rem SET JAVA_MAX_MEM
+rem Minimum perm memory for the JVM
+rem SET JAVA_PERM_MEM
+rem Maximum perm memory for the JVM
+rem SET JAVA_MAX_PERM_MEM
+rem Additional JVM options
+rem SET EXTRA_JAVA_OPTS
+rem Karaf home folder
+rem SET KARAF_HOME
+rem Karaf data folder
+rem SET KARAF_DATA
+rem Karaf base folder
+rem SET KARAF_BASE
+rem Karaf etc folder
+rem SET KARAF_ETC
+rem First citizen Karaf options
+rem SET KARAF_SYSTEM_OPTS
+rem Additional available Karaf options
+rem SET KARAF_OPTS
+rem Enable debug mode
+rem SET KARAF_DEBUG
+
diff --git a/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/bin/shell b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/bin/shell
new file mode 100755
index 0000000000..a89bedc6ae
--- /dev/null
+++ b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/bin/shell
@@ -0,0 +1,143 @@
+#!/bin/sh
+#
+# 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.
+#
+
+realpath() {
+ # Use in priority xpg4 awk or nawk on SunOS as standard awk is outdated
+ AWK=awk
+ if ${solaris}; then
+ if [ -x /usr/xpg4/bin/awk ]; then
+ AWK=/usr/xpg4/bin/awk
+ elif [ -x /usr/bin/nawk ]; then
+ AWK=/usr/bin/nawk
+ fi
+ fi
+
+ READLINK_EXISTS=$(command -v readlink &> /dev/null)
+ if [ -z "$READLINK_EXISTS" ]; then
+ OURPWD=${PWD}
+ cd "$(dirname "${1}")" || exit 2
+ LINK=$(ls -l "$(basename "${1}")" | ${AWK} -F"-> " '{print $2}')
+ while [ "${LINK}" ]; do
+ echo "link: ${LINK}" >&2
+ cd "$(dirname "${LINK}")" || exit 2
+ LINK=$(ls -l "$(basename "${1}")" | ${AWK} -F"-> " '{print $2}')
+ done
+ REALPATH="${PWD}/$(basename "${1}")"
+ cd "${OURPWD}" || exit 2
+ echo "${REALPATH}"
+ else
+ OURPWD=${PWD}
+ cd "$(dirname "${1}")" || exit 2
+ LINK=$(readlink "$(basename "${1}")")
+ while [ "${LINK}" ]; do
+ echo "link: ${LINK}" >&2
+ cd "$(dirname "${LINK}")" || exit 2
+ LINK=$(readlink "$(basename "${1}")")
+ done
+ REALPATH="${PWD}/$(basename "${1}")"
+ cd "${OURPWD}" || exit 2
+ echo "${REALPATH}"
+ fi
+}
+
+REALNAME=$(realpath "$0")
+DIRNAME=$(dirname "${REALNAME}")
+PROGNAME=$(basename "${REALNAME}")
+
+#
+# Load common functions
+#
+. "${DIRNAME}/inc"
+
+#
+# Sourcing environment settings for karaf similar to tomcats setenv
+#
+KARAF_SCRIPT="${PROGNAME}"
+export KARAF_SCRIPT
+if [ -f "${DIRNAME}/setenv" ]; then
+ . "${DIRNAME}/setenv"
+fi
+
+setupClassPath() {
+ # Setup classpath
+ CLASSPATH="${KARAF_HOME}/system/org/apache/karaf/shell/org.apache.karaf.shell.core/4.2.1/org.apache.karaf.shell.core-4.2.1.jar"
+ CLASSPATH="${CLASSPATH}:${KARAF_HOME}/system/org/ops4j/pax/logging/pax-logging-api/1.10.1/pax-logging-api-1.10.1.jar"
+ CLASSPATH="${CLASSPATH}:${KARAF_HOME}/system/org/jline/jline/3.9.0/jline-3.9.0.jar"
+}
+
+init() {
+ # Determine if there is special OS handling we must perform
+ detectOS
+
+ # Unlimit the number of file descriptors if possible
+ unlimitFD
+
+ # Locate the Karaf home directory
+ locateHome
+
+ # Locate the Karaf base directory
+ locateBase
+
+ # Locate the Karaf data directory
+ locateData
+
+ # Locate the Karaf etc directory
+ locateEtc
+
+ # Setup the native library path
+ setupNativePath
+
+ # Locate the Java VM to execute
+ locateJava
+
+ # Determine the JVM vendor
+ detectJVM
+
+ # Setup default options
+ setupDefaults
+
+ # Setup classpath
+ setupClassPath
+
+ # Install debug options
+ setupDebugOptions
+}
+
+run() {
+ convertPaths
+ exec "${JAVA}" ${JAVA_OPTS} \
+ -Dkaraf.instances="${KARAF_HOME}/instances" \
+ -Dkaraf.home="${KARAF_HOME}" \
+ -Dkaraf.base="${KARAF_BASE}" \
+ -Dkaraf.etc="${KARAF_ETC}" \
+ -Dkaraf.data="${KARAF_DATA}" \
+ -Djava.io.tmpdir="${KARAF_DATA}/tmp" \
+ -Djava.util.logging.config.file="${KARAF_BASE}/etc/java.util.logging.properties" \
+ ${KARAF_OPTS} \
+ ${OPTS} \
+ -classpath "${CLASSPATH}" \
+ org.apache.karaf.shell.impl.console.standalone.Main --classpath="$KARAF_HOME/system" "$@"
+}
+
+main() {
+ init
+ run "$@"
+}
+
+main "$@"
+
diff --git a/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/bin/shell.bat b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/bin/shell.bat
new file mode 100755
index 0000000000..8b6a07c3cc
--- /dev/null
+++ b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/bin/shell.bat
@@ -0,0 +1,143 @@
+@echo off
+rem
+rem
+rem Licensed to the Apache Software Foundation (ASF) under one or more
+rem contributor license agreements. See the NOTICE file distributed with
+rem this work for additional information regarding copyright ownership.
+rem The ASF licenses this file to You under the Apache License, Version 2.0
+rem (the "License"); you may not use this file except in compliance with
+rem the License. You may obtain a copy of the License at
+rem
+rem http://www.apache.org/licenses/LICENSE-2.0
+rem
+rem Unless required by applicable law or agreed to in writing, software
+rem distributed under the License is distributed on an "AS IS" BASIS,
+rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+rem See the License for the specific language governing permissions and
+rem limitations under the License.
+rem
+
+if not "%ECHO%" == "" echo %ECHO%
+
+setlocal
+set DIRNAME=%~dp0%
+set PROGNAME=%~nx0%
+set ARGS=%*
+
+rem Sourcing environment settings for karaf similar to tomcats setenv
+SET KARAF_SCRIPT="shell.bat"
+if exist "%DIRNAME%setenv.bat" (
+ call "%DIRNAME%setenv.bat"
+)
+
+rem Check console window title. Set to Karaf by default
+if not "%KARAF_TITLE%" == "" (
+ title %KARAF_TITLE%
+) else (
+ title Karaf
+)
+
+rem Check/Set up some easily accessible MIN/MAX params for JVM mem usage
+if "%JAVA_MIN_MEM%" == "" (
+ set JAVA_MIN_MEM=128M
+)
+if "%JAVA_MAX_MEM%" == "" (
+ set JAVA_MAX_MEM=512M
+)
+
+goto BEGIN
+
+:warn
+ echo %PROGNAME%: %*
+goto :EOF
+
+:BEGIN
+
+rem # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
+
+if not "%KARAF_HOME%" == "" (
+ call :warn Ignoring predefined value for KARAF_HOME
+)
+set KARAF_HOME=%DIRNAME%..
+if not exist "%KARAF_HOME%" (
+ call :warn KARAF_HOME is not valid: "%KARAF_HOME%"
+ goto END
+)
+
+if not "%KARAF_BASE%" == "" (
+ if not exist "%KARAF_BASE%" (
+ call :warn KARAF_BASE is not valid: "%KARAF_BASE%"
+ goto END
+ )
+)
+if "%KARAF_BASE%" == "" (
+ set "KARAF_BASE=%KARAF_HOME%"
+)
+
+if not "%KARAF_DATA%" == "" (
+ if not exist "%KARAF_DATA%" (
+ call :warn KARAF_DATA is not valid: "%KARAF_DATA%"
+ goto END
+ )
+)
+if "%KARAF_DATA%" == "" (
+ set "KARAF_DATA=%KARAF_BASE%\data"
+)
+
+if not "%KARAF_ETC%" == "" (
+ if not exist "%KARAF_ETC%" (
+ call :warn KARAF_ETC is not valid: "%KARAF_ETC%"
+ goto END
+ )
+)
+if "%KARAF_ETC%" == "" (
+ set "KARAF_ETC=%KARAF_BASE%\etc"
+)
+
+set DEFAULT_JAVA_OPTS=
+set DEFAULT_JAVA_DEBUG_OPTS=-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005
+
+rem Support for loading native libraries
+set PATH=%PATH%;%KARAF_BASE%\lib;%KARAF_HOME%\lib
+
+rem Setup the Java Virtual Machine
+if not "%JAVA%" == "" goto :Check_JAVA_END
+ set JAVA=java
+ if "%JAVA_HOME%" == "" call :warn JAVA_HOME not set; results may vary
+ if not "%JAVA_HOME%" == "" set JAVA=%JAVA_HOME%\bin\java
+ if not exist "%JAVA_HOME%" (
+ call :warn JAVA_HOME is not valid: "%JAVA_HOME%"
+ goto END
+ )
+:Check_JAVA_END
+
+if "%JAVA_OPTS%" == "" set JAVA_OPTS=%DEFAULT_JAVA_OPTS%
+
+if "%EXTRA_JAVA_OPTS%" == "" goto :KARAF_EXTRA_JAVA_OPTS_END
+ set JAVA_OPTS=%JAVA_OPTS% %EXTRA_JAVA_OPTS%
+:KARAF_EXTRA_JAVA_OPTS_END
+
+if "%KARAF_DEBUG%" == "" goto :KARAF_DEBUG_END
+ rem Use the defaults if JAVA_DEBUG_OPTS was not set
+ if "%JAVA_DEBUG_OPTS%" == "" set JAVA_DEBUG_OPTS=%DEFAULT_JAVA_DEBUG_OPTS%
+
+ set JAVA_OPTS="%JAVA_DEBUG_OPTS% %JAVA_OPTS%"
+ call :warn Enabling Java debug options: %JAVA_DEBUG_OPTS%
+:KARAF_DEBUG_END
+
+set CLASSPATH=%KARAF_HOME%\system\org\apache\karaf\shell\org.apache.karaf.shell.core\4.2.1\org.apache.karaf.shell.core-4.2.1.jar
+set CLASSPATH=%CLASSPATH%;%KARAF_HOME%\system\org\ops4j\pax\logging\pax-logging-api\1.10.1\pax-logging-api-1.10.1.jar
+set CLASSPATH=%CLASSPATH%;%KARAF_HOME%\system\org\jline\jline\3.9.0\jline-3.9.0.jar
+
+:EXECUTE
+ if "%SHIFT%" == "true" SET ARGS=%2 %3 %4 %5 %6 %7 %8
+ if not "%SHIFT%" == "true" SET ARGS=%1 %2 %3 %4 %5 %6 %7 %8
+ rem Execute the Java Virtual Machine
+ "%JAVA%" %JAVA_OPTS% %OPTS% -classpath "%CLASSPATH%" -Dkaraf.instances="%KARAF_HOME%\instances" -Dkaraf.home="%KARAF_HOME%" -Dkaraf.base="%KARAF_BASE%" -Dkaraf.etc="%KARAF_ETC%" -Dkaraf.data="%KARAF_DATA%" -Djava.io.tmpdir="%KARAF_DATA%\tmp" -Djava.util.logging.config.file="%KARAF_BASE%\etc\java.util.logging.properties" %KARAF_OPTS% org.apache.karaf.shell.impl.console.standalone.Main --classpath="%KARAF_HOME%\system" %ARGS%
+
+rem # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
+
+:END
+
+endlocal
+
diff --git a/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/bin/start b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/bin/start
new file mode 100755
index 0000000000..047ed1bec1
--- /dev/null
+++ b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/bin/start
@@ -0,0 +1,103 @@
+#!/bin/sh
+#
+# 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.
+#
+
+realpath() {
+ # Use in priority xpg4 awk or nawk on SunOS as standard awk is outdated
+ AWK=awk
+ if ${solaris}; then
+ if [ -x /usr/xpg4/bin/awk ]; then
+ AWK=/usr/xpg4/bin/awk
+ elif [ -x /usr/bin/nawk ]; then
+ AWK=/usr/bin/nawk
+ fi
+ fi
+
+ READLINK_EXISTS=$(command -v readlink &> /dev/null)
+ if [ -z "$READLINK_EXISTS" ]; then
+ OURPWD=${PWD}
+ cd "$(dirname "${1}")" || exit 2
+ LINK=$(ls -l "$(basename "${1}")" | ${AWK} -F"-> " '{print $2}')
+ while [ "${LINK}" ]; do
+ echo "link: ${LINK}" >&2
+ cd "$(dirname "${LINK}")" || exit 2
+ LINK=$(ls -l "$(basename "${1}")" | ${AWK} -F"-> " '{print $2}')
+ done
+ REALPATH="${PWD}/$(basename "${1}")"
+ cd "${OURPWD}" || exit 2
+ echo "${REALPATH}"
+ else
+ OURPWD=${PWD}
+ cd "$(dirname "${1}")" || exit 2
+ LINK=$(readlink "$(basename "${1}")")
+ while [ "${LINK}" ]; do
+ echo "link: ${LINK}" >&2
+ cd "$(dirname "${LINK}")" || exit 2
+ LINK=$(readlink "$(basename "${1}")")
+ done
+ REALPATH="${PWD}/$(basename "${1}")"
+ cd "${OURPWD}" || exit 2
+ echo "${REALPATH}"
+ fi
+}
+
+REALNAME=$(realpath "$0")
+DIRNAME=$(dirname "${REALNAME}")
+PROGNAME=$(basename "${REALNAME}")
+
+#
+# Load common functions
+#
+. "${DIRNAME}/inc"
+
+#
+# Sourcing environment settings for karaf similar to tomcats setenv
+#
+KARAF_SCRIPT="${PROGNAME}"
+export KARAF_SCRIPT
+if [ -f "${DIRNAME}/setenv" ]; then
+ . "${DIRNAME}/setenv"
+fi
+
+init() {
+ # Determine if there is special OS handling we must perform
+ detectOS
+
+ # Locate the Karaf home directory
+ locateHome
+}
+
+run() {
+ convertPaths
+
+ # Enable redirect
+ if [ "x${KARAF_REDIRECT}" != "x" ]; then
+ warn "Redirecting Karaf output to ${KARAF_REDIRECT}"
+ else
+ KARAF_REDIRECT="/dev/null"
+ fi
+
+ exec "${KARAF_HOME}/bin/karaf" server "$@" >> "${KARAF_REDIRECT}" 2>&1 &
+}
+
+main() {
+ init
+ run "$@"
+}
+
+main "$@"
+
diff --git a/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/bin/start.bat b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/bin/start.bat
new file mode 100755
index 0000000000..23d123dc66
--- /dev/null
+++ b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/bin/start.bat
@@ -0,0 +1,98 @@
+@echo off
+rem
+rem
+rem Licensed to the Apache Software Foundation (ASF) under one or more
+rem contributor license agreements. See the NOTICE file distributed with
+rem this work for additional information regarding copyright ownership.
+rem The ASF licenses this file to You under the Apache License, Version 2.0
+rem (the "License"); you may not use this file except in compliance with
+rem the License. You may obtain a copy of the License at
+rem
+rem http://www.apache.org/licenses/LICENSE-2.0
+rem
+rem Unless required by applicable law or agreed to in writing, software
+rem distributed under the License is distributed on an "AS IS" BASIS,
+rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+rem See the License for the specific language governing permissions and
+rem limitations under the License.
+rem
+
+if not "%ECHO%" == "" echo %ECHO%
+
+setlocal
+set DIRNAME=%~dp0%
+set PROGNAME=%~nx0%
+set ARGS=%*
+
+rem Sourcing environment settings for karaf similar to tomcats setenv
+SET KARAF_SCRIPT="start.bat"
+if exist "%DIRNAME%setenv.bat" (
+ call "%DIRNAME%setenv.bat"
+)
+
+goto BEGIN
+
+:warn
+ echo %PROGNAME%: %*
+goto :EOF
+
+:BEGIN
+
+rem # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
+
+if not "%KARAF_HOME%" == "" (
+ call :warn Ignoring predefined value for KARAF_HOME
+)
+set KARAF_HOME=%DIRNAME%..
+if not exist "%KARAF_HOME%" (
+ call :warn KARAF_HOME is not valid: "%KARAF_HOME%"
+ goto END
+)
+
+if not "%KARAF_BASE%" == "" (
+ if not exist "%KARAF_BASE%" (
+ call :warn KARAF_BASE is not valid: "%KARAF_BASE%"
+ goto END
+ )
+)
+if "%KARAF_BASE%" == "" (
+ set "KARAF_BASE=%KARAF_HOME%"
+)
+
+if not "%KARAF_DATA%" == "" (
+ if not exist "%KARAF_DATA%" (
+ call :warn KARAF_DATA is not valid: "%KARAF_DATA%"
+ goto END
+ )
+)
+if "%KARAF_DATA%" == "" (
+ set "KARAF_DATA=%KARAF_BASE%\data"
+)
+
+if not "%KARAF_ETC%" == "" (
+ if not exist "%KARAF_ETC%" (
+ call :warn KARAF_ETC is not valid: "%KARAF_ETC%"
+ goto END
+ )
+)
+if "%KARAF_ETC%" == "" (
+ set "KARAF_ETC=%KARAF_BASE%\etc"
+)
+
+if "%KARAF_TITLE%" == "" (
+ set "KARAF_TITLE=Karaf"
+)
+
+:EXECUTE
+ start "%KARAF_TITLE%" /MIN "%KARAF_HOME%\bin\karaf.bat" server %*
+
+rem # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
+
+:END
+
+endlocal
+
+if not "%PAUSE%" == "" pause
+
+:END_NO_PAUSE
+
diff --git a/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/bin/status b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/bin/status
new file mode 100755
index 0000000000..ab05b60519
--- /dev/null
+++ b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/bin/status
@@ -0,0 +1,98 @@
+#!/bin/sh
+#
+# 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.
+#
+
+realpath() {
+ # Use in priority xpg4 awk or nawk on SunOS as standard awk is outdated
+ AWK=awk
+ if ${solaris}; then
+ if [ -x /usr/xpg4/bin/awk ]; then
+ AWK=/usr/xpg4/bin/awk
+ elif [ -x /usr/bin/nawk ]; then
+ AWK=/usr/bin/nawk
+ fi
+ fi
+
+ READLINK_EXISTS=$(command -v readlink &> /dev/null)
+ if [ -z "$READLINK_EXISTS" ]; then
+ OURPWD=${PWD}
+ cd "$(dirname "${1}")" || exit 2
+ LINK=$(ls -l "$(basename "${1}")" | ${AWK} -F"-> " '{print $2}')
+ while [ "${LINK}" ]; do
+ echo "link: ${LINK}" >&2
+ cd "$(dirname "${LINK}")" || exit 2
+ LINK=$(ls -l "$(basename "${1}")" | ${AWK} -F"-> " '{print $2}')
+ done
+ REALPATH="${PWD}/$(basename "${1}")"
+ cd "${OURPWD}" || exit 2
+ echo "${REALPATH}"
+ else
+ OURPWD=${PWD}
+ cd "$(dirname "${1}")" || exit 2
+ LINK=$(readlink "$(basename "${1}")")
+ while [ "${LINK}" ]; do
+ echo "link: ${LINK}" >&2
+ cd "$(dirname "${LINK}")" || exit 2
+ LINK=$(readlink "$(basename "${1}")")
+ done
+ REALPATH="${PWD}/$(basename "${1}")"
+ cd "${OURPWD}" || exit 2
+ echo "${REALPATH}"
+ fi
+}
+
+REALNAME=$(realpath "$0")
+DIRNAME=$(dirname "${REALNAME}")
+PROGNAME=$(basename "${REALNAME}")
+
+#
+# Load common functions
+#
+. "${DIRNAME}/inc"
+
+#
+# Sourcing environment settings for karaf similar to tomcats setenv
+#
+KARAF_SCRIPT="${PROGNAME}"
+export KARAF_SCRIPT
+if [ -f "${DIRNAME}/setenv" ]; then
+ . "${DIRNAME}/setenv"
+fi
+
+init() {
+ # KARAF-5332: Unset KARAF_DEBUG
+ unset KARAF_DEBUG
+
+ # Determine if there is special OS handling we must perform
+ detectOS
+
+ # Locate the Karaf home directory
+ locateHome
+}
+
+run() {
+ convertPaths
+ exec "${KARAF_HOME}/bin/karaf" status "$@"
+}
+
+main() {
+ init
+ run "$@"
+}
+
+main "$@"
+
diff --git a/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/bin/status.bat b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/bin/status.bat
new file mode 100755
index 0000000000..ec39991c7c
--- /dev/null
+++ b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/bin/status.bat
@@ -0,0 +1,100 @@
+@echo off
+rem
+rem
+rem Licensed to the Apache Software Foundation (ASF) under one or more
+rem contributor license agreements. See the NOTICE file distributed with
+rem this work for additional information regarding copyright ownership.
+rem The ASF licenses this file to You under the Apache License, Version 2.0
+rem (the "License"); you may not use this file except in compliance with
+rem the License. You may obtain a copy of the License at
+rem
+rem http://www.apache.org/licenses/LICENSE-2.0
+rem
+rem Unless required by applicable law or agreed to in writing, software
+rem distributed under the License is distributed on an "AS IS" BASIS,
+rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+rem See the License for the specific language governing permissions and
+rem limitations under the License.
+rem
+
+if not "%ECHO%" == "" echo %ECHO%
+
+setlocal
+set DIRNAME=%~dp0%
+set PROGNAME=%~nx0%
+set ARGS=%*
+
+rem Sourcing environment settings for karaf similar to tomcats setenv
+SET KARAF_SCRIPT="status.bat"
+if exist "%DIRNAME%setenv.bat" (
+ call "%DIRNAME%setenv.bat"
+)
+
+rem Check console window title. Set to Karaf by default
+if not "%KARAF_TITLE%" == "" (
+ title %KARAF_TITLE%
+) else (
+ title Karaf
+)
+
+goto BEGIN
+
+:warn
+ echo %PROGNAME%: %*
+goto :EOF
+
+:BEGIN
+
+rem # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
+
+if not "%KARAF_HOME%" == "" (
+ call :warn Ignoring predefined value for KARAF_HOME
+)
+set KARAF_HOME=%DIRNAME%..
+if not exist "%KARAF_HOME%" (
+ call :warn KARAF_HOME is not valid: "%KARAF_HOME%"
+ goto END
+)
+
+if not "%KARAF_BASE%" == "" (
+ if not exist "%KARAF_BASE%" (
+ call :warn KARAF_BASE is not valid: "%KARAF_BASE%"
+ goto END
+ )
+)
+if "%KARAF_BASE%" == "" (
+ set "KARAF_BASE=%KARAF_HOME%"
+)
+
+if not "%KARAF_DATA%" == "" (
+ if not exist "%KARAF_DATA%" (
+ call :warn KARAF_DATA is not valid: "%KARAF_DATA%"
+ goto END
+ )
+)
+if "%KARAF_DATA%" == "" (
+ set "KARAF_DATA=%KARAF_BASE%\data"
+)
+
+if not "%KARAF_ETC%" == "" (
+ if not exist "%KARAF_ETC%" (
+ call :warn KARAF_ETC is not valid: "%KARAF_ETC%"
+ goto END
+ )
+)
+if "%KARAF_ETC%" == "" (
+ set "KARAF_ETC=%KARAF_BASE%\etc"
+)
+
+:EXECUTE
+ "%KARAF_HOME%\bin\karaf.bat" status
+
+rem # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
+
+:END
+
+endlocal
+
+if not "%PAUSE%" == "" pause
+
+:END_NO_PAUSE
diff --git a/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/bin/stop b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/bin/stop
new file mode 100755
index 0000000000..014e71aadc
--- /dev/null
+++ b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/bin/stop
@@ -0,0 +1,98 @@
+#!/bin/sh
+#
+# 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.
+#
+
+realpath() {
+ # Use in priority xpg4 awk or nawk on SunOS as standard awk is outdated
+ AWK=awk
+ if ${solaris}; then
+ if [ -x /usr/xpg4/bin/awk ]; then
+ AWK=/usr/xpg4/bin/awk
+ elif [ -x /usr/bin/nawk ]; then
+ AWK=/usr/bin/nawk
+ fi
+ fi
+
+ READLINK_EXISTS=$(command -v readlink &> /dev/null)
+ if [ -z "$READLINK_EXISTS" ]; then
+ OURPWD=${PWD}
+ cd "$(dirname "${1}")" || exit 2
+ LINK=$(ls -l "$(basename "${1}")" | ${AWK} -F"-> " '{print $2}')
+ while [ "${LINK}" ]; do
+ echo "link: ${LINK}" >&2
+ cd "$(dirname "${LINK}")" || exit 2
+ LINK=$(ls -l "$(basename "${1}")" | ${AWK} -F"-> " '{print $2}')
+ done
+ REALPATH="${PWD}/$(basename "${1}")"
+ cd "${OURPWD}" || exit 2
+ echo "${REALPATH}"
+ else
+ OURPWD=${PWD}
+ cd "$(dirname "${1}")" || exit 2
+ LINK=$(readlink "$(basename "${1}")")
+ while [ "${LINK}" ]; do
+ echo "link: ${LINK}" >&2
+ cd "$(dirname "${LINK}")" || exit 2
+ LINK=$(readlink "$(basename "${1}")")
+ done
+ REALPATH="${PWD}/$(basename "${1}")"
+ cd "${OURPWD}" || exit 2
+ echo "${REALPATH}"
+ fi
+}
+
+REALNAME=$(realpath "$0")
+DIRNAME=$(dirname "${REALNAME}")
+PROGNAME=$(basename "${REALNAME}")
+
+#
+# Load common functions
+#
+. "${DIRNAME}/inc"
+
+#
+# Sourcing environment settings for karaf similar to tomcats setenv
+#
+KARAF_SCRIPT="${PROGNAME}"
+export KARAF_SCRIPT
+if [ -f "${DIRNAME}/setenv" ]; then
+ . "${DIRNAME}/setenv"
+fi
+
+init() {
+ # KARAF-5332: Unset KARAF_DEBUG
+ unset KARAF_DEBUG
+
+ # Determine if there is special OS handling we must perform
+ detectOS
+
+ # Locate the Karaf home directory
+ locateHome
+}
+
+run() {
+ convertPaths
+ exec "${KARAF_HOME}/bin/karaf" stop "$@"
+}
+
+main() {
+ init
+ run "$@"
+}
+
+main "$@"
+
diff --git a/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/bin/stop.bat b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/bin/stop.bat
new file mode 100755
index 0000000000..df377ba126
--- /dev/null
+++ b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/bin/stop.bat
@@ -0,0 +1,100 @@
+@echo off
+rem
+rem
+rem Licensed to the Apache Software Foundation (ASF) under one or more
+rem contributor license agreements. See the NOTICE file distributed with
+rem this work for additional information regarding copyright ownership.
+rem The ASF licenses this file to You under the Apache License, Version 2.0
+rem (the "License"); you may not use this file except in compliance with
+rem the License. You may obtain a copy of the License at
+rem
+rem http://www.apache.org/licenses/LICENSE-2.0
+rem
+rem Unless required by applicable law or agreed to in writing, software
+rem distributed under the License is distributed on an "AS IS" BASIS,
+rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+rem See the License for the specific language governing permissions and
+rem limitations under the License.
+rem
+
+if not "%ECHO%" == "" echo %ECHO%
+
+setlocal
+set DIRNAME=%~dp0%
+set PROGNAME=%~nx0%
+set ARGS=%*
+
+rem Sourcing environment settings for karaf similar to tomcats setenv
+SET KARAF_SCRIPT="stop.bat"
+if exist "%DIRNAME%setenv.bat" (
+ call "%DIRNAME%setenv.bat"
+)
+
+rem Check console window title. Set to Karaf by default
+if not "%KARAF_TITLE%" == "" (
+ title %KARAF_TITLE%
+) else (
+ title Karaf
+)
+
+goto BEGIN
+
+:warn
+ echo %PROGNAME%: %*
+goto :EOF
+
+:BEGIN
+
+rem # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
+
+if not "%KARAF_HOME%" == "" (
+ call :warn Ignoring predefined value for KARAF_HOME
+)
+set KARAF_HOME=%DIRNAME%..
+if not exist "%KARAF_HOME%" (
+ call :warn KARAF_HOME is not valid: "%KARAF_HOME%"
+ goto END
+)
+
+if not "%KARAF_BASE%" == "" (
+ if not exist "%KARAF_BASE%" (
+ call :warn KARAF_BASE is not valid: "%KARAF_BASE%"
+ goto END
+ )
+)
+if "%KARAF_BASE%" == "" (
+ set "KARAF_BASE=%KARAF_HOME%"
+)
+
+if not "%KARAF_DATA%" == "" (
+ if not exist "%KARAF_DATA%" (
+ call :warn KARAF_DATA is not valid: "%KARAF_DATA%"
+ goto END
+ )
+)
+if "%KARAF_DATA%" == "" (
+ set "KARAF_DATA=%KARAF_BASE%\data"
+)
+
+if not "%KARAF_ETC%" == "" (
+ if not exist "%KARAF_ETC%" (
+ call :warn KARAF_ETC is not valid: "%KARAF_ETC%"
+ goto END
+ )
+)
+if "%KARAF_ETC%" == "" (
+ set "KARAF_ETC=%KARAF_BASE%\etc"
+)
+
+:EXECUTE
+ "%KARAF_HOME%\bin\karaf.bat" stop
+
+rem # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
+
+:END
+
+endlocal
+
+if not "%PAUSE%" == "" pause
+
+:END_NO_PAUSE
diff --git a/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/deploy/README b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/deploy/README
new file mode 100644
index 0000000000..afb7808055
--- /dev/null
+++ b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/deploy/README
@@ -0,0 +1,18 @@
+/*
+ * 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.
+ */
+
+This folder can be used to deploy artifacts into the Karaf container.
diff --git a/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/etc/all.policy b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/etc/all.policy
new file mode 100644
index 0000000000..7585f22b66
--- /dev/null
+++ b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/etc/all.policy
@@ -0,0 +1,22 @@
+//===========================================================================
+//
+// 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.
+//
+//===========================================================================
+
+grant {
+ permission java.security.AllPermission;
+};
diff --git a/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/etc/config.properties b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/etc/config.properties
new file mode 100644
index 0000000000..7856b13083
--- /dev/null
+++ b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/etc/config.properties
@@ -0,0 +1,269 @@
+################################################################################
+#
+# 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.
+#
+################################################################################
+
+#
+# This file lists Karaf default settings for this particular version of Karaf.
+# For easier maintenance when upgrading Karaf and to better document which
+# default values have changed, it is recommended to place any changes to
+# these values in a custom.properties file in the same folder as this file.
+# Each value specified in custom.properties will override the default value
+# here.
+#
+
+#
+# Properties file inclusions (as a space separated list of relative paths)
+# Included files will override the values specified in this file
+# NB: ${includes} properties files are mandatory, it means that Karaf will not start
+# if the include file is not found
+#
+${includes} = jre.properties custom.properties
+
+#
+# Properties file inclusions (as a space separated list of relative paths)
+# Included files will override the values specified in this file
+# NB: ${optionals} properties files are optionals, it means that Karaf will just
+# display a warning message but the bootstrap will be performed
+#
+# ${optionals} = my.properties
+
+#
+# Framework selection properties
+#
+karaf.framework=felix
+
+#
+# Location of the OSGi frameworks
+#
+karaf.framework.equinox=mvn\:org.eclipse.platform/org.eclipse.osgi/3.12.100
+karaf.framework.felix=mvn\:org.apache.felix/org.apache.felix.framework/5.6.10
+
+#
+# Framework config properties.
+#
+org.osgi.framework.system.packages= \
+ org.osgi.dto;version="1.0",\
+ org.osgi.resource;version="1.0",\
+ org.osgi.resource.dto;version="1.0";uses:="org.osgi.dto",\
+ org.osgi.framework;version="1.8",\
+ org.osgi.framework.dto;version="1.8";uses:="org.osgi.dto",\
+ org.osgi.framework.hooks.bundle;version="1.1";uses:="org.osgi.framework",\
+ org.osgi.framework.hooks.resolver;version="1.0";uses:="org.osgi.framework.wiring",\
+ org.osgi.framework.hooks.service;version="1.1";uses:="org.osgi.framework",\
+ org.osgi.framework.hooks.weaving;version="1.1";uses:="org.osgi.framework.wiring",\
+ org.osgi.framework.launch;version="1.2";uses:="org.osgi.framework",\
+ org.osgi.framework.namespace;version="1.1";uses:="org.osgi.resource",\
+ org.osgi.framework.startlevel;version="1.0";uses:="org.osgi.framework",\
+ org.osgi.framework.startlevel.dto;version="1.0";uses:="org.osgi.dto",\
+ org.osgi.framework.wiring;version="1.2";uses:="org.osgi.framework,org.osgi.resource",\
+ org.osgi.framework.wiring.dto;version="1.2";uses:="org.osgi.dto,org.osgi.resource.dto",\
+ org.osgi.service.condpermadmin;version="1.1.1";uses:="org.osgi.framework,org.osgi.service.permissionadmin",\
+ org.osgi.service.packageadmin;version="1.2";uses:="org.osgi.framework",org.osgi.service.permissionadmin;version="1.2",\
+ org.osgi.service.resolver;version="1.0";uses:="org.osgi.resource",\
+ org.osgi.service.startlevel;version="1.1";uses:="org.osgi.framework",\
+ org.osgi.service.url;version="1.0",\
+ org.osgi.util.tracker;version="1.5.1";uses:="org.osgi.framework",\
+ org.apache.karaf.version;version="4.2.1",\
+ org.apache.karaf.jaas.boot.principal;uses:=javax.security.auth;version="4.2.1",\
+ org.apache.karaf.jaas.boot;uses:="javax.security.auth,javax.security.auth.callback,javax.security.auth.login,javax.security.auth.spi,org.osgi.framework";version="4.2.1",\
+ ${jre-${java.specification.version}}
+
+#
+# Extra packages appended after standard packages
+#
+org.osgi.framework.system.packages.extra = \
+ org.apache.karaf.branding, \
+ sun.misc, \
+ org.apache.karaf.diagnostic.core;uses:=org.osgi.framework;version=4.2.1, \
+ org.apache.karaf.diagnostic.core.common;uses:=org.apache.karaf.diagnostic.core;version=4.2.1, \
+ org.apache.karaf.jaas.boot;uses:=\"javax.security.auth,javax.security.auth.callback,javax.security.auth.login,javax.security.auth.spi,org.osgi.framework\";version=4.2.1, \
+ org.apache.karaf.jaas.boot.principal;uses:=javax.security.auth;version=4.2.1
+
+org.osgi.framework.system.capabilities= \
+ ${eecap-${java.specification.version}}, \
+ ${${karaf.framework}-capabilities}, \
+ ${karaf-capabilities}
+
+karaf-capabilities= \
+ osgi.service;objectClass:List<String>=org.apache.karaf.info.ServerInfo
+
+felix-capabilities= \
+ osgi.service;objectClass:List<String>=org.osgi.service.packageadmin.PackageAdmin, \
+ osgi.service;objectClass:List<String>=org.osgi.service.resolver.Resolver, \
+ osgi.service;objectClass:List<String>=org.osgi.service.startlevel.StartLevel
+
+equinox-capabilities= \
+ osgi.service;objectClass:List<String>=java.lang.ClassLoader;equinox.classloader.type=contextClassLoader, \
+ osgi.service;objectClass:List<String>=javax.xml.parsers.DocumentBuilderFactory, \
+ osgi.service;objectClass:List<String>=javax.xml.parsers.SAXParserFactory, \
+ osgi.service;objectClass:List<String>=org.eclipse.osgi.framework.log.FrameworkLog, \
+ osgi.service;objectClass:List<String>=org.eclipse.osgi.framework.log.FrameworkLog;performance=true, \
+ osgi.service;objectClass:List<String>=org.eclipse.osgi.service.datalocation.Location;type=eclipse.home.location, \
+ osgi.service;objectClass:List<String>=org.eclipse.osgi.service.datalocation.Location;type=osgi.configuration.area, \
+ osgi.service;objectClass:List<String>=org.eclipse.osgi.service.datalocation.Location;type=osgi.install.area, \
+ osgi.service;objectClass:List<String>=org.eclipse.osgi.service.datalocation.Location;type=osgi.instance.area, \
+ osgi.service;objectClass:List<String>=org.eclipse.osgi.service.datalocation.Location;type=osgi.user.area, \
+ osgi.service;objectClass:List<String>=org.eclipse.osgi.service.debug.DebugOptions, \
+ osgi.service;objectClass:List<String>=org.eclipse.osgi.service.environment.EnvironmentInfo, \
+ osgi.service;objectClass:List<String>=org.eclipse.osgi.service.localization.BundleLocalization, \
+ osgi.service;objectClass:List<String>="org.osgi.service.log.LogReaderService,org.eclipse.equinox.log.ExtendedLogReaderService", \
+ osgi.service;objectClass:List<String>="org.osgi.service.log.LogService,org.eclipse.equinox.log.ExtendedLogService", \
+ osgi.service;objectClass:List<String>=org.eclipse.osgi.service.security.TrustEngine;osgi.signedcontent.trust.engine=org.eclipse.osgi, \
+ osgi.service;objectClass:List<String>=org.eclipse.osgi.service.urlconversion.URLConverter;protocol:List<String>="bundleentry,bundleresource"
+
+eecap-11= osgi.ee; osgi.ee="OSGi/Minimum"; version:List<Version>="1.0,1.1,1.2", \
+ osgi.ee; osgi.ee="JavaSE"; version:List<Version>="1.0,1.1,1.2,1.3,1.4,1.5,1.6,1.7,1.8,9.0,10.0,11.0", \
+ osgi.ee; osgi.ee="JRE"; version:List<Version>="1.0,1.1", \
+ osgi.ee; osgi.ee="JavaSE/compact1"; version:List<Version>="1.8,9.0,10.0,11.0", \
+ osgi.ee; osgi.ee="JavaSE/compact2"; version:List<Version>="1.8,9.0,10.0,11.0", \
+ osgi.ee; osgi.ee="JavaSE/compact3"; version:List<Version>="1.8,9.0,10.0,11.0"
+eecap-10= osgi.ee; osgi.ee="OSGi/Minimum"; version:List<Version>="1.0,1.1,1.2", \
+ osgi.ee; osgi.ee="JavaSE"; version:List<Version>="1.0,1.1,1.2,1.3,1.4,1.5,1.6,1.7,1.8,9.0,10.0", \
+ osgi.ee; osgi.ee="JRE"; version:List<Version>="1.0,1.1", \
+ osgi.ee; osgi.ee="JavaSE/compact1"; version:List<Version>="1.8,9.0,10.0", \
+ osgi.ee; osgi.ee="JavaSE/compact2"; version:List<Version>="1.8,9.0,10.0", \
+ osgi.ee; osgi.ee="JavaSE/compact3"; version:List<Version>="1.8,9.0,10.0"
+eecap-9= osgi.ee; osgi.ee="OSGi/Minimum"; version:List<Version>="1.0,1.1,1.2", \
+ osgi.ee; osgi.ee="JavaSE"; version:List<Version>="1.0,1.1,1.2,1.3,1.4,1.5,1.6,1.7,1.8,9.0", \
+ osgi.ee; osgi.ee="JRE"; version:List<Version>="1.0,1.1", \
+ osgi.ee; osgi.ee="JavaSE/compact1"; version:List<Version>="1.8,9.0", \
+ osgi.ee; osgi.ee="JavaSE/compact2"; version:List<Version>="1.8,9.0", \
+ osgi.ee; osgi.ee="JavaSE/compact3"; version:List<Version>="1.8,9.0"
+eecap-1.8= osgi.ee; osgi.ee="OSGi/Minimum"; version:List<Version>="1.0,1.1,1.2", \
+ osgi.ee; osgi.ee="JavaSE"; version:List<Version>="1.0,1.1,1.2,1.3,1.4,1.5,1.6,1.7,1.8", \
+ osgi.ee; osgi.ee="JRE"; version:List<Version>="1.0,1.1", \
+ osgi.ee; osgi.ee="JavaSE/compact1"; version:List<Version>="1.8", \
+ osgi.ee; osgi.ee="JavaSE/compact2"; version:List<Version>="1.8", \
+ osgi.ee; osgi.ee="JavaSE/compact3"; version:List<Version>="1.8"
+
+#
+# javax.transaction is needed to avoid class loader constraint violation when using javax.sql
+#
+org.osgi.framework.bootdelegation = \
+ com.sun.*, \
+ javax.transaction, \
+ javax.transaction.*, \
+ javax.xml.crypto, \
+ javax.xml.crypto.*, \
+ jdk.nashorn.*, \
+ sun.*, \
+ jdk.internal.reflect, \
+ jdk.internal.reflect.*, \
+ org.apache.karaf.jaas.boot, \
+ org.apache.karaf.jaas.boot.principal
+
+# jVisualVM support
+# in order to use Karaf with jvisualvm, the org.osgi.framework.bootdelegation property has to contain the org.netbeans.lib.profiler.server package
+# and, so, it should look like:
+#
+# org.osgi.framework.bootdelegation=org.apache.karaf.jaas.boot,org.apache.karaf.jaas.boot.principal,sun.*,com.sun.*,javax.transaction,javax.transaction.*,javax.xml.crypto,javax.xml.crypto.*,org.apache.xerces.jaxp.datatype,org.apache.xerces.stax,org.apache.xerces.parsers,org.apache.xerces.jaxp,org.apache.xerces.jaxp.validation,org.apache.xerces.dom,org.netbeans.lib.profiler.server
+#
+# YourKit support
+# in order to use Karaf with YourKit, the org.osgi.framework.bootdelegation property has to contain the com.yourkit.* packages
+# and, so, it should look like:
+#
+# org.osgi.framework.bootdelegation=org.apache.karaf.jaas.boot,org.apache.karaf.jaas.boot.principal,sun.*,com.sun.*,javax.transaction,javax.transaction.*,javax.xml.crypto,javax.xml.crypto.*,org.apache.xerces.jaxp.datatype,org.apache.xerces.stax,org.apache.xerces.parsers,org.apache.xerces.jaxp,org.apache.xerces.jaxp.validation,org.apache.xerces.dom,com.yourkit.*
+#
+
+#
+# Set the parent classloader for the bundle to the classloader that loads the Framework (i.e. everything in lib/*.jar)
+#
+org.osgi.framework.bundle.parent=framework
+
+#
+# Definition of the default bundle start level
+#
+org.osgi.framework.startlevel.beginning=100
+karaf.startlevel.bundle=80
+
+#
+# The location of the Karaf shutdown port file used to stop instance
+#
+karaf.shutdown.port.file=${karaf.data}/port
+
+#
+# The location of the Karaf pid file
+#
+karaf.pid.file=${karaf.base}/karaf.pid
+
+#
+# Configuration FileMonitor properties
+#
+felix.fileinstall.enableConfigSave = true
+felix.fileinstall.dir = ${karaf.etc}
+felix.fileinstall.filter = .*\\.(cfg|config)
+felix.fileinstall.poll = 1000
+felix.fileinstall.noInitialDelay = true
+felix.fileinstall.log.level = 3
+felix.fileinstall.log.default = jul
+
+# Use cached urls for bundle CodeSource to avoid
+# problems with JCE cached informations, see KARAF-3974
+felix.bundlecodesource.usecachedurls = true
+
+#
+# Delay for writing the framework state to disk in equinox
+# must be >= 1000 and <= 1800000
+#
+eclipse.stateSaveDelayInterval = 1000
+
+#
+# OBR Repository list
+# This property will be modified by the obr:addUrl and obr:removeUrl commands.
+#
+obr.repository.url =
+
+#
+# Start blueprint bundles synchronously when possible
+#
+org.apache.aries.blueprint.synchronous=true
+
+#
+# Do not weave all any classes by default
+#
+org.apache.aries.proxy.weaving.enabled=
+
+#
+# mvn url handler requires config instance configuration
+#
+org.ops4j.pax.url.mvn.requireConfigAdminConfig=true
+
+#
+# Don't delay the console startup. Set to true if you want the console to start after all other bundles
+#
+karaf.delay.console=false
+
+#
+# Generated command shutdown
+#
+karaf.shutdown.command = 54dc7c4e-a508-4cc3-be8b-4bda39d0c3ff
+
+#
+# Enable native Karaf support for systemd's watchdog.
+#
+# In addition to setting the flag to true, the JNA library needs to be made
+# available to the main classloader by adding the two following libraries
+# to the lib/boot directory
+# mvn:net.java.dev.jna/jna/${jna.version}
+# mvn:net.java.dev.jna/jna-platform/${jna.version}
+# or by building a custom distribution and adding the following lines for the
+# karaf maven plugin configuration:
+# <library>mvn:net.java.dev.jna/jna/${jna.version};type:=boot;export:=false</library>
+# <library>mvn:net.java.dev.jna/jna-platform/${jna.version};type:=boot;export:=false</library>
+#
+#karaf.systemd.enabled=true
diff --git a/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/etc/custom.properties b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/etc/custom.properties
new file mode 100644
index 0000000000..fbdb62ad31
--- /dev/null
+++ b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/etc/custom.properties
@@ -0,0 +1,30 @@
+################################################################################
+#
+# 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.
+#
+################################################################################
+
+#
+# All the values specified here will override the default values given
+# in config.properties.
+#
+
+karaf.systemBundlesStartLevel=50
+
+#
+# You can place any customized configuration here.
+#
+
diff --git a/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/etc/distribution.info b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/etc/distribution.info
new file mode 100644
index 0000000000..c987a93b19
--- /dev/null
+++ b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/etc/distribution.info
@@ -0,0 +1,26 @@
+################################################################################
+#
+# 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.
+#
+################################################################################
+
+#
+# This file contains the general platform information required by the itests to find out
+# about the current versions.
+#
+karafVersion=4.2.1
+name=Apache Karaf
+
diff --git a/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/etc/equinox-debug.properties b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/etc/equinox-debug.properties
new file mode 100644
index 0000000000..01be178056
--- /dev/null
+++ b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/etc/equinox-debug.properties
@@ -0,0 +1,111 @@
+# 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.
+
+
+#### Debugging options for org.eclipse.bundles
+
+# Turn on general debugging for org.eclipse.bundles
+org.eclipse.osgi/debug = false
+# Prints out class loading debug information
+org.eclipse.osgi/debug/loader = false
+# Prints out event (FrameworkEvent/BundleEvent/ServiceEvent) and listener debug information
+org.eclipse.osgi/debug/events = false
+# Prints out OSGi service debug information (registration/getting/ungetting etc.)
+org.eclipse.osgi/debug/services = false
+# Prints out bundle manifest parsing debug information
+org.eclipse.osgi/debug/manifest = false
+# Prints out LDAP filter debug information
+org.eclipse.osgi/debug/filter = false
+# Prints out security (PermissionAdmin service) debug information
+org.eclipse.osgi/debug/security = false
+# Prints out start level service debug information
+org.eclipse.osgi/debug/startlevel = false
+# Prints out package instance service debug information
+org.eclipse.osgi/debug/packageadmin = false
+# Prints out timing information for bundle activation
+org.eclipse.osgi/debug/bundleTime = false
+# Debug the loading of message bundles
+org.eclipse.osgi/debug/messageBundles = false
+
+# Eclipse adaptor options
+org.eclipse.osgi/eclipseadaptor/debug = false
+org.eclipse.osgi/eclipseadaptor/debug/location = false
+org.eclipse.osgi/eclipseadaptor/debug/platformadmin = false
+org.eclipse.osgi/eclipseadaptor/debug/platformadmin/resolver = false
+org.eclipse.osgi/eclipseadaptor/converter/debug = false
+
+### OSGi resolver options
+# Turns on debugging for the resolver
+org.eclipse.osgi/resolver/debug = false
+# Prints out wiring information after the resolver has completed the resolve process
+org.eclipse.osgi/resolver/wiring = false
+# Prints out Import-Package information
+org.eclipse.osgi/resolver/imports = false
+# Prints out Require-Bundle information
+org.eclipse.osgi/resolver/requires = false
+# Prints out package grouping information form the "uses" clause
+org.eclipse.osgi/resolver/grouping = false
+# Prints out cycle information
+org.eclipse.osgi/resolver/cycles = false
+# Prints out Eclipse-GenericRequire information
+org.eclipse.osgi/resolver/generics = false
+
+#### Profile settings
+org.eclipse.osgi/profile/startup = false
+org.eclipse.osgi/profile/benchmark = false
+org.eclipse.osgi/profile/debug = false
+
+# Override the default implemenation
+org.eclipse.osgi/profile/impl = org.eclipse.osgi.internal.profile.DefaultProfileLogger
+
+# Append all profile messages to the filename specified
+org.eclipse.osgi/defaultprofile/logfilename =
+
+# Output all profile log messages synchronously to the jvm console.
+# By default, all log messages are cached until the log buffer is
+# requested.
+org.eclipse.osgi/defaultprofile/logsynchronously = false
+
+# Specify the size of the default profile implementation log buffer.
+org.eclipse.osgi/defaultprofile/buffersize = 256
+
+#### Monitoring settings
+# monitor class loading
+org.eclipse.osgi/monitor/classes = false
+
+# monitor bundle activation
+org.eclipse.osgi/monitor/activation = false
+
+# monitor resource bundle (*.properties) loading
+org.eclipse.osgi/monitor/resources = false
+
+
+#### Trace settings
+# trace class loading - snapshot the execution stack when a class is loaded
+org.eclipse.osgi/trace/classLoading = false
+
+# trace location - file in which execution traces are written
+org.eclipse.osgi/trace/filename = runtime.traces
+
+# trace filters - Java properties file defining which classes should
+# be traced (if trace/classLoading is true)
+# File format:
+# plugins=<comma separated list of plugins whose classes to trace>
+# packages=<comma separated list of package prefixes of classes to trace>
+# Note that there may be many 'plugins' and 'packages' lines in one file.
+org.eclipse.osgi/trace/filters = trace.properties
+
+# trace bundle activation - snapshot the execution stack when a bundle is activated
+org.eclipse.osgi/trace/activation = false
diff --git a/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/etc/host.key b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/etc/host.key
new file mode 100644
index 0000000000..f4200122e5
--- /dev/null
+++ b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/etc/host.key
@@ -0,0 +1,28 @@
+-----BEGIN PRIVATE KEY-----
+MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCFLCWyB+bqffiF
+3bWfcKUopOfgHbSJCw+oYKUsP8Dlu8NrurRR8brBJLpIjyT75vLL2x6Vep2ljkPr
+RwiivppGI8N+C5D+rTRPLvhZ+koGu3tS8LSeR5gDwH4yB+83doaJIwj296uxbBAe
+cJJ+vefLOkX2TY42z37UOZLdVvpK+dnZETF6U96vJUnhhYbttPTgmeEE9sfqTnzA
+0zVGejWrochtQLduFUxoczgI5aYefnoA3SZuBcTu0pdCaWZ/gyLISWdIJ755lDOV
+N99CFUWU40SzccvVKfdvARFMscbf2ED6OeRSTx7JwoRqF0CDHMGIctazvUyexbA7
+FXAVIKQ5AgMBAAECggEAenre9H1GCLbxApWlvE1K6TW5uSs45q3QqcixQSAllmT5
+V7RwsckEPS09UwysNC31cj5GQ65xHVnZ56L+M0ff9dBgtSWIJmNAb+9AJOkIemam
+BuMxCz3HdvPsXLFldvpAxBH/5bxmIZjEvmpEoeKhNA2VWPF9cbWm7SNCiuW674bC
+IK7FMwH97wTgWSL3mDXYaNq1lWyT1f3BzHcrEqXWtl96ya5Z1tJdsxV7+CMmMRWS
+SCLOvFmT4ruh5IV8qU9eq7AD0p8q/ssFPN6amClAsItNXnPU16s5VGzJZvOnk2Dc
+UkgSH8Bcmbv39AEbqa0eVf0UwMVClRl/54TCawRD8QKBgQDW7MAYSSzHWEyX9K9G
+sinoBDiAGzhgLL0Lu40yE8cv8h4uDKxxoaDbEBc3hVvCCUrt6S5Hh5nN1L65toGO
+mnnvtzs2EnfnQlCr5noAuaVMyR5CMwZmbMEsjjFEGCj1vIfWHyzg00kQPqQI1lvI
+3uC/wIdMrgESgtrSw6xMvv7h/QKBgQCen6R78/4BBj+G1CjKycrzc32zh27iQLkx
+Ih3KCj2obxtHQ1uc37+/ZfZe2q+6VPPtRzel6RVZ4K/uLYorqb6w4H+f0Rz7jQPD
+LYaI5uMk0a6EWAYG5aNEmI7PyMy6OWKN4bi1kb5F/GklRRQAbG1Xpn9A7cBS9CIx
+gGDCMggx7QKBgFYeP0p756loxCgPLzxQn2IMbudGAOzogEd3OzhZnHKlvVoOUfqm
+HOIqLGNe2EmDl7aEvLqEpyhGmrWnX3pYg4t+DAe6lrjfZZu7mh84Q/fkjm9QKrxX
+z3+e6jayx5bPmE4/56eegaQ0tV2lJtnyFHRBHPWos11LeYsCRMPrtA2xAoGBAIAF
+3N1l+ZWeE1uglCPHZhPDHKrvHeFh15X+MQjF5ymwMtX7WU9tjvbNNmEsIzRCKHVT
+S2iOjHrzy0pyWtgOsidTqe20+q1UDLtUXQbVQnKPAUkzOfoLERDmCC1PpVyPwCk/
+CrMQo/8cT0iTTidhW4aojIA840KQY6CMOovBkbepAoGAX4H6EAzVRWBRvt6NRZn4
+aAp42JnSsiigou9ZaFj4fijm6HEfrGVIYbmbZxbtxiW0vf+7wghA9Lgj2c3cI5ab
+COzJUIS8UoGuwggp42z+/8TGg19ioogYVCF6jkYYp15+O/WrFwGGJ7ip0/jdq8vq
+3xsnWl2tRfGsMopioCFaB9A=
+-----END PRIVATE KEY-----
diff --git a/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/etc/java.util.logging.properties b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/etc/java.util.logging.properties
new file mode 100644
index 0000000000..b7b50c5cfe
--- /dev/null
+++ b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/etc/java.util.logging.properties
@@ -0,0 +1,23 @@
+################################################################################
+#
+# 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.
+#
+################################################################################
+
+# Empty java.util.logging.properties to prevent the log to stderr, so that
+# all logs will be delegated to pax logging JUL handler only
+
+
diff --git a/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/etc/jetty.xml b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/etc/jetty.xml
new file mode 100644
index 0000000000..405a59e10e
--- /dev/null
+++ b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/etc/jetty.xml
@@ -0,0 +1,119 @@
+<?xml version="1.0"?>
+<!--
+ 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.
+-->
+<!DOCTYPE Configure PUBLIC "-//Jetty//Configure//EN" "http://www.eclipse.org/jetty/configure_9_0.dtd">
+
+<Configure id="Server" class="org.eclipse.jetty.server.Server">
+
+ <!-- =========================================================== -->
+ <!-- Set connectors -->
+ <!-- =========================================================== -->
+ <!-- One of each type! -->
+ <!-- =========================================================== -->
+
+ <!-- Use this connector for many frequently idle connections and for
+ threadless continuations. -->
+ <New id="httpConfig" class="org.eclipse.jetty.server.HttpConfiguration">
+ <Set name="secureScheme">https</Set>
+ <Set name="securePort">
+ <Property name="jetty.secure.port" default="8443" />
+ </Set>
+ <Set name="outputBufferSize">32768</Set>
+ <Set name="requestHeaderSize">8192</Set>
+ <Set name="responseHeaderSize">8192</Set>
+ <Set name="sendServerVersion">true</Set>
+ <Set name="sendDateHeader">false</Set>
+ <Set name="headerCacheSize">512</Set>
+ </New>
+
+ <!-- =========================================================== -->
+ <!-- Special server connectors -->
+ <!-- =========================================================== -->
+ <!-- This is a sample for alternative connectors, enable if needed -->
+ <!-- =========================================================== -->
+ <!--
+ <Call name="addConnector">
+ <Arg>
+ <New class="org.eclipse.jetty.server.ServerConnector">
+ <Arg name="server">
+ <Ref refid="Server" />
+ </Arg>
+ <Arg name="factories">
+ <Array type="org.eclipse.jetty.server.ConnectionFactory">
+ <Item>
+ <New class="org.eclipse.jetty.server.HttpConnectionFactory">
+ <Arg name="config">
+ <Ref refid="httpConfig" />
+ </Arg>
+ </New>
+ </Item>
+ </Array>
+ </Arg>
+ <Set name="host">
+ <Property name="jetty.host" default="localhost" />
+ </Set>
+ <Set name="port">
+ <Property name="jetty.port" default="8282" />
+ </Set>
+ <Set name="idleTimeout">
+ <Property name="http.timeout" default="30000" />
+ </Set>
+ <Set name="name">jettyConn1</Set>
+ </New>
+ </Arg>
+ </Call>
+ -->
+
+ <!-- =========================================================== -->
+ <!-- Configure Authentication Realms -->
+ <!-- Realms may be configured for the entire server here, or -->
+ <!-- they can be configured for a specific web app in a context -->
+ <!-- configuration (see $(jetty.home)/contexts/test.xml for an -->
+ <!-- example). -->
+ <!-- =========================================================== -->
+ <Call name="addBean">
+ <Arg>
+ <New class="org.eclipse.jetty.jaas.JAASLoginService">
+ <Set name="name">karaf</Set>
+ <Set name="loginModuleName">karaf</Set>
+ <Set name="roleClassNames">
+ <Array type="java.lang.String">
+ <Item>org.apache.karaf.jaas.boot.principal.RolePrincipal
+ </Item>
+ </Array>
+ </Set>
+ </New>
+ </Arg>
+ </Call>
+ <Call name="addBean">
+ <Arg>
+ <New class="org.eclipse.jetty.jaas.JAASLoginService">
+ <Set name="name">default</Set>
+ <Set name="loginModuleName">karaf</Set>
+ <Set name="roleClassNames">
+ <Array type="java.lang.String">
+ <Item>org.apache.karaf.jaas.boot.principal.RolePrincipal
+ </Item>
+ </Array>
+ </Set>
+ </New>
+ </Arg>
+ </Call>
+
+</Configure>
diff --git a/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/etc/jmx.acl.cfg b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/etc/jmx.acl.cfg
new file mode 100644
index 0000000000..e6b5dbca37
--- /dev/null
+++ b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/etc/jmx.acl.cfg
@@ -0,0 +1,75 @@
+
+################################################################################
+#
+# 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.
+#
+################################################################################
+
+#
+# Generic JMX ACL
+#
+# This file defines the roles required for MBean operations for MBeans that
+# do not have this defined explicitly.
+#
+# The definition of ACLs for JMX operations works as follows:
+#
+# The required roles for JMX operations are defined in configuration files
+# read via OSGi ConfigAdmin.
+#
+# JMX RBAC-related configuration is prefixed with jmx.acl and based on the
+# JMX ObjectName that it applies to. For example specific configuration for
+# an MBean with the following objectName: foo.bar:type=Test can be placed in
+# a configuration file called jmx.acl.foo.bar.Test.cfg. More generic
+# configuration can be placed in the domain (e.g. jmx.acl.foo.bar.cfg) or
+# at the top level (jmx.acl.cfg). A simple configuration file looks like
+# this:
+# test : admin
+# getVal : manager, viewer
+#
+# The system looks for required roles using the following process:
+# The most specific configuration file/pid is tried first. E.g. in the
+# above example the jmx.acl.foo.bar.Test.cfg is looked at first. In this
+# configuration, the system looks for a:
+# 1. Specific match for the current invocation, e.g. test(int)["17"] : role1
+# 2. Reg exp match for the current invocation, e.g. test(int)[/[0-9]/] : role2
+# In both cases the passed argument is converted to a String for the
+# comparison.
+# If any of the above match all the roles with matching definitions
+# are collected and allowed. If no matches are found the following is tried:
+# 3. Signature match for the invocation, e.g. test(int) : role3. If
+# matched the associated roles are used.
+# 4. Method name match for the invocation, e.g. test : role4. If matched
+# the associated roles are used.
+# 5. A method name wildcard match, e.g. te* : role5. For all the
+# wildcard matches found in the current configuration file, the roles
+# associated with the longest match are used. So if you have te* and * and
+# the method invoked is 'test', then the roles defined with te* are used,
+# not the ones defined with *.
+# If no matching definition is found in the current configuration file, a
+# more general configuration file is looked for. So jmx.acl.foo.bar.cfg is
+# tried next, this matches the domain of the MBean. If there is no match
+# found in the domain the most generic configuration file is consulted
+# (jmx.acl.cfg).
+# If a matching definition is found, this is used and the process will not
+# look for any other matching definitions. So the most specific definition
+# always takes precedence.
+#
+list* = viewer
+get* = viewer
+is* = viewer
+set* = admin
+* = admin
+
diff --git a/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/etc/jmx.acl.java.lang.Memory.cfg b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/etc/jmx.acl.java.lang.Memory.cfg
new file mode 100644
index 0000000000..4db8f5e620
--- /dev/null
+++ b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/etc/jmx.acl.java.lang.Memory.cfg
@@ -0,0 +1,27 @@
+
+################################################################################
+#
+# 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.
+#
+################################################################################
+
+#
+# JMX ACL specific to the java.lang.Memory MBean
+#
+# For a description of the format of this file, see jmx.acl.cfg
+#
+gc = manager
+
diff --git a/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/etc/jmx.acl.org.apache.karaf.bundle.cfg b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/etc/jmx.acl.org.apache.karaf.bundle.cfg
new file mode 100644
index 0000000000..e1c9b1c974
--- /dev/null
+++ b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/etc/jmx.acl.org.apache.karaf.bundle.cfg
@@ -0,0 +1,40 @@
+
+################################################################################
+#
+# 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.
+#
+################################################################################
+
+#
+# JMX ACL specific to the org.apache.karaf:type=bundle,name=* MBean which maps to the Karaf MBean
+# to control OSGi bundles.
+#
+install = manager
+refresh = manager
+resolve = manager
+restart = manager
+setStartLevel(java.lang.String, int)[/([1-4])?[0-9]/,/.*/] = admin
+setStartLevel = manager
+start(java.lang.String)[/([1-4])?[0-9]/] = admin
+start = manager
+stop(java.lang.String)[/([1-4])?[0-9]/] = admin
+stop = manager
+uninstall(java.lang.String)["0"] = #this is a comment, no roles can perform this operation
+uninstall = admin
+update(java.lang.String)[/([1-4])?[0-9]/] = admin
+update(java.lang.String,java.lang.String)[/([1-4])?[0-9]/,/.*/] = admin
+update = manager
+
diff --git a/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/etc/jmx.acl.org.apache.karaf.config.cfg b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/etc/jmx.acl.org.apache.karaf.config.cfg
new file mode 100644
index 0000000000..39fb1a4088
--- /dev/null
+++ b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/etc/jmx.acl.org.apache.karaf.config.cfg
@@ -0,0 +1,54 @@
+
+################################################################################
+#
+# 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.
+#
+################################################################################
+
+#
+# JMX ACL specific to the org.apache.karaf:type=config,name=* MBean which maps to the Karaf MBean to interact with the
+# OSGi Config Admin service.
+#
+# For a description of the format of this file, see jmx.acl.cfg
+#
+# By default, only an admin can make changes to the JMX ACL and shell command rules, but managers can make
+# changes to other PIDs.
+#
+appendProperty(java.lang.String,java.lang.String,java.lang.String)[/jmx[.]acl.*/,/.*/,/.*/] = admin
+appendProperty(java.lang.String,java.lang.String,java.lang.String)[/org[.]apache[.]karaf[.]command[.]acl.+/,/.*/,/.*/] = admin
+appendProperty(java.lang.String,java.lang.String,java.lang.String)[/org[.]apache[.]karaf[.]service[.]acl.+/,/.*/,/.*/] = admin
+appendProperty(java.lang.String,java.lang.String,java.lang.String) = manager
+create(java.lang.String)[/jmx[.]acl.*/] = admin
+create(java.lang.String)[/org[.]apache[.]karaf[.]command[.]acl.+/] = admin
+create(java.lang.String)[/org[.]apache[.]karaf[.]service[.]acl.+/] = admin
+create(java.lang.String) = manager
+delete(java.lang.String)[/jmx[.]acl.*/] = admin
+delete(java.lang.String)[/org[.]apache[.]karaf[.]command[.]acl.+/] = admin
+delete(java.lang.String)[/org[.]apache[.]karaf[.]service[.]acl.+/] = admin
+delete(java.lang.String) = manager
+deleteProperty(java.lang.String,java.lang.String)[/jmx[.]acl.*/,/.*/] = admin
+deleteProperty(java.lang.String,java.lang.String)[/org[.]apache[.]karaf[.]command[.]acl.+/,/.*/] = admin
+deleteProperty(java.lang.String,java.lang.String)[/org[.]apache[.]karaf[.]service[.]acl.+/,/.*/] = admin
+deleteProperty(java.lang.String,java.lang.String) = manager
+setProperty(java.lang.String,java.lang.String,java.lang.String)[/jmx[.]acl.*/,/.*/,/.*/] = admin
+setProperty(java.lang.String,java.lang.String,java.lang.String)[/org[.]apache[.]karaf[.]command[.]acl.+/,/.*/,/.*/] = admin
+setProperty(java.lang.String,java.lang.String,java.lang.String)[/org[.]apache[.]karaf[.]service[.]acl.+/,/.*/,/.*/] = admin
+setProperty(java.lang.String,java.lang.String,java.lang.String) = manager
+update(java.lang.String,java.util.Map)[/jmx[.]acl.*/,/.*/] = admin
+update(java.lang.String,java.util.Map)[/org[.]apache[.]karaf[.]command[.]acl.+/,/.*/] = admin
+update(java.lang.String,java.util.Map)[/org[.]apache[.]karaf[.]service[.]acl.+/,/.*/] = admin
+update(java.lang.String,java.util.Map) = manager
+
diff --git a/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/etc/jmx.acl.org.apache.karaf.security.jmx.cfg b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/etc/jmx.acl.org.apache.karaf.security.jmx.cfg
new file mode 100644
index 0000000000..a8f4c6a81f
--- /dev/null
+++ b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/etc/jmx.acl.org.apache.karaf.security.jmx.cfg
@@ -0,0 +1,29 @@
+
+################################################################################
+#
+# 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.
+#
+################################################################################
+
+#
+# JMX ACL specific to the org.apache.karaf:type=security,area=jmx MBean which
+# can be used to find out whether the currently logged in JMX user can invoke
+# the requested JMX operations.
+#
+# For a description of the format of this file, see jmx.acl.cfg
+#
+canInvoke = viewer
+
diff --git a/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/etc/jmx.acl.osgi.compendium.cm.cfg b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/etc/jmx.acl.osgi.compendium.cm.cfg
new file mode 100644
index 0000000000..e8f7a2b2d3
--- /dev/null
+++ b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/etc/jmx.acl.osgi.compendium.cm.cfg
@@ -0,0 +1,55 @@
+
+################################################################################
+#
+# 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.
+#
+################################################################################
+
+#
+# JMX ACL specific to osgi.compendium.cm MBean
+#
+# For a description of the format of this file, see jmx.acl.cfg
+#
+# This configuration file configures the management of ConfigAdmin via the standard ConfigAdmin MBean
+# Such that only an admin can make changes to the JMX ACL rules, but managers can make
+# changes to other PIDs.
+#
+createFactoryConfiguration(java.lang.String)[/jmx[.]acl.*/] = admin
+createFactoryConfiguration(java.lang.String)[/org[.]apache[.]karaf[.]command[.]acl[.].+/] = admin
+createFactoryConfiguration(java.lang.String)[/org[.]apache[.]karaf[.]service[.]acl[.].+/] = admin
+createFactoryConfiguration(java.lang.String) = manager
+createFactoryConfigurationForLocation(java.lang.String,java.lang.String)[/jmx[.]acl.*/,/.*/] = admin
+createFactoryConfigurationForLocation(java.lang.String,java.lang.String)[/org[.]apache[.]karaf[.]command[.]acl[.].+/,/.*/] = admin
+createFactoryConfigurationForLocation(java.lang.String,java.lang.String)[/org[.]apache[.]karaf[.]service[.]acl[.].+/,/.*/] = admin
+createFactoryConfigurationForLocation(java.lang.String,java.lang.String) = manager
+delete(java.lang.String)[/jmx[.]acl.*/] = admin
+delete(java.lang.String)[/org[.]apache[.]karaf[.]command[.]acl[.].+/] = admin
+delete(java.lang.String)[/org[.]apache[.]karaf[.]service[.]acl[.].+/] = admin
+delete(java.lang.String) = manager
+deleteConfigurations = admin
+deleteForLocation(java.lang.String,java.lang.String)[/jmx[.]acl.*/,/.*/] = admin
+deleteForLocation(java.lang.String,java.lang.String)[/org[.]apache[.]karaf[.]command[.]acl[.].+/,/.*/] = admin
+deleteForLocation(java.lang.String,java.lang.String)[/org[.]apache[.]karaf[.]service[.]acl[.].+/,/.*/] = admin
+deleteForLocation(java.lang.String,java.lang.String) = manager
+update(java.lang.String,javax.management.openmbean.TabularData)[/jmx[.]acl.*/,/.*/] = admin
+update(java.lang.String,javax.management.openmbean.TabularData)[/org[.]apache[.]karaf[.]command[.]acl[.].+/,/.*/] = admin
+update(java.lang.String,javax.management.openmbean.TabularData)[/org[.]apache[.]karaf[.]service[.]acl[.].+/,/.*/] = admin
+update(java.lang.String,javax.management.openmbean.TabularData) = manager
+updateForLocation(java.lang.String,java.lang.String,javax.management.openmbean.TabularData)[/jmx[.]acl.*/,/.*/,/.*/] = admin
+updateForLocation(java.lang.String,java.lang.String,javax.management.openmbean.TabularData)[/org[.]apache[.]karaf[.]command[.]acl[.].+/,/.*/,/.*/] = admin
+updateForLocation(java.lang.String,java.lang.String,javax.management.openmbean.TabularData)[/org[.]apache[.]karaf[.]service[.]acl[.].+/,/.*/,/.*/] = admin
+updateForLocation(java.lang.String,java.lang.String,javax.management.openmbean.TabularData) = manager
+
diff --git a/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/etc/jre.properties b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/etc/jre.properties
new file mode 100644
index 0000000000..a7ac0c522a
--- /dev/null
+++ b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/etc/jre.properties
@@ -0,0 +1,727 @@
+################################################################################
+#
+# 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.
+#
+################################################################################
+
+#
+# Java platform package export properties.
+#
+
+# Standard package set. Note that:
+# - javax.transaction* is exported with a mandatory attribute
+jre-1.6= \
+ javax.accessibility, \
+ javax.activation;version="1.1", \
+ javax.activity, \
+ javax.annotation;version="1.0", \
+ javax.annotation.processing;version="1.0", \
+ javax.crypto, \
+ javax.crypto.interfaces, \
+ javax.crypto.spec, \
+ javax.imageio, \
+ javax.imageio.event, \
+ javax.imageio.metadata, \
+ javax.imageio.plugins.bmp, \
+ javax.imageio.plugins.jpeg, \
+ javax.imageio.spi, \
+ javax.imageio.stream, \
+ javax.jws, \
+ javax.jws.soap, \
+ javax.lang.model, \
+ javax.lang.model.element, \
+ javax.lang.model.type, \
+ javax.lang.model.util, \
+ javax.management, \
+ javax.management.loading, \
+ javax.management.modelmbean, \
+ javax.management.monitor, \
+ javax.management.openmbean, \
+ javax.management.relation, \
+ javax.management.remote, \
+ javax.management.remote.rmi, \
+ javax.management.timer, \
+ javax.naming, \
+ javax.naming.directory, \
+ javax.naming.event, \
+ javax.naming.ldap, \
+ javax.naming.spi, \
+ javax.net, \
+ javax.net.ssl, \
+ javax.print, \
+ javax.print.attribute, \
+ javax.print.attribute.standard, \
+ javax.print.event, \
+ javax.rmi, \
+ javax.rmi.CORBA, \
+ javax.rmi.ssl, \
+ javax.script, \
+ javax.security.auth, \
+ javax.security.auth.callback, \
+ javax.security.auth.kerberos, \
+ javax.security.auth.login, \
+ javax.security.auth.spi, \
+ javax.security.auth.x500, \
+ javax.security.cert, \
+ javax.security.sasl, \
+ javax.sound.midi, \
+ javax.sound.midi.spi, \
+ javax.sound.sampled, \
+ javax.sound.sampled.spi, \
+ javax.sql, \
+ javax.sql.rowset, \
+ javax.sql.rowset.serial, \
+ javax.sql.rowset.spi, \
+ javax.swing, \
+ javax.swing.border, \
+ javax.swing.colorchooser, \
+ javax.swing.event, \
+ javax.swing.filechooser, \
+ javax.swing.plaf, \
+ javax.swing.plaf.basic, \
+ javax.swing.plaf.metal, \
+ javax.swing.plaf.multi, \
+ javax.swing.plaf.synth, \
+ javax.swing.table, \
+ javax.swing.text, \
+ javax.swing.text.html, \
+ javax.swing.text.html.parser, \
+ javax.swing.text.rtf, \
+ javax.swing.tree, \
+ javax.swing.undo, \
+ javax.tools, \
+ javax.transaction; javax.transaction.xa; partial=true; mandatory:=partial, \
+ javax.xml, \
+ javax.xml.bind;version="2.2.1", \
+ javax.xml.bind.annotation;version="2.2.1", \
+ javax.xml.bind.annotation.adapters;version="2.2.1", \
+ javax.xml.bind.attachment;version="2.2.1", \
+ javax.xml.bind.helpers;version="2.2.1", \
+ javax.xml.bind.util;version="2.2.1", \
+ javax.xml.crypto, \
+ javax.xml.crypto.dom, \
+ javax.xml.crypto.dsig, \
+ javax.xml.crypto.dsig.dom, \
+ javax.xml.crypto.dsig.keyinfo, \
+ javax.xml.crypto.dsig.spec, \
+ javax.xml.datatype, \
+ javax.xml.namespace, \
+ javax.xml.parsers, \
+ javax.xml.soap;version="1.3", \
+ javax.xml.stream;version="1.2", \
+ javax.xml.stream.events;version="1.2", \
+ javax.xml.stream.util;version="1.2", \
+ javax.xml.transform, \
+ javax.xml.transform.dom, \
+ javax.xml.transform.sax, \
+ javax.xml.transform.stax, \
+ javax.xml.transform.stream, \
+ javax.xml.validation, \
+ javax.xml.ws;version="2.2", \
+ javax.xml.ws.handler;version="2.2", \
+ javax.xml.ws.handler.soap;version="2.2", \
+ javax.xml.ws.http;version="2.2", \
+ javax.xml.ws.soap;version="2.2", \
+ javax.xml.ws.spi;version="2.2", \
+ javax.xml.ws.wsaddressing;version="2.2", \
+ javax.xml.ws.spi.http;version="2.2", \
+ javax.xml.xpath, \
+ org.ietf.jgss, \
+ org.omg.CORBA, \
+ org.omg.CORBA_2_3, \
+ org.omg.CORBA_2_3.portable, \
+ org.omg.CORBA.DynAnyPackage, \
+ org.omg.CORBA.ORBPackage, \
+ org.omg.CORBA.portable, \
+ org.omg.CORBA.TypeCodePackage, \
+ org.omg.CosNaming, \
+ org.omg.CosNaming.NamingContextExtPackage, \
+ org.omg.CosNaming.NamingContextPackage, \
+ org.omg.Dynamic, \
+ org.omg.DynamicAny, \
+ org.omg.DynamicAny.DynAnyFactoryPackage, \
+ org.omg.DynamicAny.DynAnyPackage, \
+ org.omg.IOP, \
+ org.omg.IOP.CodecFactoryPackage, \
+ org.omg.IOP.CodecPackage, \
+ org.omg.Messaging, \
+ org.omg.PortableInterceptor, \
+ org.omg.PortableInterceptor.ORBInitInfoPackage, \
+ org.omg.PortableServer, \
+ org.omg.PortableServer.CurrentPackage, \
+ org.omg.PortableServer.POAManagerPackage, \
+ org.omg.PortableServer.POAPackage, \
+ org.omg.PortableServer.portable, \
+ org.omg.PortableServer.ServantLocatorPackage, \
+ org.omg.SendingContext, \
+ org.omg.stub.java.rmi, \
+ org.omg.stub.javax.management.remote.rmi, \
+ org.w3c.dom, \
+ org.w3c.dom.bootstrap, \
+ org.w3c.dom.css, \
+ org.w3c.dom.events, \
+ org.w3c.dom.html, \
+ org.w3c.dom.ls, \
+ org.w3c.dom.ranges, \
+ org.w3c.dom.stylesheets, \
+ org.w3c.dom.traversal, \
+ org.w3c.dom.views, \
+ org.w3c.dom.xpath, \
+ org.xml.sax, \
+ org.xml.sax.ext, \
+ org.xml.sax.helpers
+
+# Standard package set. Note that:
+# - javax.transaction* is exported with a mandatory attribute
+jre-1.7= \
+ javax.accessibility, \
+ javax.activation;version="1.1", \
+ javax.activity, \
+ javax.annotation;version="1.0", \
+ javax.annotation.processing;version="1.0", \
+ javax.crypto, \
+ javax.crypto.interfaces, \
+ javax.crypto.spec, \
+ javax.imageio, \
+ javax.imageio.event, \
+ javax.imageio.metadata, \
+ javax.imageio.plugins.bmp, \
+ javax.imageio.plugins.jpeg, \
+ javax.imageio.spi, \
+ javax.imageio.stream, \
+ javax.jws, \
+ javax.jws.soap, \
+ javax.lang.model, \
+ javax.lang.model.element, \
+ javax.lang.model.type, \
+ javax.lang.model.util, \
+ javax.management, \
+ javax.management.loading, \
+ javax.management.modelmbean, \
+ javax.management.monitor, \
+ javax.management.openmbean, \
+ javax.management.relation, \
+ javax.management.remote, \
+ javax.management.remote.rmi, \
+ javax.management.timer, \
+ javax.naming, \
+ javax.naming.directory, \
+ javax.naming.event, \
+ javax.naming.ldap, \
+ javax.naming.spi, \
+ javax.net, \
+ javax.net.ssl, \
+ javax.print, \
+ javax.print.attribute, \
+ javax.print.attribute.standard, \
+ javax.print.event, \
+ javax.rmi, \
+ javax.rmi.CORBA, \
+ javax.rmi.ssl, \
+ javax.script, \
+ javax.security.auth, \
+ javax.security.auth.callback, \
+ javax.security.auth.kerberos, \
+ javax.security.auth.login, \
+ javax.security.auth.spi, \
+ javax.security.auth.x500, \
+ javax.security.cert, \
+ javax.security.sasl, \
+ javax.sound.midi, \
+ javax.sound.midi.spi, \
+ javax.sound.sampled, \
+ javax.sound.sampled.spi, \
+ javax.sql, \
+ javax.sql.rowset, \
+ javax.sql.rowset.serial, \
+ javax.sql.rowset.spi, \
+ javax.swing, \
+ javax.swing.border, \
+ javax.swing.colorchooser, \
+ javax.swing.event, \
+ javax.swing.filechooser, \
+ javax.swing.plaf, \
+ javax.swing.plaf.basic, \
+ javax.swing.plaf.metal, \
+ javax.swing.plaf.multi, \
+ javax.swing.plaf.synth, \
+ javax.swing.table, \
+ javax.swing.text, \
+ javax.swing.text.html, \
+ javax.swing.text.html.parser, \
+ javax.swing.text.rtf, \
+ javax.swing.tree, \
+ javax.swing.undo, \
+ javax.tools, \
+ javax.transaction; javax.transaction.xa; partial=true; mandatory:=partial, \
+ javax.xml, \
+ javax.xml.bind;version="2.2.1", \
+ javax.xml.bind.annotation;version="2.2.1", \
+ javax.xml.bind.annotation.adapters;version="2.2.1", \
+ javax.xml.bind.attachment;version="2.2.1", \
+ javax.xml.bind.helpers;version="2.2.1", \
+ javax.xml.bind.util;version="2.2.1", \
+ javax.xml.crypto, \
+ javax.xml.crypto.dom, \
+ javax.xml.crypto.dsig, \
+ javax.xml.crypto.dsig.dom, \
+ javax.xml.crypto.dsig.keyinfo, \
+ javax.xml.crypto.dsig.spec, \
+ javax.xml.datatype, \
+ javax.xml.namespace, \
+ javax.xml.parsers, \
+ javax.xml.soap;version="1.3", \
+ javax.xml.stream;version="1.2", \
+ javax.xml.stream.events;version="1.2", \
+ javax.xml.stream.util;version="1.2", \
+ javax.xml.transform, \
+ javax.xml.transform.dom, \
+ javax.xml.transform.sax, \
+ javax.xml.transform.stax, \
+ javax.xml.transform.stream, \
+ javax.xml.validation, \
+ javax.xml.xpath, \
+ org.ietf.jgss, \
+ org.omg.CORBA, \
+ org.omg.CORBA_2_3, \
+ org.omg.CORBA_2_3.portable, \
+ org.omg.CORBA.DynAnyPackage, \
+ org.omg.CORBA.ORBPackage, \
+ org.omg.CORBA.portable, \
+ org.omg.CORBA.TypeCodePackage, \
+ org.omg.CosNaming, \
+ org.omg.CosNaming.NamingContextExtPackage, \
+ org.omg.CosNaming.NamingContextPackage, \
+ org.omg.Dynamic, \
+ org.omg.DynamicAny, \
+ org.omg.DynamicAny.DynAnyFactoryPackage, \
+ org.omg.DynamicAny.DynAnyPackage, \
+ org.omg.IOP, \
+ org.omg.IOP.CodecFactoryPackage, \
+ org.omg.IOP.CodecPackage, \
+ org.omg.Messaging, \
+ org.omg.PortableInterceptor, \
+ org.omg.PortableInterceptor.ORBInitInfoPackage, \
+ org.omg.PortableServer, \
+ org.omg.PortableServer.CurrentPackage, \
+ org.omg.PortableServer.POAManagerPackage, \
+ org.omg.PortableServer.POAPackage, \
+ org.omg.PortableServer.portable, \
+ org.omg.PortableServer.ServantLocatorPackage, \
+ org.omg.SendingContext, \
+ org.omg.stub.java.rmi, \
+ org.omg.stub.javax.management.remote.rmi, \
+ org.w3c.dom, \
+ org.w3c.dom.bootstrap, \
+ org.w3c.dom.css, \
+ org.w3c.dom.events, \
+ org.w3c.dom.html, \
+ org.w3c.dom.ls, \
+ org.w3c.dom.ranges, \
+ org.w3c.dom.stylesheets, \
+ org.w3c.dom.traversal, \
+ org.w3c.dom.views, \
+ org.w3c.dom.xpath, \
+ org.xml.sax, \
+ org.xml.sax.ext, \
+ org.xml.sax.helpers, \
+ com.sun.nio.sctp
+
+jre-1.8= \
+ javax.accessibility, \
+ javax.activation;version="1.1", \
+ javax.activity, \
+ javax.annotation;version="1.0", \
+ javax.annotation.processing;version="1.0", \
+ javax.crypto, \
+ javax.crypto.interfaces, \
+ javax.crypto.spec, \
+ javax.imageio, \
+ javax.imageio.event, \
+ javax.imageio.metadata, \
+ javax.imageio.plugins.bmp, \
+ javax.imageio.plugins.jpeg, \
+ javax.imageio.spi, \
+ javax.imageio.stream, \
+ javax.jws, \
+ javax.jws.soap, \
+ javax.lang.model, \
+ javax.lang.model.element, \
+ javax.lang.model.type, \
+ javax.lang.model.util, \
+ javax.management, \
+ javax.management.loading, \
+ javax.management.modelmbean, \
+ javax.management.monitor, \
+ javax.management.openmbean, \
+ javax.management.relation, \
+ javax.management.remote, \
+ javax.management.remote.rmi, \
+ javax.management.timer, \
+ javax.naming, \
+ javax.naming.directory, \
+ javax.naming.event, \
+ javax.naming.ldap, \
+ javax.naming.spi, \
+ javax.net, \
+ javax.net.ssl, \
+ javax.print, \
+ javax.print.attribute, \
+ javax.print.attribute.standard, \
+ javax.print.event, \
+ javax.rmi, \
+ javax.rmi.CORBA, \
+ javax.rmi.ssl, \
+ javax.script, \
+ javax.security.auth, \
+ javax.security.auth.callback, \
+ javax.security.auth.kerberos, \
+ javax.security.auth.login, \
+ javax.security.auth.spi, \
+ javax.security.auth.x500, \
+ javax.security.cert, \
+ javax.security.sasl, \
+ javax.sound.midi, \
+ javax.sound.midi.spi, \
+ javax.sound.sampled, \
+ javax.sound.sampled.spi, \
+ javax.sql, \
+ javax.sql.rowset, \
+ javax.sql.rowset.serial, \
+ javax.sql.rowset.spi, \
+ javax.swing, \
+ javax.swing.border, \
+ javax.swing.colorchooser, \
+ javax.swing.event, \
+ javax.swing.filechooser, \
+ javax.swing.plaf, \
+ javax.swing.plaf.basic, \
+ javax.swing.plaf.metal, \
+ javax.swing.plaf.multi, \
+ javax.swing.plaf.synth, \
+ javax.swing.table, \
+ javax.swing.text, \
+ javax.swing.text.html, \
+ javax.swing.text.html.parser, \
+ javax.swing.text.rtf, \
+ javax.swing.tree, \
+ javax.swing.undo, \
+ javax.tools, \
+ javax.transaction; javax.transaction.xa; partial=true; mandatory:=partial, \
+ javax.xml, \
+ javax.xml.bind;version="2.2.1", \
+ javax.xml.bind.annotation;version="2.2.1", \
+ javax.xml.bind.annotation.adapters;version="2.2.1", \
+ javax.xml.bind.attachment;version="2.2.1", \
+ javax.xml.bind.helpers;version="2.2.1", \
+ javax.xml.bind.util;version="2.2.1", \
+ javax.xml.crypto, \
+ javax.xml.crypto.dom, \
+ javax.xml.crypto.dsig, \
+ javax.xml.crypto.dsig.dom, \
+ javax.xml.crypto.dsig.keyinfo, \
+ javax.xml.crypto.dsig.spec, \
+ javax.xml.datatype, \
+ javax.xml.namespace, \
+ javax.xml.parsers, \
+ javax.xml.soap;version="1.3", \
+ javax.xml.stream;version="1.2", \
+ javax.xml.stream.events;version="1.2", \
+ javax.xml.stream.util;version="1.2", \
+ javax.xml.transform, \
+ javax.xml.transform.dom, \
+ javax.xml.transform.sax, \
+ javax.xml.transform.stax, \
+ javax.xml.transform.stream, \
+ javax.xml.validation, \
+ javax.xml.ws;version="2.2", \
+ javax.xml.ws.handler;version="2.2", \
+ javax.xml.ws.handler.soap;version="2.2", \
+ javax.xml.ws.http;version="2.2", \
+ javax.xml.ws.soap;version="2.2", \
+ javax.xml.ws.spi;version="2.2", \
+ javax.xml.ws.wsaddressing;version="2.2", \
+ javax.xml.ws.spi.http;version="2.2", \
+ javax.xml.xpath, \
+ javafx.animation, \
+ javafx.application, \
+ javafx.beans, \
+ javafx.beans.binding, \
+ javafx.beans.property, \
+ javafx.beans.property.adapter, \
+ javafx.beans.value, \
+ javafx.collections, \
+ javafx.collections.transform, \
+ javafx.concurrent, \
+ javafx.css, \
+ javafx.embed.swing, \
+ javafx.embed.swt, \
+ javafx.event, \
+ javafx.fxml, \
+ javafx.geometry, \
+ javafx.print, \
+ javafx.scene, \
+ javafx.scene.canvas, \
+ javafx.scene.chart, \
+ javafx.scene.control, \
+ javafx.scene.control.cell, \
+ javafx.scene.effect, \
+ javafx.scene.image, \
+ javafx.scene.input, \
+ javafx.scene.layout, \
+ javafx.scene.media, \
+ javafx.scene.paint, \
+ javafx.scene.shape, \
+ javafx.scene.text, \
+ javafx.scene.transform, \
+ javafx.scene.web, \
+ javafx.stage, \
+ javafx.util, \
+ javafx.util.converter, \
+ netscape.javascript, \
+ org.ietf.jgss, \
+ org.omg.CORBA, \
+ org.omg.CORBA_2_3, \
+ org.omg.CORBA_2_3.portable, \
+ org.omg.CORBA.DynAnyPackage, \
+ org.omg.CORBA.ORBPackage, \
+ org.omg.CORBA.portable, \
+ org.omg.CORBA.TypeCodePackage, \
+ org.omg.CosNaming, \
+ org.omg.CosNaming.NamingContextExtPackage, \
+ org.omg.CosNaming.NamingContextPackage, \
+ org.omg.Dynamic, \
+ org.omg.DynamicAny, \
+ org.omg.DynamicAny.DynAnyFactoryPackage, \
+ org.omg.DynamicAny.DynAnyPackage, \
+ org.omg.IOP, \
+ org.omg.IOP.CodecFactoryPackage, \
+ org.omg.IOP.CodecPackage, \
+ org.omg.Messaging, \
+ org.omg.PortableInterceptor, \
+ org.omg.PortableInterceptor.ORBInitInfoPackage, \
+ org.omg.PortableServer, \
+ org.omg.PortableServer.CurrentPackage, \
+ org.omg.PortableServer.POAManagerPackage, \
+ org.omg.PortableServer.POAPackage, \
+ org.omg.PortableServer.portable, \
+ org.omg.PortableServer.ServantLocatorPackage, \
+ org.omg.SendingContext, \
+ org.omg.stub.java.rmi, \
+ org.omg.stub.javax.management.remote.rmi, \
+ org.w3c.dom, \
+ org.w3c.dom.bootstrap, \
+ org.w3c.dom.css, \
+ org.w3c.dom.events, \
+ org.w3c.dom.html, \
+ org.w3c.dom.ls, \
+ org.w3c.dom.ranges, \
+ org.w3c.dom.stylesheets, \
+ org.w3c.dom.traversal, \
+ org.w3c.dom.views, \
+ org.w3c.dom.xpath, \
+ org.xml.sax, \
+ org.xml.sax.ext, \
+ org.xml.sax.helpers, \
+ com.sun.nio.sctp
+
+jre-9= \
+ javax.accessibility, \
+ javax.activation;version="1.1", \
+ javax.activity, \
+ javax.annotation.processing;version="1.0", \
+ javax.crypto, \
+ javax.crypto.interfaces, \
+ javax.crypto.spec, \
+ javax.imageio, \
+ javax.imageio.event, \
+ javax.imageio.metadata, \
+ javax.imageio.plugins.bmp, \
+ javax.imageio.plugins.jpeg, \
+ javax.imageio.spi, \
+ javax.imageio.stream, \
+ javax.lang.model, \
+ javax.lang.model.element, \
+ javax.lang.model.type, \
+ javax.lang.model.util, \
+ javax.management, \
+ javax.management.loading, \
+ javax.management.modelmbean, \
+ javax.management.monitor, \
+ javax.management.openmbean, \
+ javax.management.relation, \
+ javax.management.remote, \
+ javax.management.remote.rmi, \
+ javax.management.timer, \
+ javax.naming, \
+ javax.naming.directory, \
+ javax.naming.event, \
+ javax.naming.ldap, \
+ javax.naming.spi, \
+ javax.net, \
+ javax.net.ssl, \
+ javax.print, \
+ javax.print.attribute, \
+ javax.print.attribute.standard, \
+ javax.print.event, \
+ javax.rmi, \
+ javax.rmi.CORBA, \
+ javax.rmi.ssl, \
+ javax.script, \
+ javax.security.auth, \
+ javax.security.auth.callback, \
+ javax.security.auth.kerberos, \
+ javax.security.auth.login, \
+ javax.security.auth.spi, \
+ javax.security.auth.x500, \
+ javax.security.cert, \
+ javax.security.sasl, \
+ javax.sound.midi, \
+ javax.sound.midi.spi, \
+ javax.sound.sampled, \
+ javax.sound.sampled.spi, \
+ javax.sql, \
+ javax.sql.rowset, \
+ javax.sql.rowset.serial, \
+ javax.sql.rowset.spi, \
+ javax.swing, \
+ javax.swing.border, \
+ javax.swing.colorchooser, \
+ javax.swing.event, \
+ javax.swing.filechooser, \
+ javax.swing.plaf, \
+ javax.swing.plaf.basic, \
+ javax.swing.plaf.metal, \
+ javax.swing.plaf.multi, \
+ javax.swing.plaf.synth, \
+ javax.swing.table, \
+ javax.swing.text, \
+ javax.swing.text.html, \
+ javax.swing.text.html.parser, \
+ javax.swing.text.rtf, \
+ javax.swing.tree, \
+ javax.swing.undo, \
+ javax.tools, \
+ javax.transaction; javax.transaction.xa; partial=true; mandatory:=partial, \
+ javax.xml, \
+ javax.xml.bind;version="2.2.1", \
+ javax.xml.bind.annotation;version="2.2.1", \
+ javax.xml.bind.annotation.adapters;version="2.2.1", \
+ javax.xml.bind.attachment;version="2.2.1", \
+ javax.xml.bind.helpers;version="2.2.1", \
+ javax.xml.bind.util;version="2.2.1", \
+ javax.xml.crypto, \
+ javax.xml.crypto.dom, \
+ javax.xml.crypto.dsig, \
+ javax.xml.crypto.dsig.dom, \
+ javax.xml.crypto.dsig.keyinfo, \
+ javax.xml.crypto.dsig.spec, \
+ javax.xml.datatype, \
+ javax.xml.namespace, \
+ javax.xml.parsers, \
+ javax.xml.stream;version="1.2", \
+ javax.xml.stream.events;version="1.2", \
+ javax.xml.stream.util;version="1.2", \
+ javax.xml.transform, \
+ javax.xml.transform.dom, \
+ javax.xml.transform.sax, \
+ javax.xml.transform.stax, \
+ javax.xml.transform.stream, \
+ javax.xml.validation, \
+ javax.xml.xpath, \
+ javafx.animation, \
+ javafx.application, \
+ javafx.beans, \
+ javafx.beans.binding, \
+ javafx.beans.property, \
+ javafx.beans.property.adapter, \
+ javafx.beans.value, \
+ javafx.collections, \
+ javafx.collections.transformation, \
+ javafx.concurrent, \
+ javafx.css, \
+ javafx.embed.swing, \
+ javafx.embed.swt, \
+ javafx.event, \
+ javafx.fxml, \
+ javafx.geometry, \
+ javafx.print, \
+ javafx.scene, \
+ javafx.scene.canvas, \
+ javafx.scene.chart, \
+ javafx.scene.control, \
+ javafx.scene.control.cell, \
+ javafx.scene.effect, \
+ javafx.scene.image, \
+ javafx.scene.input, \
+ javafx.scene.layout, \
+ javafx.scene.media, \
+ javafx.scene.paint, \
+ javafx.scene.shape, \
+ javafx.scene.text, \
+ javafx.scene.transform, \
+ javafx.scene.web, \
+ javafx.stage, \
+ javafx.util, \
+ javafx.util.converter, \
+ netscape.javascript, \
+ org.ietf.jgss, \
+ org.omg.CORBA, \
+ org.omg.CORBA_2_3, \
+ org.omg.CORBA_2_3.portable, \
+ org.omg.CORBA.DynAnyPackage, \
+ org.omg.CORBA.ORBPackage, \
+ org.omg.CORBA.portable, \
+ org.omg.CORBA.TypeCodePackage, \
+ org.omg.CosNaming, \
+ org.omg.CosNaming.NamingContextExtPackage, \
+ org.omg.CosNaming.NamingContextPackage, \
+ org.omg.Dynamic, \
+ org.omg.DynamicAny, \
+ org.omg.DynamicAny.DynAnyFactoryPackage, \
+ org.omg.DynamicAny.DynAnyPackage, \
+ org.omg.IOP, \
+ org.omg.IOP.CodecFactoryPackage, \
+ org.omg.IOP.CodecPackage, \
+ org.omg.Messaging, \
+ org.omg.PortableInterceptor, \
+ org.omg.PortableInterceptor.ORBInitInfoPackage, \
+ org.omg.PortableServer, \
+ org.omg.PortableServer.CurrentPackage, \
+ org.omg.PortableServer.POAManagerPackage, \
+ org.omg.PortableServer.POAPackage, \
+ org.omg.PortableServer.portable, \
+ org.omg.PortableServer.ServantLocatorPackage, \
+ org.omg.SendingContext, \
+ org.omg.stub.java.rmi, \
+ org.omg.stub.javax.management.remote.rmi, \
+ org.w3c.dom, \
+ org.w3c.dom.bootstrap, \
+ org.w3c.dom.css, \
+ org.w3c.dom.events, \
+ org.w3c.dom.html, \
+ org.w3c.dom.ls, \
+ org.w3c.dom.ranges, \
+ org.w3c.dom.stylesheets, \
+ org.w3c.dom.traversal, \
+ org.w3c.dom.views, \
+ org.w3c.dom.xpath, \
+ org.xml.sax, \
+ org.xml.sax.ext, \
+ org.xml.sax.helpers
+
+jre-10 = ${jre-9}
+jre-11 = ${jre-10}
diff --git a/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/etc/keys.properties b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/etc/keys.properties
new file mode 100644
index 0000000000..5c19ea5450
--- /dev/null
+++ b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/etc/keys.properties
@@ -0,0 +1,36 @@
+################################################################################
+#
+# 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.
+#
+################################################################################
+
+#
+# This file contains the valid users who can log into Karaf. Each line have to be of
+# the format:
+#
+# USER=KEY,ROLE1,ROLE2,...
+#
+# All users and roles entered in this file are available after Karaf startup
+# and modifiable via the JAAS command group. These users reside in a JAAS domain
+# with the name "karaf"..
+#
+
+#
+# For security reason, the default auto-signed key is disabled.
+# The user guide describes how to generate/update the key.
+#
+#karaf=AAAAB3NzaC1kc3MAAACBAP1/U4EddRIpUt9KnC7s5Of2EbdSPO9EAMMeP4C2USZpRV1AIlH7WT2NWPq/xfW6MPbLm1Vs14E7gB00b/JmYLdrmVClpJ+f6AR7ECLCT7up1/63xhv4O1fnxqimFQ8E+4P208UewwI1VBNaFpEy9nXzrith1yrv8iIDGZ3RSAHHAAAAFQCXYFCPFSMLzLKSuYKi64QL8Fgc9QAAAIEA9+GghdabPd7LvKtcNrhXuXmUr7v6OuqC+VdMCz0HgmdRWVeOutRZT+ZxBxCBgLRJFnEj6EwoFhO3zwkyjMim4TwWeotUfI0o4KOuHiuzpnWRbqN/C/ohNWLx+2J6ASQ7zKTxvqhRkImog9/hWuWfBpKLZl6Ae1UlZAFMO/7PSSoAAACBAKKSU2PFl/qOLxIwmBZPPIcJshVe7bVUpFvyl3BbJDow8rXfskl8wO63OzP/qLmcJM0+JbcRU/53JjTuyk31drV2qxhIOsLDC9dGCWj47Y7TyhPdXh/0dthTRBy6bqGtRPxGa7gJov1xm/UuYYXPIUR/3x9MAZvZ5xvE0kYXO+rx,_g_:admingroup
+_g_\:admingroup = group,admin,manager,viewer,systembundles
diff --git a/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/etc/org.apache.felix.eventadmin.impl.EventAdmin.cfg b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/etc/org.apache.felix.eventadmin.impl.EventAdmin.cfg
new file mode 100644
index 0000000000..bf63da2104
--- /dev/null
+++ b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/etc/org.apache.felix.eventadmin.impl.EventAdmin.cfg
@@ -0,0 +1,23 @@
+
+################################################################################
+#
+# 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.
+#
+################################################################################
+
+org.apache.felix.eventadmin.AddTimestamp=true
+org.apache.felix.eventadmin.AddSubject=true
+
diff --git a/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/etc/org.apache.felix.fileinstall-deploy.cfg b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/etc/org.apache.felix.fileinstall-deploy.cfg
new file mode 100644
index 0000000000..7f9f0ca950
--- /dev/null
+++ b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/etc/org.apache.felix.fileinstall-deploy.cfg
@@ -0,0 +1,25 @@
+################################################################################
+#
+# 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.
+#
+################################################################################
+
+felix.fileinstall.dir = ${karaf.base}/deploy
+felix.fileinstall.tmpdir = ${karaf.data}/generated-bundles
+felix.fileinstall.poll = 1000
+felix.fileinstall.start.level = 80
+felix.fileinstall.active.level = 80
+felix.fileinstall.log.level = 3
diff --git a/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/etc/org.apache.karaf.command.acl.bundle.cfg b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/etc/org.apache.karaf.command.acl.bundle.cfg
new file mode 100644
index 0000000000..688c289e49
--- /dev/null
+++ b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/etc/org.apache.karaf.command.acl.bundle.cfg
@@ -0,0 +1,46 @@
+
+################################################################################
+#
+# 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.
+#
+################################################################################
+
+#
+# This configuration file defines the ACLs for commands in the bundle subshell
+#
+# For an explanation of the syntax of this file, see the file:
+# org.apache.karaf.command.acl.system.cfg
+#
+# This configuration relies on the fact that 'system' bundles need to be managed
+# with the
+# -f (--force)
+# flag. Operations with -f need admin permission. Most of these operations without
+# the 'force' option can be done by a manager.
+install = admin
+refresh[/.*[-][f].*/] = admin
+refresh = manager
+restart[/.*[-][f].*/] = admin
+restart = manager
+start[/.*[-][f].*/] = admin
+start = manager
+stop[/.*[-][f].*/] = admin
+stop = manager
+uninstall[/.*[-][f].*/] = admin
+uninstall = manager
+update[/.*[-][f].*/] = admin
+update = manager
+watch = admin
+
diff --git a/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/etc/org.apache.karaf.command.acl.config.cfg b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/etc/org.apache.karaf.command.acl.config.cfg
new file mode 100644
index 0000000000..b802587fd0
--- /dev/null
+++ b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/etc/org.apache.karaf.command.acl.config.cfg
@@ -0,0 +1,46 @@
+
+################################################################################
+#
+# 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.
+#
+################################################################################
+
+#
+# This configuration file defines the ACLs for various commands in the config subshell
+#
+# For an explanation of the syntax of this file, see the file:
+# org.apache.karaf.command.acl.system.cfg
+#
+cancel = manager
+delete = admin
+edit = manager
+edit[/.*jmx[.]acl.*/] = admin
+edit[/.*org[.]apache[.]karaf[.]command[.]acl[.].+/] = admin
+edit[/.*org[.]apache[.]karaf[.]service[.]acl[.].+/] = admin
+property-append = manager
+property-append[/.*jmx[.]acl.*/] = admin
+property-append[/.*org[.]apache[.]karaf[.]command[.]acl[.].+/] = admin
+property-append[/.*org[.]apache[.]karaf[.]service[.]acl[.].+/] = admin
+property-delete = manager
+property-delete[/.*jmx[.]acl.*/] = admin
+property-delete[/.*org[.]apache[.]karaf[.]command[.]acl[.].+/] = admin
+property-delete[/.*org[.]apache[.]karaf[.]service[.]acl[.].+/] = admin
+property-set = manager
+property-set[/.*jmx[.]acl.*/] = admin
+property-set[/.*org[.]apache[.]karaf[.]command[.]acl[.].+/] = admin
+property-set[/.*org[.]apache[.]karaf[.]service[.]acl[.].+/] = admin
+update = manager
+
diff --git a/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/etc/org.apache.karaf.command.acl.feature.cfg b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/etc/org.apache.karaf.command.acl.feature.cfg
new file mode 100644
index 0000000000..004e008a65
--- /dev/null
+++ b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/etc/org.apache.karaf.command.acl.feature.cfg
@@ -0,0 +1,29 @@
+
+################################################################################
+#
+# 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.
+#
+################################################################################
+
+#
+# This configuration file defines the ACLs for commands in the feature subshell
+#
+install = admin
+uninstall = admin
+start = admin
+stop = admin
+update = admin
+
diff --git a/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/etc/org.apache.karaf.command.acl.jaas.cfg b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/etc/org.apache.karaf.command.acl.jaas.cfg
new file mode 100644
index 0000000000..9563625fa9
--- /dev/null
+++ b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/etc/org.apache.karaf.command.acl.jaas.cfg
@@ -0,0 +1,25 @@
+
+################################################################################
+#
+# 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.
+#
+################################################################################
+
+#
+# This configuration file defines the ACLs for commands in the jaas subshell
+# Jaas commands commands have no effect until update is called.
+update = admin
+
diff --git a/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/etc/org.apache.karaf.command.acl.kar.cfg b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/etc/org.apache.karaf.command.acl.kar.cfg
new file mode 100644
index 0000000000..d0730388bd
--- /dev/null
+++ b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/etc/org.apache.karaf.command.acl.kar.cfg
@@ -0,0 +1,29 @@
+
+################################################################################
+#
+# 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.
+#
+################################################################################
+
+#
+# This configuration file defines the ACLs for commands in the kar subshell
+#
+# For an explanation of the syntax of this file, see the file:
+# org.apache.karaf.command.acl.system.cfg
+#
+install = admin
+uninstall = admin
+
diff --git a/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/etc/org.apache.karaf.command.acl.scope_bundle.cfg b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/etc/org.apache.karaf.command.acl.scope_bundle.cfg
new file mode 100644
index 0000000000..ff316fa01a
--- /dev/null
+++ b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/etc/org.apache.karaf.command.acl.scope_bundle.cfg
@@ -0,0 +1,33 @@
+
+################################################################################
+#
+# 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.
+#
+################################################################################
+
+#
+# This configuration file defines the ACLs for scope bundles
+#
+features=org.apache.karaf.features.command
+jaas=org.apache.karaf.jaas.command
+admin=org.apache.karaf.admin.command
+osgi=org.apache.karaf.shell.osgi
+log=org.apache.karaf.shell.log
+packages=org.apache.karaf.shell.packages
+config=org.apache.karaf.shell.config
+ssh=org.apache.karaf.shell.ssh
+shell=org.apache.karaf.shell.commands
+
diff --git a/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/etc/org.apache.karaf.command.acl.shell.cfg b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/etc/org.apache.karaf.command.acl.shell.cfg
new file mode 100644
index 0000000000..4e5844d9c1
--- /dev/null
+++ b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/etc/org.apache.karaf.command.acl.shell.cfg
@@ -0,0 +1,28 @@
+
+################################################################################
+#
+# 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.
+#
+################################################################################
+
+#
+# This configuration file defines the ACLs for commands in the shell subshell
+#
+nano = admin
+exec = admin
+new = admin
+java = admin
+
diff --git a/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/etc/org.apache.karaf.command.acl.system.cfg b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/etc/org.apache.karaf.command.acl.system.cfg
new file mode 100644
index 0000000000..7ff033602d
--- /dev/null
+++ b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/etc/org.apache.karaf.command.acl.system.cfg
@@ -0,0 +1,29 @@
+
+################################################################################
+#
+# 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.
+#
+################################################################################
+
+#
+# This configuration file defines the ACLs for commands in the system subshell
+#
+property = admin
+shutdown = admin
+start-level[/.*[1-9][0-9][0-9]+.*/] = manager # manager can set startlevels above 100
+start-level[/[^0-9]*/] = viewer # viewer can obtain the current start level
+start-level = admin # admin can set any start level, including < 100
+
diff --git a/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/etc/org.apache.karaf.features.cfg b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/etc/org.apache.karaf.features.cfg
new file mode 100644
index 0000000000..60851a009d
--- /dev/null
+++ b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/etc/org.apache.karaf.features.cfg
@@ -0,0 +1,95 @@
+################################################################################
+#
+# 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.
+#
+################################################################################
+
+#
+# Comma separated list of features repositories to register by default
+#
+featuresRepositories = \
+ mvn:org.apache.karaf.features/enterprise/4.2.1/xml/features, \
+ mvn:org.apache.karaf.features/spring/4.2.1/xml/features, \
+ mvn:org.apache.karaf.features/standard/4.2.1/xml/features, \
+ mvn:org.apache.karaf.features/framework/4.2.1/xml/features
+
+#
+# Comma separated list of features to install at startup
+#
+featuresBoot = \
+ instance/4.2.1, \
+ package/4.2.1, \
+ log/4.2.1, \
+ ssh/4.2.1, \
+ framework/4.2.1, \
+ system/4.2.1, \
+ eventadmin/4.2.1, \
+ feature/4.2.1, \
+ shell/4.2.1, \
+ management/4.2.1, \
+ service/4.2.1, \
+ jaas/4.2.1, \
+ deployer/4.2.1, \
+ diagnostic/4.2.1, \
+ wrap/2.5.4, \
+ bundle/4.2.1, \
+ config/4.2.1, \
+ kar/4.2.1
+
+#
+# Resource repositories (OBR) that the features resolver can use
+# to resolve requirements/capabilities
+#
+# The format of the resourceRepositories is
+# resourceRepositories=[xml:url|json:url],...
+# for Instance:
+#
+#resourceRepositories=xml:http://host/path/to/index.xml
+# or
+#resourceRepositories=json:http://host/path/to/index.json
+#
+
+#
+# Defines if the boot features are started in asynchronous mode (in a dedicated thread)
+#
+featuresBootAsynchronous=false
+
+#
+# Service requirements enforcement
+#
+# By default, the feature resolver checks the service requirements/capabilities of
+# bundles for new features (xml schema >= 1.3.0) in order to automatically installs
+# the required bundles.
+# The following flag can have those values:
+# - disable: service requirements are completely ignored
+# - default: service requirements are ignored for old features
+# - enforce: service requirements are always verified
+#
+#serviceRequirements=default
+
+#
+# Store cfg file for config element in feature
+#
+#configCfgStore=true
+
+#
+# Configuration of features processing mechanism (overrides, blacklisting, modification of features)
+# XML file defines instructions related to features processing
+# versions.properties may declare properties to resolve placeholders in XML file
+# both files are relative to ${karaf.etc}
+#
+#featureProcessing=org.apache.karaf.features.xml
+#featureProcessingVersions=versions.properties
diff --git a/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/etc/org.apache.karaf.features.repos.cfg b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/etc/org.apache.karaf.features.repos.cfg
new file mode 100644
index 0000000000..3c8bf808d0
--- /dev/null
+++ b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/etc/org.apache.karaf.features.repos.cfg
@@ -0,0 +1,61 @@
+
+################################################################################
+#
+# 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.
+#
+################################################################################
+
+#
+# This file describes the features repository URL
+# It could be directly installed using feature:repo-add command
+#
+enterprise=mvn:org.apache.karaf.features/enterprise/${karaf.version}/xml/features
+enterprise-legacy=mvn:org.apache.karaf.features/enterprise-legacy/${karaf.version}/xml/features
+spring=mvn:org.apache.karaf.features/spring/${karaf.version}/xml/features
+spring-legacy=mvn:org.apache.karaf.features/spring-legacy/${karaf.version}/xml/features
+cellar=mvn:org.apache.karaf.cellar/apache-karaf-cellar/RELEASE/xml/features
+cave=mvn:org.apache.karaf.cave/apache-karaf-cave/RELEASE/xml/features
+camel=mvn:org.apache.camel.karaf/apache-camel/RELEASE/xml/features
+camel-extras=mvn:org.apache-extras.camel-extra.karaf/camel-extra/RELEASE/xml/features
+cxf=mvn:org.apache.cxf.karaf/apache-cxf/RELEASE/xml/features
+cxf-dosgi=mvn:org.apache.cxf.dosgi/cxf-dosgi/RELEASE/xml/features
+cxf-dosgi-samples=mvn:org.apache.cxf.dosgi/cxf-dosgi-samples/RELEASE/xml/features
+cxf-xkms=mvn:org.apache.cxf.services.xkms/cxf-services-xkms-features/RELEASE/xml
+activemq=mvn:org.apache.activemq/activemq-karaf/RELEASE/xml/features
+jclouds=mvn:org.apache.jclouds.karaf/jclouds-karaf/RELEASE/xml/features
+openejb=mvn:org.apache.openejb/openejb-feature/RELEASE/xml/features
+wicket=mvn:org.ops4j.pax.wicket/features/RELEASE/xml/features
+hawtio=mvn:io.hawt/hawtio-karaf/RELEASE/xml/features
+pax-cdi=mvn:org.ops4j.pax.cdi/pax-cdi-features/RELEASE/xml/features
+pax-jdbc=mvn:org.ops4j.pax.jdbc/pax-jdbc-features/RELEASE/xml/features
+pax-jms=mvn:org.ops4j.pax.jms/pax-jms-features/RELEASE/xml/features
+pax-jpa=mvn:org.ops4j.pax.jpa/pax-jpa-features/RELEASE/xml/features
+pax-transx=mvn:org.ops4j.pax.transx/pax-transx-features/RELEASE/xml/features
+pax-keycloak=mvn:org.ops4j.pax.keycloak/pax-keycloak-features/RELEASE/xml/features
+pax-web=mvn:org.ops4j.pax.web/pax-web-features/RELEASE/xml/features
+pax-wicket=mvn:org.ops4j.pax.wicket/pax-wicket-features/RELEASE/xml/features
+ecf=http://download.eclipse.org/rt/ecf/RELEASE/site.p2/karaf-features.xml
+decanter=mvn:org.apache.karaf.decanter/apache-karaf-decanter/RELEASE/xml/features
+eclipsesource-jaxrs=mvn:com.eclipsesource.jaxrs/features/RELEASE/xml/features
+aries-jpa=mvn:org.apache.aries.jpa/jpa-features/RELEASE/xml/features
+aries-rsa=mvn:org.apache.aries.rsa/rsa-features/RELEASE/xml/features
+hibernate=mvn:org.hibernate/hibernate-osgi/RELEASE/xml/karaf
+ignite=mvn:org.apache.ignite/ignite-osgi-karaf/RELEASE/xml/features
+openjpa=mvn:org.apache.openjpa/openjpa-features/RELEASE/xml/features
+artemis=mvn:org.apache.activemq/artemis-features/RELEASE/xml/features
+brave=mvn:io.zipkin.brave.karaf/brave-features/RELEASE/xml/features
+sling=mvn:org.apache.sling/org.apache.sling.karaf-features/RELEASE/xml/features
+
diff --git a/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/etc/org.apache.karaf.jaas.cfg b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/etc/org.apache.karaf.jaas.cfg
new file mode 100644
index 0000000000..16e4e6841c
--- /dev/null
+++ b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/etc/org.apache.karaf.jaas.cfg
@@ -0,0 +1,63 @@
+
+################################################################################
+#
+# 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.
+#
+################################################################################
+
+#
+# Boolean enabling / disabling encrypted passwords
+#
+encryption.enabled = false
+
+#
+# Encryption Service name
+# the default one is 'basic'
+# a more powerful one named 'jasypt' is available
+# when installing the encryption feature
+#
+encryption.name =
+
+#
+# Encryption prefix
+#
+encryption.prefix = {CRYPT}
+
+#
+# Encryption suffix
+#
+encryption.suffix = {CRYPT}
+
+#
+# Set the encryption algorithm to use in Karaf JAAS login module
+# Supported encryption algorithms follow:
+# MD2
+# MD5
+# SHA-1
+# SHA-256
+# SHA-384
+# SHA-512
+#
+encryption.algorithm = MD5
+
+#
+# Encoding of the encrypted password.
+# Can be:
+# hexadecimal
+# base64
+#
+encryption.encoding = hexadecimal
+
diff --git a/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/etc/org.apache.karaf.kar.cfg b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/etc/org.apache.karaf.kar.cfg
new file mode 100644
index 0000000000..3a3492066a
--- /dev/null
+++ b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/etc/org.apache.karaf.kar.cfg
@@ -0,0 +1,35 @@
+################################################################################
+#
+# 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.
+#
+################################################################################
+
+#
+# Enable or disable the refresh of the bundles when installing
+# the features contained in a KAR file
+#
+noAutoRefreshBundles=false
+
+#
+# Enable or disable the automatic start of the bundles when installing
+# the features contained in a KAR file
+#
+noAutoStartBundles=false
+
+#
+# Directory where the kar are stored (when downloaded from Maven for instance)
+#
+#karStorage=${karaf.data}/kar
diff --git a/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/etc/org.apache.karaf.log.cfg b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/etc/org.apache.karaf.log.cfg
new file mode 100644
index 0000000000..67b35c93c0
--- /dev/null
+++ b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/etc/org.apache.karaf.log.cfg
@@ -0,0 +1,44 @@
+
+################################################################################
+#
+# 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.
+#
+################################################################################
+
+#
+# This configuration file is used to configure the default values for the log:display
+# and log:exception-display commands.
+#
+
+#
+# The number of log statements to be displayed using log:display. It also defines the number
+# of lines searched for exceptions using log:exception-display. You can override this value
+# at runtime using -n in log:display.
+#
+size = "500"
+
+#
+# The pattern used to format the log statement when using log:display. This pattern is according
+# to the log4j layout. You can override this parameter at runtime using log:display with -p.
+#
+color.fatal = "bright red"
+color.error = "bright red"
+color.warn = "bright yellow"
+color.info = "bright green"
+color.debug = "cyan"
+color.trace = "cyan"
+pattern = "\u001b[90m%d{HH:mm:ss.SSS}\u001b[0m %h{%p}{FATAL=${color.fatal}, ERROR=${color.error}, WARN=${color.warn}, INFO=${color.info}, DEBUG=${color.debug}, TRACE=${color.trace}} \u001b[90m[%t]\u001b[0m %m%n"
+
diff --git a/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/etc/org.apache.karaf.management.cfg b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/etc/org.apache.karaf.management.cfg
new file mode 100644
index 0000000000..c4b1b757f4
--- /dev/null
+++ b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/etc/org.apache.karaf.management.cfg
@@ -0,0 +1,124 @@
+
+################################################################################
+#
+# 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 properties in this file define the configuration of Apache Karaf's JMX Management
+#
+
+#
+# Port number for RMI registry connection
+#
+rmiRegistryPort = 1099
+
+#
+# Host for RMI registry
+#
+rmiRegistryHost = 127.0.0.1
+
+#
+# Port number for RMI server connection
+#
+rmiServerPort = 44444
+
+#
+# Host for RMI server
+#
+rmiServerHost = 127.0.0.1
+
+#
+# Name of the JAAS realm used for authentication
+#
+jmxRealm = karaf
+
+#
+# The service URL for the JMXConnectorServer
+#
+serviceUrl = service:jmx:rmi://${rmiServerHost}:${rmiServerPort}/jndi/rmi://${rmiRegistryHost}:${rmiRegistryPort}/karaf-${karaf.name}
+
+#
+# Whether any threads started for the JMXConnectorServer should be started as daemon threads
+#
+daemon = true
+
+#
+# Whether the JMXConnectorServer should be started in a separate thread
+#
+threaded = true
+
+#
+# The ObjectName used to register the JMXConnectorServer
+#
+objectName = connector:name=rmi
+
+#
+# Timeout to lookup for the keystore in case of SSL authentication usage
+#
+#keyStoreAvailabilityTimeout = 5000
+
+#
+# The type of authentication
+#
+#authenticatorType = password
+
+#
+# Enable or not SSL/TLS
+#
+#secured = false
+
+#
+# Secure algorithm to use
+#
+#secureAlgorithm = default
+
+#
+# Secure protocol to use
+#
+#secureProtocol = TLS
+
+#
+# Keystore to use for secure mode
+#
+#keyStore = karaf.ks
+
+#
+# Alias of the key to use in the keystore
+#
+#keyAlias = karaf
+
+#
+# Truststore to use for secure mode
+#
+#trustStore = karaf.ts
+
+#
+# Create the JMX RMI registry
+#
+#createRmiRegistry = true
+
+#
+# Locate the JMX RMI registry
+#
+#locateRmiRegistry = true
+
+#
+# Locate an existing MBean server if possible (usefull when Karaf is embedded)
+#
+#locateExistingMBeanServerIfPossible = true
+
diff --git a/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/etc/org.apache.karaf.shell.cfg b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/etc/org.apache.karaf.shell.cfg
new file mode 100644
index 0000000000..68ed3314bc
--- /dev/null
+++ b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/etc/org.apache.karaf.shell.cfg
@@ -0,0 +1,127 @@
+
+################################################################################
+#
+# 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.
+#
+################################################################################
+
+#
+# These properties are used to configure Karaf's ssh shell.
+#
+
+#
+# Via sshPort and sshHost you define the address you can login into Karaf.
+#
+sshPort = 8101
+sshHost = 0.0.0.0
+
+#
+# The sshIdleTimeout defines the inactivity timeout to logout the SSH session.
+# The sshIdleTimeout is in milliseconds, and the default is set to 30 minutes.
+#
+sshIdleTimeout = 1800000
+
+#
+# sshRealm defines which JAAS domain to use for password authentication.
+#
+sshRealm = karaf
+
+#
+# sshRole defines the role required to access the console through ssh
+#
+sshRole = ssh
+
+#
+# Defines if the SFTP system is enabled or not in the SSH server
+#
+sftpEnabled=true
+
+#
+# The location of the hostKey file defines where the private/public key of the server
+# is located. If no file is at the defined location it will be ignored.
+#
+hostKey = ${karaf.etc}/host.key
+
+#
+# The format used for hostKey.
+# Possible values are simple (Karaf internal), or PEM (OpenSSH format)
+#
+hostKeyFormat = simple
+
+#
+# Self defined key size in 1024, 2048, 3072, or 4096
+# If not set, this defaults to 2048.
+#
+# keySize = 2048
+
+#
+# Specify host key algorithm, defaults to RSA
+#
+# algorithm = RSA
+
+#
+# Specify the client log level (default is WARN)
+# 0: ERROR
+# 1: WARN
+# 2: INFO
+# 3: DEBUG
+# 4: TRACE
+#
+#logLevel = 1
+
+#
+# Specify an additional welcome banner to be displayed when a user logs into the server.
+#
+# welcomeBanner =
+
+#
+# Defines the completion mode on the Karaf shell console. The possible values are:
+# - GLOBAL: it's the same behavior as in previous Karaf releases. The completion displays all commands and all aliases
+# ignoring if you are in a subshell or not.
+# - FIRST: the completion displays all commands and all aliases only when you are not in a subshell. When you are
+# in a subshell, the completion displays only the commands local to the subshell.
+# - SUBSHELL: the completion displays only the subshells on the root level. When you are in a subshell, the completion
+# displays only the commands local to the subshell.
+# This property define the default value when you use the Karaf shell console.
+# You can change the completion mode directly in the shell console, using shell:completion command.
+#
+completionMode = GLOBAL
+
+#
+# Override allowed SSH cipher algorithms.
+# Default: aes128-ctr,arcfour128,aes128-cbc,3des-cbc,blowfish-cbc
+#
+# ciphers = aes128-ctr,arcfour128,aes128-cbc,3des-cbc,blowfish-cbc
+
+#
+# Override allowed SSH HMAC algorithms.
+# Default: hmac-sha2-512,hmac-sha2-256,hmac-sha1
+#
+# macs = hmac-sha2-512,hmac-sha2-256,hmac-sha1
+
+#
+# Override allowed SSH key exchange algorithms.
+# Default: diffie-hellman-group-exchange-sha256,ecdh-sha2-nistp521,ecdh-sha2-nistp384,ecdh-sha2-nistp256,diffie-hellman-group-exchange-sha1,diffie-hellman-group1-sha1
+#
+# kexAlgorithms = diffie-hellman-group-exchange-sha256,ecdh-sha2-nistp521,ecdh-sha2-nistp384,ecdh-sha2-nistp256,diffie-hellman-group-exchange-sha1,diffie-hellman-group1-sha1
+
+#
+# Override moduli-url.
+# Default: moduli-url not specified to use the internal one from SSHD
+#
+# moduli-url = external moduli-url users wanna use
+
+
diff --git a/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/etc/org.ops4j.pax.logging.cfg b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/etc/org.ops4j.pax.logging.cfg
new file mode 100644
index 0000000000..ec0b7737fc
--- /dev/null
+++ b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/etc/org.ops4j.pax.logging.cfg
@@ -0,0 +1,105 @@
+################################################################################
+#
+# 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.
+#
+################################################################################
+
+# Colors for log level rendering
+color.fatal = bright red
+color.error = bright red
+color.warn = bright yellow
+color.info = bright green
+color.debug = cyan
+color.trace = cyan
+
+# Common pattern layout for appenders
+log4j2.pattern = %d{ISO8601} | %-5p | %-16t | %-32c{1} | %X{bundle.id} - %X{bundle.name} - %X{bundle.version} | %m%n
+log4j2.out.pattern = \u001b[90m%d{HH:mm:ss\.SSS}\u001b[0m %highlight{%-5level}{FATAL=${color.fatal}, ERROR=${color.error}, WARN=${color.warn}, INFO=${color.info}, DEBUG=${color.debug}, TRACE=${color.trace}} \u001b[90m[%t]\u001b[0m %msg%n%throwable
+
+
+# Root logger
+log4j2.rootLogger.level = INFO
+# uncomment to use asynchronous loggers, which require mvn:com.lmax/disruptor/3.3.2 library
+#log4j2.rootLogger.type = asyncRoot
+#log4j2.rootLogger.includeLocation = false
+log4j2.rootLogger.appenderRef.RollingFile.ref = RollingFile
+log4j2.rootLogger.appenderRef.PaxOsgi.ref = PaxOsgi
+log4j2.rootLogger.appenderRef.Console.ref = Console
+log4j2.rootLogger.appenderRef.Console.filter.threshold.type = ThresholdFilter
+log4j2.rootLogger.appenderRef.Console.filter.threshold.level = ${karaf.log.console:-OFF}
+
+# Loggers configuration
+
+# SSHD logger
+log4j2.logger.sshd.name = org.apache.sshd
+log4j2.logger.sshd.level = INFO
+
+# Spifly logger
+log4j2.logger.spifly.name = org.apache.aries.spifly
+log4j2.logger.spifly.level = WARN
+
+# Security audit logger
+log4j2.logger.audit.name = audit
+log4j2.logger.audit.level = TRACE
+log4j2.logger.audit.additivity = false
+log4j2.logger.audit.appenderRef.AuditRollingFile.ref = AuditRollingFile
+
+# Appenders configuration
+
+# Console appender not used by default (see log4j2.rootLogger.appenderRefs)
+log4j2.appender.console.type = Console
+log4j2.appender.console.name = Console
+log4j2.appender.console.layout.type = PatternLayout
+log4j2.appender.console.layout.pattern = ${log4j2.out.pattern}
+
+# Rolling file appender
+log4j2.appender.rolling.type = RollingRandomAccessFile
+log4j2.appender.rolling.name = RollingFile
+log4j2.appender.rolling.fileName = ${karaf.data}/log/karaf.log
+log4j2.appender.rolling.filePattern = ${karaf.data}/log/karaf.log.%i
+# uncomment to not force a disk flush
+#log4j2.appender.rolling.immediateFlush = false
+log4j2.appender.rolling.append = true
+log4j2.appender.rolling.layout.type = PatternLayout
+log4j2.appender.rolling.layout.pattern = ${log4j2.pattern}
+log4j2.appender.rolling.policies.type = Policies
+log4j2.appender.rolling.policies.size.type = SizeBasedTriggeringPolicy
+log4j2.appender.rolling.policies.size.size = 16MB
+
+# Audit file appender
+log4j2.appender.audit.type = RollingRandomAccessFile
+log4j2.appender.audit.name = AuditRollingFile
+log4j2.appender.audit.fileName = ${karaf.data}/log/security.log
+log4j2.appender.audit.filePattern = ${karaf.data}/log/security-%i.log
+log4j2.appender.audit.append = true
+log4j2.appender.audit.layout.type = PatternLayout
+log4j2.appender.audit.layout.pattern = %m%n
+log4j2.appender.audit.policies.type = Policies
+log4j2.appender.audit.policies.size.type = SizeBasedTriggeringPolicy
+log4j2.appender.audit.policies.size.size = 8MB
+
+# OSGi appender
+log4j2.appender.osgi.type = PaxOsgi
+log4j2.appender.osgi.name = PaxOsgi
+log4j2.appender.osgi.filter = *
+
+# help with identification of maven-related problems with pax-url-aether
+#log4j2.logger.aether.name = shaded.org.eclipse.aether
+#log4j2.logger.aether.level = TRACE
+#log4j2.logger.http-headers.name = shaded.org.apache.http.headers
+#log4j2.logger.http-headers.level = DEBUG
+#log4j2.logger.maven.name = org.ops4j.pax.url.mvn
+#log4j2.logger.maven.level = TRACE
diff --git a/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/etc/org.ops4j.pax.url.mvn.cfg b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/etc/org.ops4j.pax.url.mvn.cfg
new file mode 100644
index 0000000000..8f8ddeb777
--- /dev/null
+++ b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/etc/org.ops4j.pax.url.mvn.cfg
@@ -0,0 +1,146 @@
+################################################################################
+#
+# 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.
+#
+################################################################################
+
+#
+# see: https://ops4j1.jira.com/wiki/display/paxurl/Aether+Configuration
+#
+
+# If set to true, the following property will not allow any certificate to be used
+# when accessing Maven repositories through SSL
+#
+org.ops4j.pax.url.mvn.certificateCheck=true
+
+#
+# Path to the local Maven settings file.
+# The repositories defined in this file will be automatically added to the list
+# of default repositories if the 'org.ops4j.pax.url.mvn.repositories' property
+# below is not set.
+# The following locations are checked for the existence of the settings.xml file
+# * 1. looks for the specified url
+# * 2. if not found looks for ${user.home}/.m2/settings.xml
+# * 3. if not found looks for ${maven.home}/conf/settings.xml
+# * 4. if not found looks for ${M2_HOME}/conf/settings.xml
+#
+# Properties prefixed with "org.ops4j.pax.url.mvn." have
+# higher priority except <proxies> element. HTTP proxies should be configured in
+# settings file
+#org.ops4j.pax.url.mvn.settings=
+
+#
+# Path to the local Maven repository which is used to avoid downloading
+# artifacts when they already exist locally.
+# The value of this property will be extracted from the settings.xml file
+# above, or defaulted to:
+# System.getProperty( "user.home" ) + "/.m2/repository"
+# leaving this option commented makes the system dependent on external
+# configuration, which is not always desired
+# "localRepository" is the target location for artifacts downloaded from
+# "remote repositories"
+#org.ops4j.pax.url.mvn.localRepository=
+
+#
+# Default this to false. It's just weird to use undocumented repos
+# "false" means that http://repo1.maven.org/maven2@id=central won't be
+# implicitly used as remote repository
+#
+org.ops4j.pax.url.mvn.useFallbackRepositories=false
+
+#
+# Comma separated list of repositories scanned when resolving an artifact.
+# list of repositories searched in the first place, should contain
+# ${runtime.home}/${karaf.default.repository}.
+# if "org.ops4j.pax.url.mvn.localRepository" is defined and it's not
+# ~/.m2/repository, it's recommended (at least for dev purposes) to add
+# ~/.m2/repository to defaultRepositories
+# each of these repositories is checked by aether as "local repository". if
+# artifact isn't found, "repositories" are searched next
+#
+# Those repositories will be checked before iterating through the
+# below list of repositories and even before the local repository
+# A repository url can be appended with zero or more of the following flags:
+# @snapshots : the repository contains snaphots
+# @noreleases : the repository does not contain any released artifacts
+#
+# The following property value will add the system folder as a repo.
+#
+org.ops4j.pax.url.mvn.defaultRepositories=\
+ ${karaf.home.uri}${karaf.default.repository}@id=system.repository@snapshots, \
+ ${karaf.data.uri}kar@id=kar.repository@multi@snapshots, \
+ ${karaf.base.uri}${karaf.default.repository}@id=child.system.repository@snapshots
+
+#
+# if "defaultLocalRepoAsRemote" is set to *any* value, localRepository will be
+# added to the list of remote repositories being searched for artifacts
+#
+#org.ops4j.pax.url.mvn.defaultLocalRepoAsRemote = true
+
+#
+# Comma separated list of repositories scanned when resolving an artifact.
+# list of repositories searched after resolution fails for "defaultRepositories"
+# These are true remote repositories accessed using maven/aether/wagon
+# mechanisms. If any repository contains required artifact, it is then written
+# to "localRepository"
+#
+# if this list is _prepended_ with '+' sign, all repositories from active
+# profiles defined in effective settings.xml file will be _appended_ to this
+# list
+# The default list includes the following repositories:
+# http://repo1.maven.org/maven2@id=central
+# http://repository.apache.org/content/groups/snapshots-group@id=apache@snapshots@noreleases
+# https://oss.sonatype.org/content/repositories/snapshots@id=sonatype.snapshots.deploy@snapshots@noreleases
+# https://oss.sonatype.org/content/repositories/ops4j-snapshots@id=ops4j.sonatype.snapshots.deploy@snapshots@noreleases
+# A repository url can be appended with zero or more of the following flags:
+# @snapshots : the repository contains snapshots
+# @noreleases : the repository does not contain any released artifacts
+# @id=repository.id : the id for the repository, just like in the
+# settings.xml this is optional but recommended
+#
+org.ops4j.pax.url.mvn.repositories= \
+ http://repo1.maven.org/maven2@id=central, \
+ http://repository.apache.org/content/groups/snapshots-group@id=apache@snapshots@noreleases, \
+ https://oss.sonatype.org/content/repositories/ops4j-snapshots@id=ops4j.sonatype.snapshots.deploy@snapshots@noreleases
+
+#
+# Global policies override repository-specific settings (@checksum=..., @update=..., @releasesUpdate=..., ...)
+#
+#org.ops4j.pax.url.mvn.globalUpdatePolicy = daily
+#org.ops4j.pax.url.mvn.globalChecksumPolicy = warn
+
+#
+# socket and connection configuration (pax-url-aether 2.5.0)
+#
+# default value for connection and read timeouts, when socket.readTimeout and socket.connectionTimeout
+# are not specified
+org.ops4j.pax.url.mvn.timeout = 5000
+# timeout in ms when establishing http connection during artifact resolution
+org.ops4j.pax.url.mvn.socket.connectionTimeout = 5000
+# timeout in ms when reading data after connecting to remote repository
+org.ops4j.pax.url.mvn.socket.readTimeout = 30000
+# SO_KEEPALIVE option for sockets, defaults to false
+org.ops4j.pax.url.mvn.socket.keepAlive = false
+# SO_LINGER option for sockets, defaults to -1
+org.ops4j.pax.url.mvn.socket.linger = -1
+# SO_REUSEADDR option for sockets, defaults to false
+org.ops4j.pax.url.mvn.socket.reuseAddress = false
+# TCP_NODELAY option for sockets, defaults to true
+org.ops4j.pax.url.mvn.socket.tcpNoDelay = true
+# Configure buffer size for HTTP connections (output and input buffers), defaults to 8192 bytes
+org.ops4j.pax.url.mvn.connection.bufferSize = 8192
+# Number of connection retries after failure is detected in http client. httpclient uses default value "3"
+org.ops4j.pax.url.mvn.connection.retryCount = 3
diff --git a/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/etc/org.ops4j.pax.web.cfg b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/etc/org.ops4j.pax.web.cfg
new file mode 100644
index 0000000000..8c78c5dbc3
--- /dev/null
+++ b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/etc/org.ops4j.pax.web.cfg
@@ -0,0 +1,6 @@
+
+org.osgi.service.http.port=8181
+javax.servlet.context.tempdir=${karaf.data}/pax-web-jsp
+org.ops4j.pax.web.config.file=${karaf.etc}/jetty.xml
+org.apache.karaf.features.configKey = org.ops4j.pax.web
+
diff --git a/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/etc/profile.cfg b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/etc/profile.cfg
new file mode 100644
index 0000000000..9a94f1456f
--- /dev/null
+++ b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/etc/profile.cfg
@@ -0,0 +1,38 @@
+#
+# Profile generated by Karaf Assembly Builder
+#
+
+# Parent profiles
+attribute.parents = generated-startup generated-boot generated-installed
+
+# Attributes
+attribute.overlay = true
+
+# Feature XML repositories
+repository.mvn\:org.apache.karaf.features/standard/4.2.1/xml/features = mvn:org.apache.karaf.features/standard/4.2.1/xml/features
+repository.mvn\:org.apache.karaf.features/framework/4.2.1/xml/features = mvn:org.apache.karaf.features/framework/4.2.1/xml/features
+repository.mvn\:org.apache.karaf.features/spring/4.2.1/xml/features = mvn:org.apache.karaf.features/spring/4.2.1/xml/features
+repository.mvn\:org.apache.karaf.features/enterprise/4.2.1/xml/features = mvn:org.apache.karaf.features/enterprise/4.2.1/xml/features
+
+# Features
+feature.framework = framework
+feature.eventadmin = eventadmin
+feature.wrap = wrap
+feature.shell = shell
+feature.feature = feature
+feature.jaas = jaas
+feature.ssh = ssh
+feature.management = management
+feature.bundle = bundle
+feature.config = config
+feature.deployer = deployer
+feature.diagnostic = diagnostic
+feature.instance = instance
+feature.kar = kar
+feature.log = log
+feature.package = package
+feature.service = service
+feature.system = system
+feature.wrapper = wrapper
+feature.aries-blueprint = aries-blueprint
+feature.shell-compat = shell-compat
diff --git a/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/etc/scripts/shell.completion.script b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/etc/scripts/shell.completion.script
new file mode 100644
index 0000000000..77856338b8
--- /dev/null
+++ b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/etc/scripts/shell.completion.script
@@ -0,0 +1,271 @@
+//
+// 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.
+//
+// This script is run each time a shell is created.
+// You can define here closures or variables that will be available
+// in each session.
+//
+
+__option_not_present = {
+ res = true
+ opts = $argv
+ each $opts {
+ arg = $it
+ each ($.commandLine words) {
+ if { ($it toString) equals ($arg toString) } {
+ res = false
+ }
+ }
+ }
+ $res
+}
+
+__set_unset_arguments = {
+ is_setopt = (($.commandLine words) get 0) equals "setopt"
+ enums = ((__load_class 'org.jline.reader.LineReader$Option') enumConstants)
+ candidates = new ArrayList
+ each $enums {
+ name = ${(GL)it/_/-}
+ is_set = ($.reader isSet $it)
+ neg = %(( if(is_setopt, is_set, not(is_set)) ))
+ if { $neg } {
+ name = "no-${name}"
+ }
+ if { not { (($.commandLine words) subList 1 ($.commandLine wordIndex)) contains $name } } {
+ $candidates add (new org.jline.reader.Candidate $name $name (if { $neg } { "unset" } { "set" }) null null null true)
+ }
+ }
+ $candidates
+}
+
+jlineReader = $.reader
+if { %(jlineReader != null) } {
+
+ complete -c shell:complete -e
+ complete -c shell:complete -d "Edit command specific completions"
+ complete -c shell:complete -s c -l command --description "Command to add completion to" -n '__option_not_present -c --command' -a '$.commands'
+ complete -c shell:complete -s s -l short-option --description "Posix-style option to complete" -n '__option_not_present -s --short-option'
+ complete -c shell:complete -s l -l long-option --description "GNU-style option to complete" -n '__option_not_present -l --long-option'
+ complete -c shell:complete -s a -l arguments --description "A list of possible arguments" -n '__option_not_present -a --argument'
+ complete -c shell:complete -s d -l description --description "Description of this completions" -n '__option_not_present -d --description'
+ complete -c shell:complete -s h -l help --description "Display help and exit" -n '__option_not_present -h --help'
+ complete -c shell:complete -s n -l condition --description "The completion should only be used if the specified command has a zero exit status" -n '__option_not_present -n --condition'
+ complete -c shell:complete -s e -l erase --description "Remove completion" -n '__option_not_present -e --erase'
+
+ complete -c shell:history -e
+ complete -c shell:history -d "Show and manipulate command history"
+ complete -c shell:history -l clear --description "Clear history" -n '__option_not_present --clear'
+ complete -c shell:history -l save --description "Save history" -n '__option_not_present --save'
+
+ complete -c shell:setopt -e
+ complete -c shell:setopt -d "Set or view set shell options"
+ complete -c shell:setopt -a '__set_unset_arguments'
+
+ complete -c shell:unsetopt -e
+ complete -c shell:unsetopt -d "Unset or view unset shell options"
+ complete -c shell:unsetopt -a '__set_unset_arguments'
+
+ complete -c shell:cat -e
+ complete -c shell:cat -d "Concatenate and print files"
+ complete -c shell:cat -s n "Number the output lines, starting at 1"
+ complete -c shell:cat -a '__files'
+
+ complete -c shell:pwd -e
+ complete -c shell:pwd -d "Get current directory"
+
+ complete -c shell:ls -e
+ complete -c shell:ls -d "List files"
+
+ complete -c shell:cd -e
+ complete -c shell:cd -d "Change current directory"
+ complete -c shell:cd -a 'wi = ($.commandLine wordIndex); if { %(wi==1) } { __directories } { [ ] }'
+
+ complete -c shell:sleep -e
+ complete -c shell:sleep -d "Pause execution for the specified amount of time"
+
+ complete -c shell:echo -e
+ complete -c shell:echo -d "Write arguments to the standard output"
+ complete -c shell:echo -s n -d "No trailing new line"
+
+ complete -c shell:grep -e
+ complete -c shell:grep -d "File pattern searcher"
+ # TODO
+
+ complete -c shell:sort -e
+ complete -c shell:sort -d "Sort lines of text files"
+ # TODO
+
+ complete -c shell:gosh -e
+ complete -c shell:gosh -d "Execute script with arguments in a new session"
+ # TODO
+
+ complete -c shell:sh -e
+ complete -c shell:sh -d "Execute script with arguments in a new session"
+ # TODO
+
+ complete -c shell:source -e
+ complete -c shell:source -d "Execute script with arguments"
+ # TODO
+
+ # TODO: format getopt new set tac type addcommand removeCommand eval
+
+ complete -c shell:break -e
+ complete -c shell:break -d "Break from a loop"
+
+ complete -c shell:continue -e
+ complete -c shell:continue -d "Continue to next iteration in a loop"
+
+ complete -c shell:each -e
+ complete -c shell:each -d "Loop and execute script on the specified elements"
+
+ complete -c shell:if -e
+ complete -c shell:if -d "Conditionaly execute a script"
+
+ complete -c shell:new -e
+ complete -c shell:new -d "Creates new instance of the given java class"
+
+ complete -c shell:not -e
+ complete -c shell:not -d "Negates the result of a script"
+
+ complete -c shell:throw -e
+ complete -c shell:throw -d "Throws an exception"
+
+ complete -c shell:try -e
+ complete -c shell:try -d "Try executing a script and catch any exception"
+
+ complete -c shell:until -e
+ complete -c shell:until -d "Loop and execute script until a condition is satisfied"
+
+ complete -c shell:while -e
+ complete -c shell:while -d "Loop and execute script while a condition is satisfied"
+
+ complete -c shell:less -e
+ complete -c shell:less -d "File pager"
+ complete -c shell:less -s e -l quit-at-eof --description "Exit on second EOF"
+ complete -c shell:less -s E -l QUIT-AT-EOF --description "Exit on EOF"
+ complete -c shell:less -s q -l quiet -l silent --description "Silent mode"
+ complete -c shell:less -s Q -l QUIET -l SILENT --description "Completely silent"
+ complete -c shell:less -s S -l chop-long-lines --description "Do not fold long lines"
+ complete -c shell:less -s i -l ignore-case --description "Search ignores lowercase case"
+ complete -c shell:less -s I -l IGNORE-CASE --description "Search ignores all case"
+ complete -c shell:less -s x -l tabs --description "Set tab stops"
+ complete -c shell:less -s N -l LINE-NUMBERS --description "Display line number for each line"
+ complete -c shell:less -a '__files'
+
+ complete -c shell:nano -e
+ complete -c shell:nano -d "File editor"
+ complete -c shell:nano -a '__files'
+
+ complete -c shell:keymap -e
+ complete -c shell:keymap -d "Manipulate keymaps"
+ complete -c shell:keymap -s N --description "Create a new keymap" -n '__option_not_present -N -d -D -l -r -s -A'
+ complete -c shell:keymap -s d --description "Delete existing keymaps and reset to default state" -n '__option_not_present -N -d -D -l -r -s -A'
+ complete -c shell:keymap -s D --description "Delete named keymaps" -n '__option_not_present -N -d -D -l -r -s -A'
+ complete -c shell:keymap -s l --description "List existing keymap names" -n '__option_not_present -N -d -D -l -r -s -A'
+ complete -c shell:keymap -s r --description "Unbind specified in-strings" -n '__option_not_present -N -d -D -l -r -s -A'
+ complete -c shell:keymap -s s --description "Bind each in-string to each out-string" -n '__option_not_present -N -d -D -l -r -s -A'
+ complete -c shell:keymap -s A --description "Create alias to keymap" -n '__option_not_present -N -d -D -l -r -s -A'
+ complete -c shell:keymap -s e --description "Select emacs keymap and bind it to main" -n '__option_not_present -e -a -v -M'
+ complete -c shell:keymap -s v --description "Select viins keymap and bind it to main" -n '__option_not_present -e -a -v -M'
+ complete -c shell:keymap -s a --description "Select vicmd keymap" -n '__option_not_present -e -a -v -M'
+ complete -c shell:keymap -s M --description "Specify keymap to select" -n '__option_not_present -e -a -v -M' -a '(keymap -l | tac) split " "'
+ complete -c shell:keymap -s R --description "Interpret in-strings as ranges"
+ complete -c shell:keymap -s p --description "List bindings which have given key sequence as a a prefix"
+ complete -c shell:keymap -s L --description "Output in form of keymap commands"
+
+ complete -c shell:widget -e
+ complete -c shell:widget -d "Manipulate widgets"
+ complete -c shell:widget -s N --description "Create a new widget" -n '__option_not_present -N -A -D -U -l'
+ complete -c shell:widget -s A --description "Create alias to widget" -n '__option_not_present -N -A -D -U -l'
+ complete -c shell:widget -s D --description "Delete widgets" -n '__option_not_present -N -A -D -U -l'
+ complete -c shell:widget -s U --description "Push characters to the stack" -n '__option_not_present -N -A -D -U -l'
+ complete -c shell:widget -s l --description "List user-defined widgets" -n '__option_not_present -N -A -D -U -l'
+ complete -c shell:widget -s a --description "With -l, list all widgets" -n '__option_not_present -l'
+
+ complete -c shell:bg -e
+ complete -c shell:bg -d "Put job in background"
+
+ complete -c shell:fg -e
+ complete -c shell:fg -d "Put job in foreground"
+
+ complete -c shell:jobs -e
+ complete -c shell:jobs -d "List jobs"
+
+ complete -c shell:clear -e
+ complete -c shell:clear -d "Clear screen"
+
+ complete -c shell:head -e
+ complete -c shell:head -d "Displays first lines of file"
+ complete -c shell:head -s n -l lines --description "Print line counts"
+ complete -c shell:head -s c -l bytes --description "Print byte counts"
+ complete -c shell:head -a '__files'
+
+ complete -c shell:tail -e
+ complete -c shell:tail -d "Displays last lines of file"
+ complete -c shell:tail -s q -l quiet --description "Suppress headers when printing multiple sources"
+ complete -c shell:tail -s f -l follow --description "Do not stop at end of file"
+ complete -c shell:tail -s F -l FOLLOW --description "Follow and check for file renaming or rotation"
+ complete -c shell:tail -s n -l lines --description "Number of lines to print"
+ complete -c shell:tail -s c -l bytes --description "Number of bytes to print"
+ complete -c shell:tail -a '__files'
+
+ complete -c shell:date -e
+ complete -c shell:date -d "Display date and time"
+ complete -c shell:date -s u --description "Use UTC"
+ complete -c shell:date -s r --description "Print the date represented by 'seconds' since January 1, 1970"
+ complete -c shell:date -s v --description "Adjust date"
+ complete -c shell:date -s f --description "Use 'input_fmt' to parse 'new_date'"
+
+ complete -c shell:wc -e
+ complete -c shell:wc -d "Word, line, character, and byte count"
+ complete -c shell:wc -s n -l lines --description "Print line count"
+ complete -c shell:wc -s c -l bytes --description "Print byte count"
+ complete -c shell:wc -s m -l chars --description "Print character count"
+ complete -c shell:wc -s w -l words --description "Print word count"
+ complete -c shell:wc -a '__files'
+
+ __get_scr_components = {
+ list = [ ]
+ scrref = ($.context getServiceReference org.osgi.service.component.runtime.ServiceComponentRuntime)
+ scr = ($.context getService $scrref)
+ each ($scr getComponentDescriptionDTOs ($.context bundles)) {
+ $list add ((($it getClass) getField "name") get $it)
+ }
+ $.context ungetService $scrref
+ $list
+ }
+
+ complete -c scr:config -e
+ complete -c scr:config -d "Show the current SCR configuration"
+
+ complete -c scr:disable -e
+ complete -c scr:disable -d "Disable an enabled component"
+ complete -c scr:disable -a '__get_scr_components'
+
+ complete -c scr:enable -e
+ complete -c scr:enable -d "Enable an disabled component"
+ complete -c scr:enable -a '__get_scr_components'
+
+ complete -c scr:info -e
+ complete -c scr:info -d "Dump information of a component or component configuration"
+ complete -c scr:info -a '__get_scr_components'
+
+ complete -c scr:list -e
+ complete -c scr:list -d "List component configurations of a specific bundle"
+
+}
diff --git a/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/etc/shell.init.script b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/etc/shell.init.script
new file mode 100644
index 0000000000..2dff99c4ba
--- /dev/null
+++ b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/etc/shell.init.script
@@ -0,0 +1,66 @@
+//
+// 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.
+//
+// This script is run each time a shell is created.
+// You can define here closures or variables that will be available
+// in each session.
+//
+ld = { log:display $args } ;
+lde = { log:exception-display $args } ;
+la = { bundle:list -t 0 $args } ;
+ls = { service:list $args } ;
+cl = { config:list "(service.pid=$args)" } ;
+halt = { system:shutdown -h -f $args } ;
+help = { *:help $args | more } ;
+man = { help $args } ;
+log:list = { log:get ALL } ;
+service:get = { $.context getService ($.context getServiceReference $args) };
+
+env = { shell:set $args }
+edit = { shell:nano $args }
+more = { shell:less -F $args }
+
+\#prompt = { "${USER}@${APPLICATION}(${SUBSHELL})> "?};
+
+__load_class = {
+ (($.reader class) classLoader) loadClass $1
+}
+
+// make sure that we catch exceptions
+// as they do occur if the session is headless / non-interactive
+jlineReader = $.reader
+if { %(jlineReader != null) } {
+
+ # On 256 colors terminal, add a right prompt
+ max_colors = ($.jline.terminal getNumericCapability max_colors)
+ if { %(max_colors >= 256) } {
+ __rprompt_formatter = (((__load_class java.text.SimpleDateFormat) getConstructor (__load_class java.lang.String)) newInstance \'$'\u001B\[90m'\'HH:mm:ss)
+ __date_class = (__load_class java.util.Date)
+// Do not use right prompt by default
+// \#rprompt = { $__rprompt_formatter format ($__date_class newInstance) }
+ }
+
+ setopt group
+ setopt auto-fresh-line
+ unsetopt insert-tab
+ keymap "^[OA" up-line-or-search
+ keymap "^[[A" up-line-or-search
+ keymap "^[OB" down-line-or-search
+ keymap "^[[B" down-line-or-search
+
+}
diff --git a/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/etc/startup.properties b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/etc/startup.properties
new file mode 100644
index 0000000000..2193137d66
--- /dev/null
+++ b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/etc/startup.properties
@@ -0,0 +1,13 @@
+# Bundles to be started on startup, with startlevel
+mvn\:org.apache.karaf.features/org.apache.karaf.features.extension/4.2.1 = 1
+mvn\:org.apache.felix/org.apache.felix.metatype/1.2.0 = 5
+mvn\:org.apache.karaf.services/org.apache.karaf.services.eventadmin/4.2.1 = 5
+mvn\:org.ops4j.pax.url/pax-url-aether/2.5.4 = 5
+mvn\:org.fusesource.jansi/jansi/1.17.1 = 8
+mvn\:org.ops4j.pax.logging/pax-logging-api/1.10.1 = 8
+mvn\:org.ops4j.pax.logging/pax-logging-log4j2/1.10.1 = 8
+mvn\:org.apache.felix/org.apache.felix.coordinator/1.0.2 = 9
+mvn\:org.apache.felix/org.apache.felix.configadmin/1.9.4 = 10
+mvn\:org.apache.felix/org.apache.felix.fileinstall/3.6.4 = 11
+mvn\:org.apache.karaf.features/org.apache.karaf.features.core/4.2.1 = 15
+mvn\:org.apache.servicemix.bundles/org.apache.servicemix.bundles.jaxb-impl/2.2.11_1 = 20
diff --git a/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/etc/system.properties b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/etc/system.properties
new file mode 100644
index 0000000000..24aae4bbe2
--- /dev/null
+++ b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/etc/system.properties
@@ -0,0 +1,156 @@
+################################################################################
+#
+# 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 properties defined in this file will be made available through system
+# properties at the very beginning of the Karaf's boot process.
+#
+
+# Properties file inclusions (as a space separated list of relative paths)
+# Included files will override the values specified in this file
+${optionals} = custom.system.properties
+
+# Log level when the pax-logging service is not available
+# This level will only be used while the pax-logging service bundle
+# is not fully available.
+# To change log levels, please refer to the org.ops4j.pax.logging.cfg file
+# instead.
+org.ops4j.pax.logging.DefaultServiceLog.level = ERROR
+
+#
+# Name of this Karaf instance.
+#
+karaf.name = root
+
+#
+# Default repository where bundles will be loaded from before using
+# other Maven repositories. For the full Maven configuration, see
+# the org.ops4j.pax.url.mvn.cfg file.
+#
+karaf.default.repository = system
+
+#
+# Location of a shell script that will be run when starting a shell
+# session. This script can be used to create aliases and define
+# additional commands.
+#
+# NB: ${karaf.etc} is implicitly added to the path, don't use absolute path here
+#
+karaf.shell.init.script = shell.init.script,scripts/*.script
+
+#
+# Sets the maximum size of the shell command history. If not set,
+# defaults to 500 entries. Setting to 0 will disable history.
+#
+# karaf.shell.history.maxSize = 0
+
+#
+# Sets the maximum size of the local shell command history file. If not set,
+# defaults to 10000 entries.
+#
+# karaf.shell.history.file.maxSize = 10000
+
+#
+# Deletes the entire karaf.data directory at every start
+#
+karaf.clean.all = false
+
+#
+# Deletes the karaf.data/cache directory at every start
+#
+karaf.clean.cache = false
+
+#
+# User name for the Karaf local console
+#
+karaf.local.user = karaf
+
+#
+# Roles to use when for the default user in the local Karaf console.
+#
+# The syntax is the following:
+# [classname:]principal
+# where classname is the class name of the principal object
+# (defaults to org.apache.karaf.jaas.modules.RolePrincipal)
+# and principal is the name of the principal of that class
+# (defaults to instance).
+#
+karaf.local.roles = admin,manager,viewer,systembundles
+
+#
+# Set this empty property to avoid errors when validating xml documents.
+#
+xml.catalog.files =
+
+#
+# Specs options
+#
+org.apache.servicemix.specs.debug = false
+org.apache.servicemix.specs.timeout = 0
+org.apache.karaf.specs.debug = false
+org.apache.karaf.specs.timeout = 0
+
+#
+# Settings for the OSGi 4.3 Weaving
+# By default, we will not weave any classes. Change this setting to include classes
+# that you application needs to have woven.
+#
+org.apache.aries.proxy.weaving.enabled = none
+# Classes not to weave - Aries default + Xerces which is known to have issues.
+org.apache.aries.proxy.weaving.disabled = org.objectweb.asm.*,org.slf4j.*,org.apache.log4j.*,javax.*,org.apache.xerces.*
+
+#
+# By default, only Karaf shell commands are secured, but additional services can be
+# secured by expanding this filter
+#
+karaf.secured.services = (&(osgi.command.scope=*)(osgi.command.function=*))
+
+#
+# By default, if there's no ACL policy for a certain karaf command, this command is allowed to access
+# without the RBAC. We can change this behavior by enable the following property, which means
+# if a karaf command has no corresponding ACL then access it must have one of the karaf.secured.command.compulsory.roles
+#
+#karaf.secured.command.compulsory.roles=admin
+
+#
+# Security properties
+#
+# To enable OSGi security, uncomment the properties below,
+# install the framework-security feature and restart.
+#
+#java.security.policy=${karaf.etc}/all.policy
+#org.osgi.framework.security=osgi
+#org.osgi.framework.trust.repositories=${karaf.etc}/trustStore.ks
+
+#
+# HA/Lock configuration
+#
+# Karaf uses a lock mechanism to know which instance is the master (HA)
+# The lock can be on the filesystem (default) or on a database.
+#
+# See http://karaf.apache.org/manual/latest/users-guide/failover.html for details.
+#
+# Even using a single instance, Karaf creates the lock file
+# You can specify the location of the lock file using the
+# karaf.lock.dir=/path/to/the/directory/containing/the/lock
+#
+# By default, the slave instances start but are passive.
+# If you want to prevent the slave instances startup, you can use
+# the karaf.lock.slave.block property (false by default):
+# karaf.lock.slave.block=true
diff --git a/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/etc/users.properties b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/etc/users.properties
new file mode 100644
index 0000000000..ace22826cc
--- /dev/null
+++ b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/etc/users.properties
@@ -0,0 +1,33 @@
+################################################################################
+#
+# 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.
+#
+################################################################################
+
+#
+# This file contains the users, groups, and roles.
+# Each line has to be of the format:
+#
+# USER=PASSWORD,ROLE1,ROLE2,...
+# USER=PASSWORD,_g_:GROUP,...
+# _g_\:GROUP=ROLE1,ROLE2,...
+#
+# All users, groups, and roles entered in this file are available after Karaf startup
+# and modifiable via the JAAS command group. These users reside in a JAAS domain
+# with the name "karaf".
+#
+karaf = karaf,_g_:admingroup
+_g_\:admingroup = group,admin,manager,viewer,systembundles,ssh
diff --git a/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/lib/README b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/lib/README
new file mode 100644
index 0000000000..9eca75a39d
--- /dev/null
+++ b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/lib/README
@@ -0,0 +1,27 @@
+################################################################################
+#
+# 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.
+#
+################################################################################
+
+This directory is the standard Java classpath directory.
+Any jar in this folder will be part of the main classloader used to load Karaf.
+However, in OSGi, classes defined in these jars won't be available to other
+bundles unless one of the org.osgi.framework.system.packages.extra or
+org.osgi.framework.bootdelegation properties in the etc/config.properties file
+is modified to export or delegate the packages.
+Please refer to the OSGi Core Specification for more information on these
+properties and the OSGi classloading mechanism.
diff --git a/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/lib/boot/README b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/lib/boot/README
new file mode 100644
index 0000000000..b3a06ce373
--- /dev/null
+++ b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/lib/boot/README
@@ -0,0 +1,21 @@
+################################################################################
+#
+# 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.
+#
+################################################################################
+
+Any jar in this folder will be added to the classpath by the JVM and will be
+available to the Main class. Custom locking libraries can be added here.
diff --git a/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/lib/boot/activation-1.1.1.jar b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/lib/boot/activation-1.1.1.jar
new file mode 100644
index 0000000000..1b703ab283
--- /dev/null
+++ b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/lib/boot/activation-1.1.1.jar
Binary files differ
diff --git a/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/lib/boot/jaxb-api-2.3.0.jar b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/lib/boot/jaxb-api-2.3.0.jar
new file mode 100644
index 0000000000..0817c083ad
--- /dev/null
+++ b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/lib/boot/jaxb-api-2.3.0.jar
Binary files differ
diff --git a/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/lib/boot/jaxb-core-2.2.11.jar b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/lib/boot/jaxb-core-2.2.11.jar
new file mode 100644
index 0000000000..f3c84126ce
--- /dev/null
+++ b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/lib/boot/jaxb-core-2.2.11.jar
Binary files differ
diff --git a/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/lib/boot/jaxb-impl-2.2.11.jar b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/lib/boot/jaxb-impl-2.2.11.jar
new file mode 100644
index 0000000000..a5c5b23a5e
--- /dev/null
+++ b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/lib/boot/jaxb-impl-2.2.11.jar
Binary files differ
diff --git a/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/lib/boot/org.apache.karaf.diagnostic.boot-4.2.1.jar b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/lib/boot/org.apache.karaf.diagnostic.boot-4.2.1.jar
new file mode 100644
index 0000000000..5eb1775583
--- /dev/null
+++ b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/lib/boot/org.apache.karaf.diagnostic.boot-4.2.1.jar
Binary files differ
diff --git a/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/lib/boot/org.apache.karaf.jaas.boot-4.2.1.jar b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/lib/boot/org.apache.karaf.jaas.boot-4.2.1.jar
new file mode 100644
index 0000000000..d242c10c4d
--- /dev/null
+++ b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/lib/boot/org.apache.karaf.jaas.boot-4.2.1.jar
Binary files differ
diff --git a/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/lib/boot/org.apache.karaf.main-4.2.1.jar b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/lib/boot/org.apache.karaf.main-4.2.1.jar
new file mode 100644
index 0000000000..e66013176e
--- /dev/null
+++ b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/lib/boot/org.apache.karaf.main-4.2.1.jar
Binary files differ
diff --git a/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/lib/boot/org.osgi.core-6.0.0.jar b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/lib/boot/org.osgi.core-6.0.0.jar
new file mode 100644
index 0000000000..5f229a4c40
--- /dev/null
+++ b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/lib/boot/org.osgi.core-6.0.0.jar
Binary files differ
diff --git a/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/lib/endorsed/README b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/lib/endorsed/README
new file mode 100644
index 0000000000..0665a52041
--- /dev/null
+++ b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/lib/endorsed/README
@@ -0,0 +1,23 @@
+################################################################################
+#
+# 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.
+#
+################################################################################
+
+This directory is the Java endorsed directory.
+Any jar in this folder will be used to override classes defined by the JVM.
+For more information, see:
+ http://download.oracle.com/javase/6/docs/technotes/guides/standards/
diff --git a/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/lib/endorsed/org.apache.karaf.specs.java.xml-4.2.1.jar b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/lib/endorsed/org.apache.karaf.specs.java.xml-4.2.1.jar
new file mode 100644
index 0000000000..c1912f3258
--- /dev/null
+++ b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/lib/endorsed/org.apache.karaf.specs.java.xml-4.2.1.jar
Binary files differ
diff --git a/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/lib/endorsed/org.apache.karaf.specs.locator-4.2.1.jar b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/lib/endorsed/org.apache.karaf.specs.locator-4.2.1.jar
new file mode 100644
index 0000000000..abffa55d00
--- /dev/null
+++ b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/lib/endorsed/org.apache.karaf.specs.locator-4.2.1.jar
Binary files differ
diff --git a/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/lib/ext/README b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/lib/ext/README
new file mode 100644
index 0000000000..69d4540dbc
--- /dev/null
+++ b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/lib/ext/README
@@ -0,0 +1,23 @@
+################################################################################
+#
+# 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.
+#
+################################################################################
+
+This directory is the Java extension directory.
+Any jar in this folder will be used as a JVM extension.
+For more information, see
+ http://download.oracle.com/javase/6/docs/technotes/guides/extensions/specs.html
diff --git a/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/README b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/README
new file mode 100644
index 0000000000..fb619d55a6
--- /dev/null
+++ b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/README
@@ -0,0 +1,26 @@
+/*
+ * 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.
+ */
+
+This folder is the default repository where OSGi bundles will be loaded
+from before using other Maven repositories. Bundles are laid out as a
+Maven 2 repository.
+
+To change the default repository location, see the karaf.default.repository
+property in etc/system.properties.
+
+For the full Maven repository configuration, see the etc/org.ops4j.pax.url.mvn.cfg
+file.
diff --git a/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/apache/aries/blueprint/org.apache.aries.blueprint.api/1.0.1/org.apache.aries.blueprint.api-1.0.1.jar b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/apache/aries/blueprint/org.apache.aries.blueprint.api/1.0.1/org.apache.aries.blueprint.api-1.0.1.jar
new file mode 100644
index 0000000000..6e5f97c89b
--- /dev/null
+++ b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/apache/aries/blueprint/org.apache.aries.blueprint.api/1.0.1/org.apache.aries.blueprint.api-1.0.1.jar
Binary files differ
diff --git a/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/apache/aries/blueprint/org.apache.aries.blueprint.cm/1.2.0/org.apache.aries.blueprint.cm-1.2.0.jar b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/apache/aries/blueprint/org.apache.aries.blueprint.cm/1.2.0/org.apache.aries.blueprint.cm-1.2.0.jar
new file mode 100644
index 0000000000..15fda8aaeb
--- /dev/null
+++ b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/apache/aries/blueprint/org.apache.aries.blueprint.cm/1.2.0/org.apache.aries.blueprint.cm-1.2.0.jar
Binary files differ
diff --git a/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/apache/aries/blueprint/org.apache.aries.blueprint.core.compatibility/1.0.0/org.apache.aries.blueprint.core.compatibility-1.0.0.jar b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/apache/aries/blueprint/org.apache.aries.blueprint.core.compatibility/1.0.0/org.apache.aries.blueprint.core.compatibility-1.0.0.jar
new file mode 100644
index 0000000000..b4a21a411a
--- /dev/null
+++ b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/apache/aries/blueprint/org.apache.aries.blueprint.core.compatibility/1.0.0/org.apache.aries.blueprint.core.compatibility-1.0.0.jar
Binary files differ
diff --git a/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/apache/aries/blueprint/org.apache.aries.blueprint.core/1.9.0/org.apache.aries.blueprint.core-1.9.0.jar b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/apache/aries/blueprint/org.apache.aries.blueprint.core/1.9.0/org.apache.aries.blueprint.core-1.9.0.jar
new file mode 100644
index 0000000000..c45ec4a8f7
--- /dev/null
+++ b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/apache/aries/blueprint/org.apache.aries.blueprint.core/1.9.0/org.apache.aries.blueprint.core-1.9.0.jar
Binary files differ
diff --git a/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/apache/aries/jmx/org.apache.aries.jmx.api/1.1.5/org.apache.aries.jmx.api-1.1.5.jar b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/apache/aries/jmx/org.apache.aries.jmx.api/1.1.5/org.apache.aries.jmx.api-1.1.5.jar
new file mode 100644
index 0000000000..69b09fd86c
--- /dev/null
+++ b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/apache/aries/jmx/org.apache.aries.jmx.api/1.1.5/org.apache.aries.jmx.api-1.1.5.jar
Binary files differ
diff --git a/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/apache/aries/jmx/org.apache.aries.jmx.blueprint.api/1.2.0/org.apache.aries.jmx.blueprint.api-1.2.0.jar b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/apache/aries/jmx/org.apache.aries.jmx.blueprint.api/1.2.0/org.apache.aries.jmx.blueprint.api-1.2.0.jar
new file mode 100644
index 0000000000..007b907700
--- /dev/null
+++ b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/apache/aries/jmx/org.apache.aries.jmx.blueprint.api/1.2.0/org.apache.aries.jmx.blueprint.api-1.2.0.jar
Binary files differ
diff --git a/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/apache/aries/jmx/org.apache.aries.jmx.blueprint.core/1.2.0/org.apache.aries.jmx.blueprint.core-1.2.0.jar b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/apache/aries/jmx/org.apache.aries.jmx.blueprint.core/1.2.0/org.apache.aries.jmx.blueprint.core-1.2.0.jar
new file mode 100644
index 0000000000..9962d8a244
--- /dev/null
+++ b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/apache/aries/jmx/org.apache.aries.jmx.blueprint.core/1.2.0/org.apache.aries.jmx.blueprint.core-1.2.0.jar
Binary files differ
diff --git a/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/apache/aries/jmx/org.apache.aries.jmx.core/1.1.8/org.apache.aries.jmx.core-1.1.8.jar b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/apache/aries/jmx/org.apache.aries.jmx.core/1.1.8/org.apache.aries.jmx.core-1.1.8.jar
new file mode 100644
index 0000000000..e1a439a698
--- /dev/null
+++ b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/apache/aries/jmx/org.apache.aries.jmx.core/1.1.8/org.apache.aries.jmx.core-1.1.8.jar
Binary files differ
diff --git a/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/apache/aries/jmx/org.apache.aries.jmx.whiteboard/1.2.0/org.apache.aries.jmx.whiteboard-1.2.0.jar b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/apache/aries/jmx/org.apache.aries.jmx.whiteboard/1.2.0/org.apache.aries.jmx.whiteboard-1.2.0.jar
new file mode 100644
index 0000000000..e841b7222e
--- /dev/null
+++ b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/apache/aries/jmx/org.apache.aries.jmx.whiteboard/1.2.0/org.apache.aries.jmx.whiteboard-1.2.0.jar
Binary files differ
diff --git a/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/apache/aries/jpa/jpa-features/2.7.0/jpa-features-2.7.0-features.xml b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/apache/aries/jpa/jpa-features/2.7.0/jpa-features-2.7.0-features.xml
new file mode 100644
index 0000000000..3c24167385
--- /dev/null
+++ b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/apache/aries/jpa/jpa-features/2.7.0/jpa-features-2.7.0-features.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<features xmlns="http://karaf.apache.org/xmlns/features/v1.3.0" name="aries-jpa-2.7.0">
+ <feature name="jpa" description="OSGi Persistence Container" version="2.7.0">
+ <details>JPA implementation provided by Apache Aries JPA 2.x. NB: this feature doesn't provide the JPA engine, you have to install one by yourself (OpenJPA for instance)</details>
+ <bundle dependency="true">mvn:org.apache.aries.jpa.javax.persistence/javax.persistence_2.1/2.7.0</bundle>
+ <bundle dependency="true">mvn:org.apache.geronimo.specs/geronimo-jta_1.1_spec/1.1.1</bundle>
+ <bundle dependency="true">mvn:org.osgi/org.osgi.service.jdbc/1.0.0</bundle>
+ <bundle start-level="30" dependency="true">mvn:org.apache.felix/org.apache.felix.coordinator/1.0.2</bundle>
+ <bundle start-level="30">mvn:org.apache.aries.jpa/org.apache.aries.jpa.api/2.7.0</bundle>
+ <bundle start-level="30">mvn:org.apache.aries.jpa/org.apache.aries.jpa.container/2.7.0</bundle>
+ <bundle start-level="30">mvn:org.apache.aries.jpa/org.apache.aries.jpa.support/2.7.0</bundle>
+ <conditional>
+ <condition>aries-blueprint</condition>
+ <bundle start-level="30">mvn:org.apache.aries.jpa/org.apache.aries.jpa.blueprint/2.7.0</bundle>
+ </conditional>
+ <capability>
+ osgi.service;effective:=active;objectClass=javax.persistence.spi.PersistenceProvider
+ </capability>
+ </feature>
+</features>
diff --git a/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/apache/aries/org.apache.aries.util/1.1.3/org.apache.aries.util-1.1.3.jar b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/apache/aries/org.apache.aries.util/1.1.3/org.apache.aries.util-1.1.3.jar
new file mode 100644
index 0000000000..31311389fa
--- /dev/null
+++ b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/apache/aries/org.apache.aries.util/1.1.3/org.apache.aries.util-1.1.3.jar
Binary files differ
diff --git a/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/apache/aries/proxy/org.apache.aries.proxy/1.1.2/org.apache.aries.proxy-1.1.2.jar b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/apache/aries/proxy/org.apache.aries.proxy/1.1.2/org.apache.aries.proxy-1.1.2.jar
new file mode 100644
index 0000000000..7fc0c8fc73
--- /dev/null
+++ b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/apache/aries/proxy/org.apache.aries.proxy/1.1.2/org.apache.aries.proxy-1.1.2.jar
Binary files differ
diff --git a/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/apache/felix/org.apache.felix.configadmin/1.9.4/org.apache.felix.configadmin-1.9.4.jar b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/apache/felix/org.apache.felix.configadmin/1.9.4/org.apache.felix.configadmin-1.9.4.jar
new file mode 100644
index 0000000000..312338daf4
--- /dev/null
+++ b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/apache/felix/org.apache.felix.configadmin/1.9.4/org.apache.felix.configadmin-1.9.4.jar
Binary files differ
diff --git a/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/apache/felix/org.apache.felix.coordinator/1.0.2/org.apache.felix.coordinator-1.0.2.jar b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/apache/felix/org.apache.felix.coordinator/1.0.2/org.apache.felix.coordinator-1.0.2.jar
new file mode 100644
index 0000000000..cdb8c87a80
--- /dev/null
+++ b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/apache/felix/org.apache.felix.coordinator/1.0.2/org.apache.felix.coordinator-1.0.2.jar
Binary files differ
diff --git a/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/apache/felix/org.apache.felix.fileinstall/3.6.4/org.apache.felix.fileinstall-3.6.4.jar b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/apache/felix/org.apache.felix.fileinstall/3.6.4/org.apache.felix.fileinstall-3.6.4.jar
new file mode 100644
index 0000000000..88d70137c5
--- /dev/null
+++ b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/apache/felix/org.apache.felix.fileinstall/3.6.4/org.apache.felix.fileinstall-3.6.4.jar
Binary files differ
diff --git a/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/apache/felix/org.apache.felix.framework/5.6.10/org.apache.felix.framework-5.6.10.jar b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/apache/felix/org.apache.felix.framework/5.6.10/org.apache.felix.framework-5.6.10.jar
new file mode 100644
index 0000000000..71dbbefb80
--- /dev/null
+++ b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/apache/felix/org.apache.felix.framework/5.6.10/org.apache.felix.framework-5.6.10.jar
Binary files differ
diff --git a/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/apache/felix/org.apache.felix.metatype/1.2.0/org.apache.felix.metatype-1.2.0.jar b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/apache/felix/org.apache.felix.metatype/1.2.0/org.apache.felix.metatype-1.2.0.jar
new file mode 100644
index 0000000000..65c3927926
--- /dev/null
+++ b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/apache/felix/org.apache.felix.metatype/1.2.0/org.apache.felix.metatype-1.2.0.jar
Binary files differ
diff --git a/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/apache/felix/org.apache.felix.webconsole.plugins.event/1.1.8/org.apache.felix.webconsole.plugins.event-1.1.8.jar b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/apache/felix/org.apache.felix.webconsole.plugins.event/1.1.8/org.apache.felix.webconsole.plugins.event-1.1.8.jar
new file mode 100644
index 0000000000..4cd735f877
--- /dev/null
+++ b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/apache/felix/org.apache.felix.webconsole.plugins.event/1.1.8/org.apache.felix.webconsole.plugins.event-1.1.8.jar
Binary files differ
diff --git a/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/apache/karaf/bundle/org.apache.karaf.bundle.blueprintstate/4.2.1/org.apache.karaf.bundle.blueprintstate-4.2.1.jar b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/apache/karaf/bundle/org.apache.karaf.bundle.blueprintstate/4.2.1/org.apache.karaf.bundle.blueprintstate-4.2.1.jar
new file mode 100644
index 0000000000..5b96bee1ee
--- /dev/null
+++ b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/apache/karaf/bundle/org.apache.karaf.bundle.blueprintstate/4.2.1/org.apache.karaf.bundle.blueprintstate-4.2.1.jar
Binary files differ
diff --git a/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/apache/karaf/bundle/org.apache.karaf.bundle.core/4.2.1/org.apache.karaf.bundle.core-4.2.1.jar b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/apache/karaf/bundle/org.apache.karaf.bundle.core/4.2.1/org.apache.karaf.bundle.core-4.2.1.jar
new file mode 100644
index 0000000000..13d6ff43d5
--- /dev/null
+++ b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/apache/karaf/bundle/org.apache.karaf.bundle.core/4.2.1/org.apache.karaf.bundle.core-4.2.1.jar
Binary files differ
diff --git a/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/apache/karaf/config/org.apache.karaf.config.core/4.2.1/org.apache.karaf.config.core-4.2.1.jar b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/apache/karaf/config/org.apache.karaf.config.core/4.2.1/org.apache.karaf.config.core-4.2.1.jar
new file mode 100644
index 0000000000..0b07186b55
--- /dev/null
+++ b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/apache/karaf/config/org.apache.karaf.config.core/4.2.1/org.apache.karaf.config.core-4.2.1.jar
Binary files differ
diff --git a/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/apache/karaf/deployer/org.apache.karaf.deployer.blueprint/4.2.1/org.apache.karaf.deployer.blueprint-4.2.1.jar b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/apache/karaf/deployer/org.apache.karaf.deployer.blueprint/4.2.1/org.apache.karaf.deployer.blueprint-4.2.1.jar
new file mode 100644
index 0000000000..172bbc4222
--- /dev/null
+++ b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/apache/karaf/deployer/org.apache.karaf.deployer.blueprint/4.2.1/org.apache.karaf.deployer.blueprint-4.2.1.jar
Binary files differ
diff --git a/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/apache/karaf/deployer/org.apache.karaf.deployer.features/4.2.1/org.apache.karaf.deployer.features-4.2.1.jar b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/apache/karaf/deployer/org.apache.karaf.deployer.features/4.2.1/org.apache.karaf.deployer.features-4.2.1.jar
new file mode 100644
index 0000000000..263a8d6728
--- /dev/null
+++ b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/apache/karaf/deployer/org.apache.karaf.deployer.features/4.2.1/org.apache.karaf.deployer.features-4.2.1.jar
Binary files differ
diff --git a/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/apache/karaf/deployer/org.apache.karaf.deployer.kar/4.2.1/org.apache.karaf.deployer.kar-4.2.1.jar b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/apache/karaf/deployer/org.apache.karaf.deployer.kar/4.2.1/org.apache.karaf.deployer.kar-4.2.1.jar
new file mode 100644
index 0000000000..cc868be25b
--- /dev/null
+++ b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/apache/karaf/deployer/org.apache.karaf.deployer.kar/4.2.1/org.apache.karaf.deployer.kar-4.2.1.jar
Binary files differ
diff --git a/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/apache/karaf/deployer/org.apache.karaf.deployer.wrap/4.2.1/org.apache.karaf.deployer.wrap-4.2.1.jar b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/apache/karaf/deployer/org.apache.karaf.deployer.wrap/4.2.1/org.apache.karaf.deployer.wrap-4.2.1.jar
new file mode 100644
index 0000000000..7e63ea473a
--- /dev/null
+++ b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/apache/karaf/deployer/org.apache.karaf.deployer.wrap/4.2.1/org.apache.karaf.deployer.wrap-4.2.1.jar
Binary files differ
diff --git a/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/apache/karaf/diagnostic/org.apache.karaf.diagnostic.boot/4.2.1/org.apache.karaf.diagnostic.boot-4.2.1.jar b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/apache/karaf/diagnostic/org.apache.karaf.diagnostic.boot/4.2.1/org.apache.karaf.diagnostic.boot-4.2.1.jar
new file mode 100644
index 0000000000..5eb1775583
--- /dev/null
+++ b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/apache/karaf/diagnostic/org.apache.karaf.diagnostic.boot/4.2.1/org.apache.karaf.diagnostic.boot-4.2.1.jar
Binary files differ
diff --git a/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/apache/karaf/diagnostic/org.apache.karaf.diagnostic.core/4.2.1/org.apache.karaf.diagnostic.core-4.2.1.jar b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/apache/karaf/diagnostic/org.apache.karaf.diagnostic.core/4.2.1/org.apache.karaf.diagnostic.core-4.2.1.jar
new file mode 100644
index 0000000000..cc4c52c8ca
--- /dev/null
+++ b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/apache/karaf/diagnostic/org.apache.karaf.diagnostic.core/4.2.1/org.apache.karaf.diagnostic.core-4.2.1.jar
Binary files differ
diff --git a/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/apache/karaf/features/enterprise/4.2.1/enterprise-4.2.1-features.xml b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/apache/karaf/features/enterprise/4.2.1/enterprise-4.2.1-features.xml
new file mode 100644
index 0000000000..6ac17ecded
--- /dev/null
+++ b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/apache/karaf/features/enterprise/4.2.1/enterprise-4.2.1-features.xml
@@ -0,0 +1,271 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<!--
+
+ 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.
+-->
+<features name="enterprise-4.2.1" xmlns="http://karaf.apache.org/xmlns/features/v1.3.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://karaf.apache.org/xmlns/features/v1.3.0 http://karaf.apache.org/xmlns/features/v1.3.0">
+
+ <!-- NB: this file is not the one really used. This file is used by the karaf-maven-plugin to define the start-level of bundles in the generated feature.xml -->
+
+ <repository>mvn:org.hibernate.validator/hibernate-validator-osgi-karaf-features/6.0.12.Final/xml/features</repository>
+ <repository>mvn:org.hibernate/hibernate-osgi/5.2.9.Final/xml/karaf</repository>
+ <repository>mvn:org.ops4j.pax.cdi/pax-cdi-features/1.0.0/xml/features</repository>
+ <repository>mvn:org.ops4j.pax.jdbc/pax-jdbc-features/1.3.0/xml/features</repository>
+ <repository>mvn:org.ops4j.pax.jms/pax-jms-features/1.0.1/xml/features</repository>
+ <repository>mvn:org.ops4j.pax.transx/pax-transx-features/0.4.0/xml/features</repository>
+ <repository>mvn:org.apache.karaf.features/standard/4.2.1/xml/features</repository>
+ <repository>mvn:org.apache.aries.jpa/jpa-features/2.7.0/xml/features</repository>
+ <repository>mvn:org.apache.openjpa/openjpa-features/3.0.0/xml/features</repository>
+
+ <feature name="transaction-api" version="1.2.0">
+ <bundle dependency="true">mvn:javax.interceptor/javax.interceptor-api/1.2</bundle>
+ <bundle dependency="true">mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.javax-inject/1_2</bundle>
+ <bundle dependency="true">mvn:javax.el/javax.el-api/3.0.0</bundle>
+ <bundle dependency="true">mvn:javax.enterprise/cdi-api/1.2</bundle>
+ <bundle>mvn:javax.transaction/javax.transaction-api/1.2</bundle>
+ <feature>pax-transx-tm-api</feature>
+ </feature>
+
+ <feature name="transaction-manager-geronimo" description="Geronimo Transaction Manager" version="3.1.3">
+ <details>JTA implementation provided by Apache Aries Transaction</details>
+ <config name="org.ops4j.pax.transx.tm.geronimo">
+################################################################################
+#
+# 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.
+#
+################################################################################
+
+org.apache.geronimo.tm.recoverable = true
+org.apache.geronimo.tm.timeout = 600
+org.apache.geronimo.tm.howl.logFileDir = ${karaf.data}/txlog
+org.apache.geronimo.tm.howl.maxLogFiles = 2
+org.apache.geronimo.tm.howl.maxBlocksPerFile = 512
+org.apache.geronimo.tm.howl.bufferSize = 4
+ </config>
+ <feature version="[1.1,2)">transaction-api</feature>
+ <feature>pax-transx-tm-geronimo</feature>
+ <capability>
+ transaction-manager;provider:=geronimo
+ </capability>
+ </feature>
+
+ <feature name="transaction-manager-narayana" description="Narayana Transaction Manager" version="5.9.0.Final">
+ <details>JTA implementation provided by Narayana</details>
+ <config name="org.ops4j.pax.transx.tm.narayana">
+################################################################################
+#
+# 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.
+#
+################################################################################
+
+com.arjuna.ats.arjuna.objectstore.objectStoreDir=${karaf.data}/narayana
+com.arjuna.ats.arjuna.objectstore.communicationStore.objectStoreDir=${karaf.data}/narayana
+com.arjuna.ats.arjuna.hornetqjournal.storeDir=${karaf.data}/narayana/hornetq
+ </config>
+ <feature version="[1.1,2)">transaction-api</feature>
+ <feature>pax-transx-tm-narayana</feature>
+ <capability>
+ transaction-manager;provider:=narayana
+ </capability>
+ </feature>
+
+ <feature name="transaction-manager-atomikos" description="Atomikos Transaction Manager" version="4.0.4">
+ <details>JTA implementation provided by Atomikos</details>
+ <config name="org.ops4j.pax.transx.tm.atomikos">
+################################################################################
+#
+# 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.
+#
+################################################################################
+
+com.atomikos.icatch.log_base_dir=${karaf.data}/atomikos
+ </config>
+ <feature version="[1.1,2)">transaction-api</feature>
+ <feature>pax-transx-tm-atomikos</feature>
+ <capability>
+ transaction-manager;provider:=atomikos
+ </capability>
+ </feature>
+
+ <feature name="transaction" description="OSGi Transaction Manager" version="2.0">
+ <details>JTA Support</details>
+ <feature dependency="true">transaction-manager-geronimo</feature>
+ <requirement>
+ transaction-manager
+ </requirement>
+ <conditional>
+ <condition>aries-blueprint</condition>
+ <bundle dependency="true">mvn:org.apache.felix/org.apache.felix.coordinator/1.0.2</bundle>
+ <bundle>mvn:org.apache.aries.transaction/org.apache.aries.transaction.blueprint/1.1.1</bundle>
+ <bundle>mvn:org.apache.aries.transaction/org.apache.aries.transaction.blueprint/2.2.0</bundle>
+ </conditional>
+ </feature>
+
+ <feature name="connector" description="OSGi support for JCA Connector 1.6" version="3.1.1">
+ <details>OSGi support for JCA Connector 1.6</details>
+ <feature version="[2,3)">transaction</feature>
+ <bundle dependency="true">mvn:org.apache.geronimo.specs/geronimo-j2ee-connector_1.6_spec/1.0</bundle>
+ <bundle dependency="true">mvn:org.apache.geronimo.specs/geronimo-validation_1.0_spec/1.1</bundle>
+ <bundle>mvn:org.apache.geronimo.components/geronimo-connector/3.1.1</bundle>
+ </feature>
+
+ <feature name="openjpa3" description="OpenJPA engine support" version="3.0.0">
+ <bundle dependency="true">mvn:org.apache.xbean/xbean-asm6-shaded/4.9</bundle>
+ <feature version="3.0.0">openjpa</feature>
+ <capability>
+ osgi.service;objectClass=javax.persistence.spi.PersistenceProvider;effective:=active;javax.persistence.provider=org.apache.openjpa.persistence.PersistenceProviderImpl
+ </capability>
+ </feature>
+
+ <feature name="hibernate" description="Hibernate JPA engine support" version="5.2.9.Final">
+ <feature prerequisite="true">wrap</feature>
+ <feature version="5.2.9.Final">hibernate-orm</feature>
+ <bundle dependency="true">mvn:net.bytebuddy/byte-buddy/1.6.6</bundle>
+ <capability>
+ osgi.service;objectClass=javax.persistence.spi.PersistenceProvider;effective:=active;javax.persistence.provider=org.hibernate.jpa.HibernatePersistenceProvider
+ </capability>
+ </feature>
+
+ <feature name="eclipselink" description="Eclipselink JPA persistence engine support" version="2.7.3">
+ <details>Eclipselink persistence engine.</details>
+ <feature version="[2,3)">jpa</feature>
+ <bundle dependency="true">mvn:org.eclipse.persistence/javax.persistence/2.2.0</bundle>
+ <feature version="[2,3)">transaction</feature>
+ <bundle>mvn:org.eclipse.persistence/org.eclipse.persistence.jpa/2.7.3</bundle>
+ <bundle>mvn:org.eclipse.persistence/org.eclipse.persistence.core/2.7.3</bundle>
+ <bundle>mvn:org.eclipse.persistence/org.eclipse.persistence.asm/2.7.3</bundle>
+ <bundle>mvn:org.eclipse.persistence/org.eclipse.persistence.antlr/2.7.3</bundle>
+ <bundle>mvn:org.eclipse.persistence/org.eclipse.persistence.jpa.jpql/2.7.3</bundle>
+ <bundle>mvn:org.apache.aries.jpa/org.apache.aries.jpa.eclipselink.adapter/2.7.0</bundle>
+ <capability>
+ osgi.service;objectClass=javax.persistence.spi.PersistenceProvider;effective:=active;javax.persistence.provider=org.eclipse.persistence.jpa.PersistenceProvider
+ </capability>
+ </feature>
+
+ <feature name="jndi" description="OSGi Service Registry JNDI access" version="4.2.1">
+ <details>JNDI support provided by Apache Aries JNDI 1.0.0, including additional service, commands, and MBean.</details>
+ <feature>aries-proxy</feature>
+ <bundle dependency="true" start-level="30">mvn:org.apache.aries/org.apache.aries.util/1.1.3</bundle>
+ <bundle start-level="30">mvn:org.apache.xbean/xbean-naming/4.9</bundle>
+ <bundle start-level="30">mvn:org.apache.aries.jndi/org.apache.aries.jndi.api/1.1.0</bundle>
+ <bundle start-level="30">mvn:org.apache.aries.jndi/org.apache.aries.jndi.core/1.0.2</bundle>
+ <bundle start-level="30">mvn:org.apache.aries.jndi/org.apache.aries.jndi.rmi/1.0.0</bundle>
+ <bundle start-level="30">mvn:org.apache.aries.jndi/org.apache.aries.jndi.url/1.1.0</bundle>
+ <bundle start-level="30">mvn:org.apache.aries.jndi/org.apache.aries.jndi.legacy.support/1.0.0</bundle>
+ <bundle start-level="30">mvn:org.apache.karaf.jndi/org.apache.karaf.jndi.core/4.2.1</bundle>
+ </feature>
+
+ <feature name="jdbc" description="JDBC service and commands" version="4.2.1">
+ <details>JDBC support providing service, commands, and MBean.</details>
+ <feature prerequisite="true">pax-jdbc</feature>
+ <feature prerequisite="true">pax-jdbc-config</feature>
+ <bundle dependency="true">mvn:org.osgi/org.osgi.service.jdbc/1.0.0</bundle>
+ <bundle>mvn:org.apache.karaf.jdbc/org.apache.karaf.jdbc.core/4.2.1</bundle>
+ </feature>
+
+ <feature name="jms" description="JMS service and commands" version="4.2.1">
+ <details>JMS support providing service, commands, and MBean.</details>
+ <feature>pax-jms-pool</feature>
+ <feature>pax-jms-config</feature>
+ <feature>pax-jms-pool-transx</feature>
+ <feature>transaction</feature>
+ <bundle dependency="true">mvn:javax.jms/javax.jms-api/2.0</bundle>
+ <bundle dependency="true">mvn:org.apache.geronimo.specs/geronimo-jta_1.1_spec/1.1.1</bundle>
+ <bundle dependency="true">mvn:org.apache.geronimo.specs/geronimo-jms_1.1_spec/1.1.1</bundle>
+ <bundle dependency="true">mvn:org.apache.commons/commons-pool2/2.4.2</bundle>
+ <bundle>mvn:org.apache.karaf.jms/org.apache.karaf.jms.core/4.2.1</bundle>
+ </feature>
+
+ <feature name="application-without-isolation" description="Provide EBA archive support" version="1.0.0">
+ <details>Support of the Aries EBA archives</details>
+ <!-- pre-requisites-->
+ <feature version="4.2.1">obr</feature>
+ <feature>aries-blueprint</feature>
+ <!-- common -->
+ <bundle dependency="true" start-level="30">mvn:org.apache.aries/org.apache.aries.util/1.1.3</bundle>
+ <bundle start-level="30">mvn:org.apache.aries.application/org.apache.aries.application.resolver.obr/1.0.0</bundle>
+ <bundle start-level="30">mvn:org.apache.aries.application/org.apache.aries.application.install/1.0.0</bundle>
+ <bundle start-level="30">mvn:org.apache.aries.application/org.apache.aries.application.api/1.0.0</bundle>
+ <bundle start-level="30">mvn:org.apache.aries.application/org.apache.aries.application.management/1.0.0</bundle>
+ <bundle start-level="30">mvn:org.apache.aries.application/org.apache.aries.application.utils/1.0.0</bundle>
+ <bundle start-level="30">mvn:org.apache.aries.application/org.apache.aries.application.modeller/1.0.0</bundle>
+ <bundle start-level="30">mvn:org.apache.aries.application/org.apache.aries.application.default.local.platform/1.0.0</bundle>
+ <bundle start-level="30">mvn:org.apache.aries.application/org.apache.aries.application.resolver.noop/1.0.0</bundle>
+ <bundle start-level="30">mvn:org.apache.aries.application/org.apache.aries.application.deployment.management/1.0.0</bundle>
+ <!-- without isolation -->
+ <bundle start-level="30">mvn:org.apache.aries.application/org.apache.aries.application.runtime/1.0.0</bundle>
+ </feature>
+
+ <feature name="subsystems" description="Support for OSGi subsystems" version="2.0.10">
+ <details>Support for Aries OSGi subsystems</details>
+ <bundle dependency="true" start-level="30">mvn:org.apache.aries/org.apache.aries.util/1.1.3</bundle>
+ <bundle dependency="true" start-level="30">mvn:org.apache.karaf.services/org.apache.karaf.services.coordinator/4.2.1</bundle>
+ <bundle start-level="30">mvn:org.apache.aries.subsystem/org.apache.aries.subsystem.api/2.0.10</bundle>
+ <bundle start-level="30">mvn:org.apache.aries.subsystem/org.apache.aries.subsystem.core/2.0.10</bundle>
+ <conditional>
+ <condition>shell</condition>
+ <bundle start-level="30">mvn:org.apache.karaf.subsystem/org.apache.karaf.subsystem.core/4.2.1</bundle>
+ </conditional>
+ </feature>
+
+ <feature name="docker" description="Docker service and commands" version="4.2.1">
+ <details>Docker support providing service, commands, and MBean.</details>
+ <bundle dependency="true">mvn:com.fasterxml.jackson.core/jackson-core/2.9.6</bundle>
+ <bundle dependency="true">mvn:com.fasterxml.jackson.core/jackson-annotations/2.9.6</bundle>
+ <bundle dependency="true">mvn:com.fasterxml.jackson.core/jackson-databind/2.9.6</bundle>
+ <bundle>mvn:org.apache.karaf.docker/org.apache.karaf.docker.core/4.2.1</bundle>
+ </feature>
+
+</features>
diff --git a/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/apache/karaf/features/framework/4.2.1/framework-4.2.1-features.xml b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/apache/karaf/features/framework/4.2.1/framework-4.2.1-features.xml
new file mode 100644
index 0000000000..58584baec5
--- /dev/null
+++ b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/apache/karaf/features/framework/4.2.1/framework-4.2.1-features.xml
@@ -0,0 +1,62 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<!--
+
+ 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.
+-->
+<features name="framework-4.2.1" xmlns="http://karaf.apache.org/xmlns/features/v1.3.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://karaf.apache.org/xmlns/features/v1.3.0 http://karaf.apache.org/xmlns/features/v1.3.0">
+
+ <!-- This file is not used in the assembly., This file is used by the karaf-maven-plugin to generate a "final" feature.xml
+ including the correct start-level for the generation of the startup.propertie file -->
+
+ <feature version="4.2.1" description="Karaf core feature" name="framework" hidden="true">
+ <!-- persistent wiring extension -->
+ <bundle start-level="1">mvn:org.apache.karaf.features/org.apache.karaf.features.extension/4.2.1</bundle>
+ <!-- mvn: and wrap: url handlers -->
+ <bundle start-level="5">mvn:org.ops4j.pax.url/pax-url-aether/2.5.4</bundle>
+ <!-- logging -->
+ <bundle start-level="8">mvn:org.ops4j.pax.logging/pax-logging-api/1.10.1</bundle>
+ <bundle start-level="8">mvn:org.ops4j.pax.logging/pax-logging-log4j2/1.10.1</bundle>
+ <bundle start-level="8">mvn:org.fusesource.jansi/jansi/1.17.1</bundle>
+ <!-- config admin -->
+ <bundle start-level="9">mvn:org.apache.felix/org.apache.felix.coordinator/1.0.2</bundle>
+ <bundle start-level="10">mvn:org.apache.felix/org.apache.felix.configadmin/1.9.4</bundle>
+ <!-- file install -->
+ <bundle start-level="11">mvn:org.apache.felix/org.apache.felix.fileinstall/3.6.4</bundle>
+ <!-- features service -->
+ <bundle start-level="15">mvn:org.apache.karaf.features/org.apache.karaf.features.core/4.2.1</bundle>
+ <bundle dependency="true" start-level="30">mvn:org.apache.servicemix.specs/org.apache.servicemix.specs.jaxb-api-2.2/2.5.0</bundle>
+ <bundle start-level="20">mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.jaxb-impl/2.2.11_1</bundle>
+ <bundle dependency="true" start-level="30">mvn:org.apache.servicemix.specs/org.apache.servicemix.specs.activation-api-1.1/2.5.0</bundle>
+ </feature>
+
+ <feature version="4.2.1" description="Karaf core feature" name="framework-logback" hidden="true">
+ <!-- persistent wiring extension -->
+ <bundle start-level="1">mvn:org.apache.karaf.features/org.apache.karaf.features.extension/4.2.1</bundle>
+ <!-- mvn: and wrap: url handlers -->
+ <bundle start-level="5">mvn:org.ops4j.pax.url/pax-url-aether/2.5.4</bundle>
+ <!-- logging -->
+ <bundle start-level="8">mvn:org.ops4j.pax.logging/pax-logging-api/1.10.1</bundle>
+ <bundle start-level="8">mvn:org.ops4j.pax.logging/pax-logging-logback/1.10.1</bundle>
+ <!-- config admin -->
+ <bundle start-level="9">mvn:org.apache.felix/org.apache.felix.coordinator/1.0.2</bundle>
+ <bundle start-level="10">mvn:org.apache.felix/org.apache.felix.configadmin/1.9.4</bundle>
+ <!-- file install -->
+ <bundle start-level="11">mvn:org.apache.felix/org.apache.felix.fileinstall/3.6.4</bundle>
+ <!-- features service -->
+ <bundle start-level="15">mvn:org.apache.karaf.features/org.apache.karaf.features.core/4.2.1</bundle>
+ </feature>
+
+</features>
diff --git a/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/apache/karaf/features/org.apache.karaf.features.command/4.2.1/org.apache.karaf.features.command-4.2.1.jar b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/apache/karaf/features/org.apache.karaf.features.command/4.2.1/org.apache.karaf.features.command-4.2.1.jar
new file mode 100644
index 0000000000..c3cf3d7633
--- /dev/null
+++ b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/apache/karaf/features/org.apache.karaf.features.command/4.2.1/org.apache.karaf.features.command-4.2.1.jar
Binary files differ
diff --git a/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/apache/karaf/features/org.apache.karaf.features.core/4.2.1/org.apache.karaf.features.core-4.2.1.jar b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/apache/karaf/features/org.apache.karaf.features.core/4.2.1/org.apache.karaf.features.core-4.2.1.jar
new file mode 100644
index 0000000000..3c45b59724
--- /dev/null
+++ b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/apache/karaf/features/org.apache.karaf.features.core/4.2.1/org.apache.karaf.features.core-4.2.1.jar
Binary files differ
diff --git a/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/apache/karaf/features/org.apache.karaf.features.extension/4.2.1/org.apache.karaf.features.extension-4.2.1.jar b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/apache/karaf/features/org.apache.karaf.features.extension/4.2.1/org.apache.karaf.features.extension-4.2.1.jar
new file mode 100644
index 0000000000..e38b25b324
--- /dev/null
+++ b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/apache/karaf/features/org.apache.karaf.features.extension/4.2.1/org.apache.karaf.features.extension-4.2.1.jar
Binary files differ
diff --git a/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/apache/karaf/features/spring/4.2.1/spring-4.2.1-features.xml b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/apache/karaf/features/spring/4.2.1/spring-4.2.1-features.xml
new file mode 100644
index 0000000000..b83c3d96a3
--- /dev/null
+++ b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/apache/karaf/features/spring/4.2.1/spring-4.2.1-features.xml
@@ -0,0 +1,104 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<!--
+
+ 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.
+-->
+<features name="spring-4.2.1" xmlns="http://karaf.apache.org/xmlns/features/v1.3.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://karaf.apache.org/xmlns/features/v1.3.0 http://karaf.apache.org/xmlns/features/v1.3.0">
+
+ <!-- NB: this file is not the one really used. This file is used by the karaf-maven-plugin to define the start-level of bundles in the generated feature.xml -->
+
+ <repository>mvn:org.apache.karaf.features/standard/4.2.1/xml/features</repository>
+
+ <!-- Spring 5.0.x support -->
+
+ <feature name="spring" description="Spring 5.0.x support" version="5.0.8.RELEASE_1">
+ <bundle dependency="true" start-level="30">mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.aopalliance/1.0_6</bundle>
+ <bundle start-level="30">mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.spring-core/5.0.8.RELEASE_1</bundle>
+ <bundle start-level="30">mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.spring-expression/5.0.8.RELEASE_1</bundle>
+ <bundle start-level="30">mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.spring-beans/5.0.8.RELEASE_1</bundle>
+ <bundle start-level="30">mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.spring-aop/5.0.8.RELEASE_1</bundle>
+ <bundle start-level="30">mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.spring-context/5.0.8.RELEASE_1</bundle>
+ <bundle start-level="30">mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.spring-context-support/5.0.8.RELEASE_1</bundle>
+ </feature>
+
+ <feature name="spring-aspects" description="Spring 5.0.x AOP support" version="5.0.8.RELEASE_1">
+ <feature version="[5.0.8.RELEASE_1,5.1)">spring</feature>
+ <bundle start-level="30">mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.spring-aspects/5.0.8.RELEASE_1</bundle>
+ </feature>
+
+ <feature name="spring-instrument" description="Spring 5.0.x Instrument support" version="5.0.8.RELEASE_1">
+ <feature version="[5.0.8.RELEASE_1,5.1)">spring</feature>
+ <bundle start-level="30">mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.spring-instrument/5.0.8.RELEASE_1</bundle>
+ </feature>
+
+ <feature name="spring-jdbc" description="Spring 5.0.x JDBC support" version="5.0.8.RELEASE_1">
+ <feature version="[5.0.8.RELEASE_1,5.1)">spring-tx</feature>
+ <bundle start-level="30">mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.spring-jdbc/5.0.8.RELEASE_1</bundle>
+ </feature>
+
+ <feature name="spring-jms" description="Spring 5.0.x JMS support" version="5.0.8.RELEASE_1">
+ <feature version="[5.0.8.RELEASE_1,5.1)">spring-tx</feature>
+ <bundle dependency="true" start-level="10">mvn:org.apache.geronimo.specs/geronimo-jta_1.1_spec/1.1.1</bundle>
+ <bundle dependency="true" start-level="10">mvn:org.apache.geronimo.specs/geronimo-jms_1.1_spec/1.1.1</bundle>
+ <bundle start-level="30">mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.spring-jms/5.0.8.RELEASE_1</bundle>
+ </feature>
+
+ <feature name="spring-test" description="Spring 5.0.x Test support" version="5.0.8.RELEASE_1">
+ <feature version="[5.0.8.RELEASE_1,5.1)">spring</feature>
+ <bundle dependency="true">mvn:javax.websocket/javax.websocket-api/1.1</bundle>
+ <bundle dependency="true">mvn:org.apache.httpcomponents/httpcore-osgi/4.4.6</bundle>
+ <bundle dependency="true">mvn:org.apache.httpcomponents/httpclient-osgi/4.5.2</bundle>
+ <bundle start-level="30">mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.spring-test/5.0.8.RELEASE_1</bundle>
+ </feature>
+
+ <feature name="spring-orm" description="Spring 5.0.x ORM support" version="5.0.8.RELEASE_1">
+ <feature version="[5.0.8.RELEASE_1,5.1)">spring-jdbc</feature>
+ <bundle start-level="30">mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.spring-orm/5.0.8.RELEASE_1</bundle>
+ </feature>
+
+ <feature name="spring-oxm" description="Spring 5.0.x OXM support" version="5.0.8.RELEASE_1">
+ <feature version="[5.0.8.RELEASE_1,5.1)">spring</feature>
+ <bundle start-level="30">mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.spring-oxm/5.0.8.RELEASE_1</bundle>
+ </feature>
+
+ <feature name="spring-tx" description="Spring 5.0.x Transaction (TX) support" version="5.0.8.RELEASE_1">
+ <feature version="[5.0.8.RELEASE_1,5.1)">spring</feature>
+ <bundle start-level="30">mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.spring-tx/5.0.8.RELEASE_1</bundle>
+ </feature>
+
+ <feature name="spring-web" description="Spring 5.0.x Web support" version="5.0.8.RELEASE_1">
+ <feature version="[5.0.8.RELEASE_1,5.1)">spring</feature>
+ <feature>http</feature>
+ <bundle start-level="30">mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.spring-web/5.0.8.RELEASE_1</bundle>
+ <bundle start-level="30">mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.spring-webmvc/5.0.8.RELEASE_1</bundle>
+ </feature>
+
+ <feature name="spring-websocket" description="Spring 5.0.x WebSocket support" version="5.0.8.RELEASE_1">
+ <bundle dependency="true">mvn:javax.websocket/javax.websocket-api/1.1</bundle>
+ <feature version="[5.0.8.RELEASE_1,5.1)">spring-web</feature>
+ <bundle start-level="30">mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.spring-websocket/5.0.8.RELEASE_1</bundle>
+ </feature>
+
+ <!-- Aries Blueprint Spring support -->
+
+ <feature name="aries-blueprint-spring">
+ <feature>aries-blueprint</feature>
+ <feature>spring</feature>
+ <bundle>mvn:org.apache.aries.blueprint/org.apache.aries.blueprint.spring/0.6.0</bundle>
+ <bundle>mvn:org.apache.aries.blueprint/org.apache.aries.blueprint.spring.extender/0.4.0</bundle>
+ </feature>
+
+</features>
diff --git a/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/apache/karaf/features/standard/4.2.1/standard-4.2.1-features.xml b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/apache/karaf/features/standard/4.2.1/standard-4.2.1-features.xml
new file mode 100644
index 0000000000..4f9a429966
--- /dev/null
+++ b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/apache/karaf/features/standard/4.2.1/standard-4.2.1-features.xml
@@ -0,0 +1,1652 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<!--
+
+ 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.
+-->
+<features name="standard-4.2.1" xmlns="http://karaf.apache.org/xmlns/features/v1.3.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://karaf.apache.org/xmlns/features/v1.3.0 http://karaf.apache.org/xmlns/features/v1.3.0">
+
+ <repository>mvn:org.ops4j.pax.web/pax-web-features/7.2.3/xml/features</repository>
+
+ <feature version="4.2.1" description="OSGi Security for Karaf" name="framework-security">
+ <bundle start="false" start-level="1">mvn:org.apache.felix/org.apache.felix.framework.security/2.6.0</bundle>
+ </feature>
+
+ <feature version="4.2.1" description="Services Security for Karaf" name="service-security">
+ <feature>jaas-boot</feature>
+ <feature>aries-proxy</feature>
+ <bundle start-level="10">mvn:org.apache.karaf.service/org.apache.karaf.service.guard/4.2.1</bundle>
+ </feature>
+
+ <feature name="aries-proxy" description="Aries Proxy" version="4.2.1">
+ <!-- false to avoid restarts of proxy which cascades badly -->
+ <bundle dependency="false" start-level="20">mvn:org.ow2.asm/asm/6.2.1</bundle>
+ <bundle dependency="false" start-level="20">mvn:org.ow2.asm/asm-util/6.2.1</bundle>
+ <bundle dependency="false" start-level="20">mvn:org.ow2.asm/asm-tree/6.2.1</bundle>
+ <bundle dependency="false" start-level="20">mvn:org.ow2.asm/asm-analysis/6.2.1</bundle>
+ <bundle dependency="false" start-level="20">mvn:org.ow2.asm/asm-commons/6.2.1</bundle>
+ <bundle start-level="20">mvn:org.apache.aries.proxy/org.apache.aries.proxy/1.1.2</bundle>
+ </feature>
+
+ <feature name="aries-blueprint" description="Aries Blueprint" version="4.2.1">
+ <feature>aries-proxy</feature>
+ <bundle dependency="true" start-level="20">mvn:org.apache.aries/org.apache.aries.util/1.1.3</bundle>
+ <!-- Making the compatibility bundle a dependency allows it to only be installed on-demand -->
+ <bundle dependency="true" start-level="20">mvn:org.apache.aries.blueprint/org.apache.aries.blueprint.core.compatibility/1.0.0</bundle>
+ <bundle start-level="20">mvn:org.apache.aries.blueprint/org.apache.aries.blueprint.api/1.0.1</bundle>
+ <bundle start-level="20">mvn:org.apache.aries.blueprint/org.apache.aries.blueprint.cm/1.2.0</bundle>
+ <bundle start-level="20">mvn:org.apache.aries.blueprint/org.apache.aries.blueprint.core/1.9.0</bundle>
+ <conditional>
+ <condition>bundle</condition>
+ <bundle start-level="30">mvn:org.apache.karaf.bundle/org.apache.karaf.bundle.blueprintstate/4.2.1</bundle>
+ </conditional>
+ <capability>
+ osgi.service;effective:=active;objectClass=org.apache.aries.blueprint.services.ParserService,
+ osgi.extender; osgi.extender="osgi.blueprint";uses:="org.osgi.service.blueprint.container,org.osgi.service.blueprint.reflect";version:Version="1.0"
+ </capability>
+ </feature>
+
+ <feature name="feature" description="Features Support" version="4.2.1">
+ <bundle start-level="1">mvn:org.apache.karaf.features/org.apache.karaf.features.extension/4.2.1</bundle>
+ <bundle start-level="15">mvn:org.apache.karaf.features/org.apache.karaf.features.core/4.2.1</bundle>
+ <config name="org.apache.karaf.features.repos">
+################################################################################
+#
+# 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.
+#
+################################################################################
+
+#
+# This file describes the features repository URL
+# It could be directly installed using feature:repo-add command
+#
+enterprise=mvn:org.apache.karaf.features/enterprise/${karaf.version}/xml/features
+enterprise-legacy=mvn:org.apache.karaf.features/enterprise-legacy/${karaf.version}/xml/features
+spring=mvn:org.apache.karaf.features/spring/${karaf.version}/xml/features
+spring-legacy=mvn:org.apache.karaf.features/spring-legacy/${karaf.version}/xml/features
+cellar=mvn:org.apache.karaf.cellar/apache-karaf-cellar/RELEASE/xml/features
+cave=mvn:org.apache.karaf.cave/apache-karaf-cave/RELEASE/xml/features
+camel=mvn:org.apache.camel.karaf/apache-camel/RELEASE/xml/features
+camel-extras=mvn:org.apache-extras.camel-extra.karaf/camel-extra/RELEASE/xml/features
+cxf=mvn:org.apache.cxf.karaf/apache-cxf/RELEASE/xml/features
+cxf-dosgi=mvn:org.apache.cxf.dosgi/cxf-dosgi/RELEASE/xml/features
+cxf-dosgi-samples=mvn:org.apache.cxf.dosgi/cxf-dosgi-samples/RELEASE/xml/features
+cxf-xkms=mvn:org.apache.cxf.services.xkms/cxf-services-xkms-features/RELEASE/xml
+activemq=mvn:org.apache.activemq/activemq-karaf/RELEASE/xml/features
+jclouds=mvn:org.apache.jclouds.karaf/jclouds-karaf/RELEASE/xml/features
+openejb=mvn:org.apache.openejb/openejb-feature/RELEASE/xml/features
+wicket=mvn:org.ops4j.pax.wicket/features/RELEASE/xml/features
+hawtio=mvn:io.hawt/hawtio-karaf/RELEASE/xml/features
+pax-cdi=mvn:org.ops4j.pax.cdi/pax-cdi-features/RELEASE/xml/features
+pax-jdbc=mvn:org.ops4j.pax.jdbc/pax-jdbc-features/RELEASE/xml/features
+pax-jms=mvn:org.ops4j.pax.jms/pax-jms-features/RELEASE/xml/features
+pax-jpa=mvn:org.ops4j.pax.jpa/pax-jpa-features/RELEASE/xml/features
+pax-transx=mvn:org.ops4j.pax.transx/pax-transx-features/RELEASE/xml/features
+pax-keycloak=mvn:org.ops4j.pax.keycloak/pax-keycloak-features/RELEASE/xml/features
+pax-web=mvn:org.ops4j.pax.web/pax-web-features/RELEASE/xml/features
+pax-wicket=mvn:org.ops4j.pax.wicket/pax-wicket-features/RELEASE/xml/features
+ecf=http://download.eclipse.org/rt/ecf/RELEASE/site.p2/karaf-features.xml
+decanter=mvn:org.apache.karaf.decanter/apache-karaf-decanter/RELEASE/xml/features
+eclipsesource-jaxrs=mvn:com.eclipsesource.jaxrs/features/RELEASE/xml/features
+aries-jpa=mvn:org.apache.aries.jpa/jpa-features/RELEASE/xml/features
+aries-rsa=mvn:org.apache.aries.rsa/rsa-features/RELEASE/xml/features
+hibernate=mvn:org.hibernate/hibernate-osgi/RELEASE/xml/karaf
+ignite=mvn:org.apache.ignite/ignite-osgi-karaf/RELEASE/xml/features
+openjpa=mvn:org.apache.openjpa/openjpa-features/RELEASE/xml/features
+artemis=mvn:org.apache.activemq/artemis-features/RELEASE/xml/features
+brave=mvn:io.zipkin.brave.karaf/brave-features/RELEASE/xml/features
+sling=mvn:org.apache.sling/org.apache.sling.karaf-features/RELEASE/xml/features
+ </config>
+ <conditional>
+ <condition>shell</condition>
+ <config name="org.apache.karaf.command.acl.feature">
+################################################################################
+#
+# 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.
+#
+################################################################################
+
+#
+# This configuration file defines the ACLs for commands in the feature subshell
+#
+install = admin
+uninstall = admin
+start = admin
+stop = admin
+update = admin
+ </config>
+ <bundle start-level="30">mvn:org.apache.karaf.features/org.apache.karaf.features.command/4.2.1</bundle>
+ </conditional>
+ </feature>
+
+ <feature name="jaas-boot" hidden="true" version="4.2.1">
+ <library export="true" delegate="true" type="boot">
+ mvn:org.apache.karaf.jaas/org.apache.karaf.jaas.boot/4.2.1
+ </library>
+ </feature>
+
+ <feature name="shell" description="Karaf Shell" version="4.2.1">
+ <feature>jaas-boot</feature>
+ <config name="org.apache.karaf.command.acl.shell">
+################################################################################
+#
+# 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.
+#
+################################################################################
+
+#
+# This configuration file defines the ACLs for commands in the shell subshell
+#
+nano = admin
+exec = admin
+new = admin
+java = admin
+ </config>
+ <config name="org.apache.karaf.command.acl.scope_bundle">
+################################################################################
+#
+# 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.
+#
+################################################################################
+
+#
+# This configuration file defines the ACLs for scope bundles
+#
+features=org.apache.karaf.features.command
+jaas=org.apache.karaf.jaas.command
+admin=org.apache.karaf.admin.command
+osgi=org.apache.karaf.shell.osgi
+log=org.apache.karaf.shell.log
+packages=org.apache.karaf.shell.packages
+config=org.apache.karaf.shell.config
+ssh=org.apache.karaf.shell.ssh
+shell=org.apache.karaf.shell.commands
+ </config>
+ <config name="org.apache.karaf.shell">
+################################################################################
+#
+# 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.
+#
+################################################################################
+
+#
+# These properties are used to configure Karaf's ssh shell.
+#
+
+#
+# Via sshPort and sshHost you define the address you can login into Karaf.
+#
+sshPort = 8101
+sshHost = 0.0.0.0
+
+#
+# The sshIdleTimeout defines the inactivity timeout to logout the SSH session.
+# The sshIdleTimeout is in milliseconds, and the default is set to 30 minutes.
+#
+sshIdleTimeout = 1800000
+
+#
+# sshRealm defines which JAAS domain to use for password authentication.
+#
+sshRealm = karaf
+
+#
+# sshRole defines the role required to access the console through ssh
+#
+sshRole = ssh
+
+#
+# Defines if the SFTP system is enabled or not in the SSH server
+#
+sftpEnabled=true
+
+#
+# The location of the hostKey file defines where the private/public key of the server
+# is located. If no file is at the defined location it will be ignored.
+#
+hostKey = ${karaf.etc}/host.key
+
+#
+# The format used for hostKey.
+# Possible values are simple (Karaf internal), or PEM (OpenSSH format)
+#
+hostKeyFormat = simple
+
+#
+# Self defined key size in 1024, 2048, 3072, or 4096
+# If not set, this defaults to 2048.
+#
+# keySize = 2048
+
+#
+# Specify host key algorithm, defaults to RSA
+#
+# algorithm = RSA
+
+#
+# Specify the client log level (default is WARN)
+# 0: ERROR
+# 1: WARN
+# 2: INFO
+# 3: DEBUG
+# 4: TRACE
+#
+#logLevel = 1
+
+#
+# Specify an additional welcome banner to be displayed when a user logs into the server.
+#
+# welcomeBanner =
+
+#
+# Defines the completion mode on the Karaf shell console. The possible values are:
+# - GLOBAL: it's the same behavior as in previous Karaf releases. The completion displays all commands and all aliases
+# ignoring if you are in a subshell or not.
+# - FIRST: the completion displays all commands and all aliases only when you are not in a subshell. When you are
+# in a subshell, the completion displays only the commands local to the subshell.
+# - SUBSHELL: the completion displays only the subshells on the root level. When you are in a subshell, the completion
+# displays only the commands local to the subshell.
+# This property define the default value when you use the Karaf shell console.
+# You can change the completion mode directly in the shell console, using shell:completion command.
+#
+completionMode = GLOBAL
+
+#
+# Override allowed SSH cipher algorithms.
+# Default: aes128-ctr,arcfour128,aes128-cbc,3des-cbc,blowfish-cbc
+#
+# ciphers = aes128-ctr,arcfour128,aes128-cbc,3des-cbc,blowfish-cbc
+
+#
+# Override allowed SSH HMAC algorithms.
+# Default: hmac-sha2-512,hmac-sha2-256,hmac-sha1
+#
+# macs = hmac-sha2-512,hmac-sha2-256,hmac-sha1
+
+#
+# Override allowed SSH key exchange algorithms.
+# Default: diffie-hellman-group-exchange-sha256,ecdh-sha2-nistp521,ecdh-sha2-nistp384,ecdh-sha2-nistp256,diffie-hellman-group-exchange-sha1,diffie-hellman-group1-sha1
+#
+# kexAlgorithms = diffie-hellman-group-exchange-sha256,ecdh-sha2-nistp521,ecdh-sha2-nistp384,ecdh-sha2-nistp256,diffie-hellman-group-exchange-sha1,diffie-hellman-group1-sha1
+
+#
+# Override moduli-url.
+# Default: moduli-url not specified to use the internal one from SSHD
+#
+# moduli-url = external moduli-url users wanna use
+
+ </config>
+ <feature>jline</feature>
+ <bundle start-level="30">mvn:org.apache.karaf.shell/org.apache.karaf.shell.core/4.2.1</bundle>
+ <bundle start-level="30">mvn:org.apache.karaf.shell/org.apache.karaf.shell.commands/4.2.1</bundle>
+ </feature>
+
+ <feature name="jline" version="3.9.0" hidden="true">
+ <bundle dependency="true" start-level="30">mvn:org.fusesource.jansi/jansi/1.17.1</bundle>
+ <bundle start-level="30">mvn:org.jline/jline-terminal/3.9.0</bundle>
+ <bundle start-level="30">mvn:org.jline/jline-terminal-jansi/3.9.0</bundle>
+ <bundle start-level="30">mvn:org.jline/jline-reader/3.9.0</bundle>
+ <bundle start-level="30">mvn:org.jline/jline-builtins/3.9.0</bundle>
+ </feature>
+
+ <feature name="shell-compat" description="Karaf Shell Compatibility" version="4.2.1">
+ <feature>aries-blueprint</feature>
+ <feature>shell</feature>
+ <bundle start-level="30">mvn:org.apache.karaf.shell/org.apache.karaf.shell.console/4.2.1</bundle>
+ <bundle start-level="30">mvn:org.apache.karaf.shell/org.apache.karaf.shell.table/4.2.1</bundle>
+ </feature>
+
+ <feature name="deployer" description="Karaf Deployer" version="4.2.1">
+ <bundle start-level="26">mvn:org.apache.karaf.deployer/org.apache.karaf.deployer.features/4.2.1</bundle>
+ <conditional>
+ <condition>wrap</condition>
+ <bundle start-level="24">mvn:org.apache.karaf.deployer/org.apache.karaf.deployer.wrap/4.2.1</bundle>
+ </conditional>
+ <conditional>
+ <condition>req:osgi.extender;filter:="(&amp;(osgi.extender=osgi.blueprint)(version>=1.0))"</condition>
+ <bundle start-level="24">mvn:org.apache.karaf.deployer/org.apache.karaf.deployer.blueprint/4.2.1</bundle>
+ </conditional>
+ <conditional>
+ <condition>kar</condition>
+ <bundle start-level="24">mvn:org.apache.karaf.deployer/org.apache.karaf.deployer.kar/4.2.1</bundle>
+ </conditional>
+ </feature>
+
+ <feature name="wrapper" description="Provide OS integration" version="4.2.1">
+ <bundle start-level="30">mvn:org.apache.karaf.wrapper/org.apache.karaf.wrapper.core/4.2.1</bundle>
+ </feature>
+ <feature name="service-wrapper" description="Provide OS integration (alias to wrapper feature)" version="4.2.1">
+ <feature>wrapper</feature>
+ </feature>
+
+ <feature name="obr" description="Provide OSGi Bundle Repository (OBR) support" version="4.2.1">
+ <bundle start-level="30">mvn:org.apache.felix/org.osgi.service.obr/1.0.2</bundle>
+ <bundle start-level="30">mvn:org.apache.felix/org.apache.felix.bundlerepository/2.0.10</bundle>
+ <bundle start-level="30">mvn:org.apache.karaf.obr/org.apache.karaf.obr.core/4.2.1</bundle>
+ <bundle start-level="30">mvn:org.ops4j.pax.url/pax-url-obr/2.5.4/jar/uber</bundle>
+ </feature>
+
+ <feature name="bundle" description="Provide Bundle support" version="4.2.1">
+ <feature>jaas-boot</feature>
+ <bundle start-level="30">mvn:org.apache.karaf.bundle/org.apache.karaf.bundle.core/4.2.1</bundle>
+ <conditional>
+ <condition>management</condition>
+ <config name="jmx.acl.org.apache.karaf.bundle">
+################################################################################
+#
+# 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.
+#
+################################################################################
+
+#
+# JMX ACL specific to the org.apache.karaf:type=bundle,name=* MBean which maps to the Karaf MBean
+# to control OSGi bundles.
+#
+install = manager
+refresh = manager
+resolve = manager
+restart = manager
+setStartLevel(java.lang.String, int)[/([1-4])?[0-9]/,/.*/] = admin
+setStartLevel = manager
+start(java.lang.String)[/([1-4])?[0-9]/] = admin
+start = manager
+stop(java.lang.String)[/([1-4])?[0-9]/] = admin
+stop = manager
+uninstall(java.lang.String)["0"] = #this is a comment, no roles can perform this operation
+uninstall = admin
+update(java.lang.String)[/([1-4])?[0-9]/] = admin
+update(java.lang.String,java.lang.String)[/([1-4])?[0-9]/,/.*/] = admin
+update = manager
+ </config>
+ </conditional>
+ <conditional>
+ <condition>shell</condition>
+ <config name="org.apache.karaf.command.acl.bundle">
+################################################################################
+#
+# 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.
+#
+################################################################################
+
+#
+# This configuration file defines the ACLs for commands in the bundle subshell
+#
+# For an explanation of the syntax of this file, see the file:
+# org.apache.karaf.command.acl.system.cfg
+#
+# This configuration relies on the fact that 'system' bundles need to be managed
+# with the
+# -f (--force)
+# flag. Operations with -f need admin permission. Most of these operations without
+# the 'force' option can be done by a manager.
+install = admin
+refresh[/.*[-][f].*/] = admin
+refresh = manager
+restart[/.*[-][f].*/] = admin
+restart = manager
+start[/.*[-][f].*/] = admin
+start = manager
+stop[/.*[-][f].*/] = admin
+stop = manager
+uninstall[/.*[-][f].*/] = admin
+uninstall = manager
+update[/.*[-][f].*/] = admin
+update = manager
+watch = admin
+ </config>
+ </conditional>
+ </feature>
+
+ <feature name="config" description="Provide OSGi ConfigAdmin support" version="4.2.1">
+ <bundle start-level="30">mvn:org.apache.karaf.config/org.apache.karaf.config.core/4.2.1</bundle>
+ <conditional>
+ <condition>management</condition>
+ <config name="jmx.acl.org.apache.karaf.config">
+################################################################################
+#
+# 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.
+#
+################################################################################
+
+#
+# JMX ACL specific to the org.apache.karaf:type=config,name=* MBean which maps to the Karaf MBean to interact with the
+# OSGi Config Admin service.
+#
+# For a description of the format of this file, see jmx.acl.cfg
+#
+# By default, only an admin can make changes to the JMX ACL and shell command rules, but managers can make
+# changes to other PIDs.
+#
+appendProperty(java.lang.String,java.lang.String,java.lang.String)[/jmx[.]acl.*/,/.*/,/.*/] = admin
+appendProperty(java.lang.String,java.lang.String,java.lang.String)[/org[.]apache[.]karaf[.]command[.]acl.+/,/.*/,/.*/] = admin
+appendProperty(java.lang.String,java.lang.String,java.lang.String)[/org[.]apache[.]karaf[.]service[.]acl.+/,/.*/,/.*/] = admin
+appendProperty(java.lang.String,java.lang.String,java.lang.String) = manager
+create(java.lang.String)[/jmx[.]acl.*/] = admin
+create(java.lang.String)[/org[.]apache[.]karaf[.]command[.]acl.+/] = admin
+create(java.lang.String)[/org[.]apache[.]karaf[.]service[.]acl.+/] = admin
+create(java.lang.String) = manager
+delete(java.lang.String)[/jmx[.]acl.*/] = admin
+delete(java.lang.String)[/org[.]apache[.]karaf[.]command[.]acl.+/] = admin
+delete(java.lang.String)[/org[.]apache[.]karaf[.]service[.]acl.+/] = admin
+delete(java.lang.String) = manager
+deleteProperty(java.lang.String,java.lang.String)[/jmx[.]acl.*/,/.*/] = admin
+deleteProperty(java.lang.String,java.lang.String)[/org[.]apache[.]karaf[.]command[.]acl.+/,/.*/] = admin
+deleteProperty(java.lang.String,java.lang.String)[/org[.]apache[.]karaf[.]service[.]acl.+/,/.*/] = admin
+deleteProperty(java.lang.String,java.lang.String) = manager
+setProperty(java.lang.String,java.lang.String,java.lang.String)[/jmx[.]acl.*/,/.*/,/.*/] = admin
+setProperty(java.lang.String,java.lang.String,java.lang.String)[/org[.]apache[.]karaf[.]command[.]acl.+/,/.*/,/.*/] = admin
+setProperty(java.lang.String,java.lang.String,java.lang.String)[/org[.]apache[.]karaf[.]service[.]acl.+/,/.*/,/.*/] = admin
+setProperty(java.lang.String,java.lang.String,java.lang.String) = manager
+update(java.lang.String,java.util.Map)[/jmx[.]acl.*/,/.*/] = admin
+update(java.lang.String,java.util.Map)[/org[.]apache[.]karaf[.]command[.]acl.+/,/.*/] = admin
+update(java.lang.String,java.util.Map)[/org[.]apache[.]karaf[.]service[.]acl.+/,/.*/] = admin
+update(java.lang.String,java.util.Map) = manager
+ </config>
+ </conditional>
+ <conditional>
+ <condition>shell</condition>
+ <config name="org.apache.karaf.command.acl.config">
+################################################################################
+#
+# 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.
+#
+################################################################################
+
+#
+# This configuration file defines the ACLs for various commands in the config subshell
+#
+# For an explanation of the syntax of this file, see the file:
+# org.apache.karaf.command.acl.system.cfg
+#
+cancel = manager
+delete = admin
+edit = manager
+edit[/.*jmx[.]acl.*/] = admin
+edit[/.*org[.]apache[.]karaf[.]command[.]acl[.].+/] = admin
+edit[/.*org[.]apache[.]karaf[.]service[.]acl[.].+/] = admin
+property-append = manager
+property-append[/.*jmx[.]acl.*/] = admin
+property-append[/.*org[.]apache[.]karaf[.]command[.]acl[.].+/] = admin
+property-append[/.*org[.]apache[.]karaf[.]service[.]acl[.].+/] = admin
+property-delete = manager
+property-delete[/.*jmx[.]acl.*/] = admin
+property-delete[/.*org[.]apache[.]karaf[.]command[.]acl[.].+/] = admin
+property-delete[/.*org[.]apache[.]karaf[.]service[.]acl[.].+/] = admin
+property-set = manager
+property-set[/.*jmx[.]acl.*/] = admin
+property-set[/.*org[.]apache[.]karaf[.]command[.]acl[.].+/] = admin
+property-set[/.*org[.]apache[.]karaf[.]service[.]acl[.].+/] = admin
+update = manager
+ </config>
+ </conditional>
+ </feature>
+
+ <feature name="diagnostic" description="Provide Diagnostic support" version="4.2.1">
+ <bundle start-level="30">mvn:org.apache.karaf.diagnostic/org.apache.karaf.diagnostic.core/4.2.1</bundle>
+ <library export="true" type="boot">
+ mvn:org.apache.karaf.diagnostic/org.apache.karaf.diagnostic.boot/4.2.1
+ </library>
+ </feature>
+
+ <feature name="instance" description="Provide Instance support" version="4.2.1">
+ <bundle start-level="30">mvn:org.apache.karaf.instance/org.apache.karaf.instance.core/4.2.1</bundle>
+ </feature>
+
+ <feature name="jaas" description="Provide JAAS support" version="4.2.1">
+ <config name="org.apache.karaf.jaas">
+################################################################################
+#
+# 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.
+#
+################################################################################
+
+#
+# Boolean enabling / disabling encrypted passwords
+#
+encryption.enabled = false
+
+#
+# Encryption Service name
+# the default one is 'basic'
+# a more powerful one named 'jasypt' is available
+# when installing the encryption feature
+#
+encryption.name =
+
+#
+# Encryption prefix
+#
+encryption.prefix = {CRYPT}
+
+#
+# Encryption suffix
+#
+encryption.suffix = {CRYPT}
+
+#
+# Set the encryption algorithm to use in Karaf JAAS login module
+# Supported encryption algorithms follow:
+# MD2
+# MD5
+# SHA-1
+# SHA-256
+# SHA-384
+# SHA-512
+#
+encryption.algorithm = MD5
+
+#
+# Encoding of the encrypted password.
+# Can be:
+# hexadecimal
+# base64
+#
+encryption.encoding = hexadecimal
+ </config>
+ <feature>jaas-boot</feature>
+ <bundle start-level="30">mvn:org.apache.karaf.jaas/org.apache.karaf.jaas.config/4.2.1</bundle>
+ <bundle start-level="30">mvn:org.apache.karaf.jaas/org.apache.karaf.jaas.modules/4.2.1</bundle>
+ <conditional>
+ <condition>aries-blueprint</condition>
+ <bundle start-level="30">mvn:org.apache.karaf.jaas.blueprint/org.apache.karaf.jaas.blueprint.config/4.2.1</bundle>
+ </conditional>
+ <conditional>
+ <condition>shell</condition>
+ <config name="org.apache.karaf.command.acl.jaas">
+################################################################################
+#
+# 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.
+#
+################################################################################
+
+#
+# This configuration file defines the ACLs for commands in the jaas subshell
+# Jaas commands commands have no effect until update is called.
+update = admin
+ </config>
+ <bundle start-level="30">mvn:org.apache.karaf.jaas/org.apache.karaf.jaas.command/4.2.1</bundle>
+ </conditional>
+ </feature>
+
+ <feature name="log" description="Provide Log support" version="4.2.1">
+ <config name="org.apache.karaf.log">
+################################################################################
+#
+# 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.
+#
+################################################################################
+
+#
+# This configuration file is used to configure the default values for the log:display
+# and log:exception-display commands.
+#
+
+#
+# The number of log statements to be displayed using log:display. It also defines the number
+# of lines searched for exceptions using log:exception-display. You can override this value
+# at runtime using -n in log:display.
+#
+size = "500"
+
+#
+# The pattern used to format the log statement when using log:display. This pattern is according
+# to the log4j layout. You can override this parameter at runtime using log:display with -p.
+#
+color.fatal = "bright red"
+color.error = "bright red"
+color.warn = "bright yellow"
+color.info = "bright green"
+color.debug = "cyan"
+color.trace = "cyan"
+pattern = "\u001b[90m%d{HH:mm:ss.SSS}\u001b[0m %h{%p}{FATAL=${color.fatal}, ERROR=${color.error}, WARN=${color.warn}, INFO=${color.info}, DEBUG=${color.debug}, TRACE=${color.trace}} \u001b[90m[%t]\u001b[0m %m%n"
+ </config>
+ <bundle start-level="30">mvn:org.apache.karaf.log/org.apache.karaf.log.core/4.2.1</bundle>
+ </feature>
+
+ <feature name="package" version="4.2.1" description="Package commands and mbeans">
+ <bundle start-level="30">mvn:org.apache.karaf.package/org.apache.karaf.package.core/4.2.1</bundle>
+ </feature>
+
+ <feature name="service" description="Provide Service support" version="4.2.1">
+ <bundle start-level="30">mvn:org.apache.karaf.service/org.apache.karaf.service.core/4.2.1</bundle>
+ </feature>
+
+ <feature name="system" description="Provide System support" version="4.2.1">
+ <bundle start-level="30">mvn:org.apache.karaf.system/org.apache.karaf.system.core/4.2.1</bundle>
+ <conditional>
+ <condition>shell</condition>
+ <config name="org.apache.karaf.command.acl.system">
+################################################################################
+#
+# 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.
+#
+################################################################################
+
+#
+# This configuration file defines the ACLs for commands in the system subshell
+#
+property = admin
+shutdown = admin
+start-level[/.*[1-9][0-9][0-9]+.*/] = manager # manager can set startlevels above 100
+start-level[/[^0-9]*/] = viewer # viewer can obtain the current start level
+start-level = admin # admin can set any start level, including &lt; 100
+ </config>
+ </conditional>
+ </feature>
+
+ <feature name="http" version="4.2.1" description="Implementation of the OSGI HTTP Service">
+ <feature dependency="true">pax-http-service</feature>
+ <requirement>http-service</requirement>
+ </feature>
+
+ <feature name="httplite" version="4.2.1" description="Felix Httplite OSGi HTTP Service">
+ <bundle start-level="30">mvn:org.apache.felix/org.apache.felix.httplite.complete/0.1.6</bundle>
+ <capability>http-service;provider:=felix-httplite</capability>
+ </feature>
+
+ <feature name="pax-http-service" description="Pax-Web OSGi HTTP Service" version="7.2.3">
+ <feature>pax-http</feature>
+ <bundle start-level="30">mvn:org.apache.karaf.http/org.apache.karaf.http.core/4.2.1</bundle>
+ <capability>http-service;provider:=pax-http</capability>
+ <conditional>
+ <condition>webconsole</condition>
+ <bundle start-level="30">mvn:org.apache.karaf.webconsole/org.apache.karaf.webconsole.http/4.2.1</bundle>
+ </conditional>
+ </feature>
+
+ <feature name="http-whiteboard" description="Provide HTTP Whiteboard pattern support" version="4.2.1">
+ <feature>http</feature>
+ <feature>pax-http-whiteboard</feature>
+ </feature>
+
+ <feature name="war" description="Turn Karaf as a full WebContainer" version="4.2.1">
+ <feature>http</feature>
+ <feature>pax-war</feature>
+ <bundle start-level="30">mvn:org.apache.karaf.web/org.apache.karaf.web.core/4.2.1</bundle>
+ </feature>
+
+ <feature name="jetty" version="9.4.11.v20180605">
+ <bundle dependency="true" start-level="30">mvn:org.apache.servicemix.specs/org.apache.servicemix.specs.activation-api-1.1/2.9.0</bundle>
+ <bundle dependency="true" start-level="30">mvn:javax.servlet/javax.servlet-api/3.1.0</bundle>
+ <bundle dependency="true" start-level="30">mvn:javax.mail/mail/1.4.7</bundle>
+ <bundle dependency="true" start-level="30">mvn:org.apache.geronimo.specs/geronimo-jta_1.1_spec/1.1.1</bundle>
+ <bundle dependency="true" start-level="30">mvn:javax.annotation/javax.annotation-api/1.2</bundle>
+ <bundle dependency="true" start-level="30">mvn:org.apache.geronimo.specs/geronimo-jaspic_1.0_spec/1.1</bundle>
+ <bundle dependency="true" start-level="30">mvn:org.ow2.asm/asm/6.2.1</bundle>
+ <bundle dependency="true" start-level="30">mvn:org.ow2.asm/asm-util/6.2.1</bundle>
+ <bundle dependency="true" start-level="30">mvn:org.ow2.asm/asm-tree/6.2.1</bundle>
+ <bundle dependency="true" start-level="30">mvn:org.ow2.asm/asm-analysis/6.2.1</bundle>
+ <bundle dependency="true" start-level="30">mvn:org.ow2.asm/asm-commons/6.2.1</bundle>
+ <bundle dependency="true" start-level="30">mvn:org.apache.aries.spifly/org.apache.aries.spifly.dynamic.bundle/1.0.10</bundle>
+ <bundle dependency="true" start-level="30">mvn:org.apache.aries/org.apache.aries.util/1.1.3</bundle>
+ <bundle start-level="30">mvn:org.eclipse.jetty/jetty-continuation/9.4.11.v20180605</bundle>
+ <bundle start-level="30">mvn:org.eclipse.jetty/jetty-http/9.4.11.v20180605</bundle>
+ <bundle start-level="30">mvn:org.eclipse.jetty/jetty-io/9.4.11.v20180605</bundle>
+ <bundle start-level="30">mvn:org.eclipse.jetty/jetty-jaspi/9.4.11.v20180605</bundle>
+ <bundle start-level="30">mvn:org.eclipse.jetty/jetty-plus/9.4.11.v20180605</bundle>
+ <bundle start-level="30">mvn:org.eclipse.jetty/jetty-jndi/9.4.11.v20180605</bundle>
+ <bundle start-level="30">mvn:org.eclipse.jetty/jetty-rewrite/9.4.11.v20180605</bundle>
+ <bundle start-level="30">mvn:org.eclipse.jetty/jetty-security/9.4.11.v20180605</bundle>
+ <bundle start-level="30">mvn:org.eclipse.jetty/jetty-server/9.4.11.v20180605</bundle>
+ <bundle start-level="30">mvn:org.eclipse.jetty/jetty-servlet/9.4.11.v20180605</bundle>
+ <bundle start-level="30">mvn:org.eclipse.jetty/jetty-servlets/9.4.11.v20180605</bundle>
+ <bundle start-level="30">mvn:org.eclipse.jetty/jetty-util/9.4.11.v20180605</bundle>
+ <bundle start-level="30">mvn:org.eclipse.jetty/jetty-util-ajax/9.4.11.v20180605</bundle>
+ <bundle start-level="30">mvn:org.eclipse.jetty/jetty-webapp/9.4.11.v20180605</bundle>
+ <bundle start-level="30">mvn:org.eclipse.jetty/jetty-jaas/9.4.11.v20180605</bundle>
+ <bundle start-level="30">mvn:org.eclipse.jetty/jetty-xml/9.4.11.v20180605</bundle>
+ <bundle start-level="30">mvn:org.eclipse.jetty/jetty-client/9.4.11.v20180605</bundle>
+ <bundle start-level="30">mvn:org.eclipse.jetty/jetty-deploy/9.4.11.v20180605</bundle>
+ <bundle start-level="30">mvn:org.eclipse.jetty/jetty-jmx/9.4.11.v20180605</bundle>
+ <bundle start-level="30">mvn:org.eclipse.jetty.websocket/websocket-server/9.4.11.v20180605</bundle>
+ <bundle start-level="30">mvn:org.eclipse.jetty.websocket/websocket-client/9.4.11.v20180605</bundle>
+ <bundle start-level="30">mvn:org.eclipse.jetty.websocket/websocket-common/9.4.11.v20180605</bundle>
+ <bundle start-level="30">mvn:org.eclipse.jetty.websocket/websocket-servlet/9.4.11.v20180605</bundle>
+ <bundle start-level="30">mvn:org.eclipse.jetty.websocket/websocket-api/9.4.11.v20180605</bundle>
+ <bundle start-level="30">mvn:org.eclipse.jetty.websocket/javax-websocket-server-impl/9.4.11.v20180605</bundle>
+ <bundle start-level="30">mvn:org.eclipse.jetty.websocket/javax-websocket-client-impl/9.4.11.v20180605</bundle>
+ <bundle start-level="30">mvn:javax.websocket/javax.websocket-api/1.1</bundle>
+ </feature>
+
+ <feature name="jetty" version="8.1.14.v20131031">
+ <bundle dependency="true" start-level="30">mvn:org.apache.servicemix.specs/org.apache.servicemix.specs.activation-api-1.1/2.9.0</bundle>
+ <bundle dependency="true" start-level="30">mvn:javax.servlet/javax.servlet-api/3.1.0</bundle>
+ <bundle dependency="true" start-level="30">mvn:javax.mail/mail/1.4.7</bundle>
+ <bundle dependency="true" start-level="30">mvn:org.apache.geronimo.specs/geronimo-jta_1.1_spec/1.1.1</bundle>
+ <bundle dependency="true" start-level="30">mvn:org.apache.geronimo.specs/geronimo-annotation_1.1_spec/1.0.1</bundle>
+ <bundle dependency="true" start-level="30">mvn:org.apache.geronimo.specs/geronimo-jaspic_1.0_spec/1.1</bundle>
+ <bundle start-level="30">mvn:org.eclipse.jetty.aggregate/jetty-all-server/8.1.14.v20131031</bundle>
+ </feature>
+
+ <feature name="kar" description="Provide KAR (KARaf archive) support" version="4.2.1">
+ <bundle start-level="30">mvn:org.apache.karaf.kar/org.apache.karaf.kar.core/4.2.1</bundle>
+ <conditional>
+ <condition>shell</condition>
+ <config name="org.apache.karaf.command.acl.kar">
+################################################################################
+#
+# 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.
+#
+################################################################################
+
+#
+# This configuration file defines the ACLs for commands in the kar subshell
+#
+# For an explanation of the syntax of this file, see the file:
+# org.apache.karaf.command.acl.system.cfg
+#
+install = admin
+uninstall = admin
+ </config>
+ </conditional>
+ </feature>
+
+ <feature name="webconsole" description="Base support of the Karaf WebConsole" version="4.2.1">
+ <feature>jaas-boot</feature>
+ <config name="org.apache.karaf.webconsole">
+################################################################################
+#
+# 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.
+#
+################################################################################
+
+realm=karaf
+ </config>
+ <feature>http</feature>
+ <bundle start-level="30">mvn:org.apache.felix/org.apache.felix.metatype/1.2.0</bundle>
+ <bundle start-level="30">mvn:org.apache.karaf.webconsole/org.apache.karaf.webconsole.console/4.2.1</bundle>
+ <bundle start-level="30">mvn:org.apache.felix/org.apache.felix.webconsole.plugins.memoryusage/1.0.8</bundle>
+ <conditional>
+ <condition>instance</condition>
+ <bundle start-level="30">mvn:org.apache.karaf.webconsole/org.apache.karaf.webconsole.instance/4.2.1</bundle>
+ </conditional>
+ <conditional>
+ <condition>shell</condition>
+ <bundle start-level="30">mvn:org.apache.karaf.webconsole/org.apache.karaf.webconsole.gogo/4.2.1</bundle>
+ </conditional>
+ <conditional>
+ <condition>feature</condition>
+ <bundle start-level="30">mvn:org.apache.karaf.webconsole/org.apache.karaf.webconsole.features/4.2.1</bundle>
+ </conditional>
+ </feature>
+
+ <feature name="ssh" description="Provide a SSHd server on Karaf" version="4.2.1">
+ <feature>shell</feature>
+ <feature>jaas</feature>
+ <bundle start-level="30">mvn:org.apache.sshd/sshd-core/1.7.0</bundle>
+ <bundle start-level="30">mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.not-yet-commons-ssl/0.3.11_1</bundle>
+ <bundle start-level="30">mvn:org.apache.karaf.shell/org.apache.karaf.shell.ssh/4.2.1</bundle>
+ </feature>
+
+ <feature name="management" description="Provide a JMX MBeanServer and a set of MBeans in Karaf" version="4.2.1">
+ <config name="jmx.acl">
+################################################################################
+#
+# 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.
+#
+################################################################################
+
+#
+# Generic JMX ACL
+#
+# This file defines the roles required for MBean operations for MBeans that
+# do not have this defined explicitly.
+#
+# The definition of ACLs for JMX operations works as follows:
+#
+# The required roles for JMX operations are defined in configuration files
+# read via OSGi ConfigAdmin.
+#
+# JMX RBAC-related configuration is prefixed with jmx.acl and based on the
+# JMX ObjectName that it applies to. For example specific configuration for
+# an MBean with the following objectName: foo.bar:type=Test can be placed in
+# a configuration file called jmx.acl.foo.bar.Test.cfg. More generic
+# configuration can be placed in the domain (e.g. jmx.acl.foo.bar.cfg) or
+# at the top level (jmx.acl.cfg). A simple configuration file looks like
+# this:
+# test : admin
+# getVal : manager, viewer
+#
+# The system looks for required roles using the following process:
+# The most specific configuration file/pid is tried first. E.g. in the
+# above example the jmx.acl.foo.bar.Test.cfg is looked at first. In this
+# configuration, the system looks for a:
+# 1. Specific match for the current invocation, e.g. test(int)["17"] : role1
+# 2. Reg exp match for the current invocation, e.g. test(int)[/[0-9]/] : role2
+# In both cases the passed argument is converted to a String for the
+# comparison.
+# If any of the above match all the roles with matching definitions
+# are collected and allowed. If no matches are found the following is tried:
+# 3. Signature match for the invocation, e.g. test(int) : role3. If
+# matched the associated roles are used.
+# 4. Method name match for the invocation, e.g. test : role4. If matched
+# the associated roles are used.
+# 5. A method name wildcard match, e.g. te* : role5. For all the
+# wildcard matches found in the current configuration file, the roles
+# associated with the longest match are used. So if you have te* and * and
+# the method invoked is 'test', then the roles defined with te* are used,
+# not the ones defined with *.
+# If no matching definition is found in the current configuration file, a
+# more general configuration file is looked for. So jmx.acl.foo.bar.cfg is
+# tried next, this matches the domain of the MBean. If there is no match
+# found in the domain the most generic configuration file is consulted
+# (jmx.acl.cfg).
+# If a matching definition is found, this is used and the process will not
+# look for any other matching definitions. So the most specific definition
+# always takes precedence.
+#
+list* = viewer
+get* = viewer
+is* = viewer
+set* = admin
+* = admin
+ </config>
+ <config name="jmx.acl.org.apache.karaf.security.jmx">
+################################################################################
+#
+# 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.
+#
+################################################################################
+
+#
+# JMX ACL specific to the org.apache.karaf:type=security,area=jmx MBean which
+# can be used to find out whether the currently logged in JMX user can invoke
+# the requested JMX operations.
+#
+# For a description of the format of this file, see jmx.acl.cfg
+#
+canInvoke = viewer
+ </config>
+ <config name="jmx.acl.java.lang.Memory">
+################################################################################
+#
+# 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.
+#
+################################################################################
+
+#
+# JMX ACL specific to the java.lang.Memory MBean
+#
+# For a description of the format of this file, see jmx.acl.cfg
+#
+gc = manager
+ </config>
+ <config name="jmx.acl.osgi.compendium.cm">
+################################################################################
+#
+# 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.
+#
+################################################################################
+
+#
+# JMX ACL specific to osgi.compendium.cm MBean
+#
+# For a description of the format of this file, see jmx.acl.cfg
+#
+# This configuration file configures the management of ConfigAdmin via the standard ConfigAdmin MBean
+# Such that only an admin can make changes to the JMX ACL rules, but managers can make
+# changes to other PIDs.
+#
+createFactoryConfiguration(java.lang.String)[/jmx[.]acl.*/] = admin
+createFactoryConfiguration(java.lang.String)[/org[.]apache[.]karaf[.]command[.]acl[.].+/] = admin
+createFactoryConfiguration(java.lang.String)[/org[.]apache[.]karaf[.]service[.]acl[.].+/] = admin
+createFactoryConfiguration(java.lang.String) = manager
+createFactoryConfigurationForLocation(java.lang.String,java.lang.String)[/jmx[.]acl.*/,/.*/] = admin
+createFactoryConfigurationForLocation(java.lang.String,java.lang.String)[/org[.]apache[.]karaf[.]command[.]acl[.].+/,/.*/] = admin
+createFactoryConfigurationForLocation(java.lang.String,java.lang.String)[/org[.]apache[.]karaf[.]service[.]acl[.].+/,/.*/] = admin
+createFactoryConfigurationForLocation(java.lang.String,java.lang.String) = manager
+delete(java.lang.String)[/jmx[.]acl.*/] = admin
+delete(java.lang.String)[/org[.]apache[.]karaf[.]command[.]acl[.].+/] = admin
+delete(java.lang.String)[/org[.]apache[.]karaf[.]service[.]acl[.].+/] = admin
+delete(java.lang.String) = manager
+deleteConfigurations = admin
+deleteForLocation(java.lang.String,java.lang.String)[/jmx[.]acl.*/,/.*/] = admin
+deleteForLocation(java.lang.String,java.lang.String)[/org[.]apache[.]karaf[.]command[.]acl[.].+/,/.*/] = admin
+deleteForLocation(java.lang.String,java.lang.String)[/org[.]apache[.]karaf[.]service[.]acl[.].+/,/.*/] = admin
+deleteForLocation(java.lang.String,java.lang.String) = manager
+update(java.lang.String,javax.management.openmbean.TabularData)[/jmx[.]acl.*/,/.*/] = admin
+update(java.lang.String,javax.management.openmbean.TabularData)[/org[.]apache[.]karaf[.]command[.]acl[.].+/,/.*/] = admin
+update(java.lang.String,javax.management.openmbean.TabularData)[/org[.]apache[.]karaf[.]service[.]acl[.].+/,/.*/] = admin
+update(java.lang.String,javax.management.openmbean.TabularData) = manager
+updateForLocation(java.lang.String,java.lang.String,javax.management.openmbean.TabularData)[/jmx[.]acl.*/,/.*/,/.*/] = admin
+updateForLocation(java.lang.String,java.lang.String,javax.management.openmbean.TabularData)[/org[.]apache[.]karaf[.]command[.]acl[.].+/,/.*/,/.*/] = admin
+updateForLocation(java.lang.String,java.lang.String,javax.management.openmbean.TabularData)[/org[.]apache[.]karaf[.]service[.]acl[.].+/,/.*/,/.*/] = admin
+updateForLocation(java.lang.String,java.lang.String,javax.management.openmbean.TabularData) = manager
+ </config>
+ <config name="org.apache.karaf.management">
+################################################################################
+#
+# 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 properties in this file define the configuration of Apache Karaf's JMX Management
+#
+
+#
+# Port number for RMI registry connection
+#
+rmiRegistryPort = 1099
+
+#
+# Host for RMI registry
+#
+rmiRegistryHost = 127.0.0.1
+
+#
+# Port number for RMI server connection
+#
+rmiServerPort = 44444
+
+#
+# Host for RMI server
+#
+rmiServerHost = 127.0.0.1
+
+#
+# Name of the JAAS realm used for authentication
+#
+jmxRealm = karaf
+
+#
+# The service URL for the JMXConnectorServer
+#
+serviceUrl = service:jmx:rmi://${rmiServerHost}:${rmiServerPort}/jndi/rmi://${rmiRegistryHost}:${rmiRegistryPort}/karaf-${karaf.name}
+
+#
+# Whether any threads started for the JMXConnectorServer should be started as daemon threads
+#
+daemon = true
+
+#
+# Whether the JMXConnectorServer should be started in a separate thread
+#
+threaded = true
+
+#
+# The ObjectName used to register the JMXConnectorServer
+#
+objectName = connector:name=rmi
+
+#
+# Timeout to lookup for the keystore in case of SSL authentication usage
+#
+#keyStoreAvailabilityTimeout = 5000
+
+#
+# The type of authentication
+#
+#authenticatorType = password
+
+#
+# Enable or not SSL/TLS
+#
+#secured = false
+
+#
+# Secure algorithm to use
+#
+#secureAlgorithm = default
+
+#
+# Secure protocol to use
+#
+#secureProtocol = TLS
+
+#
+# Keystore to use for secure mode
+#
+#keyStore = karaf.ks
+
+#
+# Alias of the key to use in the keystore
+#
+#keyAlias = karaf
+
+#
+# Truststore to use for secure mode
+#
+#trustStore = karaf.ts
+
+#
+# Create the JMX RMI registry
+#
+#createRmiRegistry = true
+
+#
+# Locate the JMX RMI registry
+#
+#locateRmiRegistry = true
+
+#
+# Locate an existing MBean server if possible (usefull when Karaf is embedded)
+#
+#locateExistingMBeanServerIfPossible = true
+ </config>
+ <feature>jaas</feature>
+ <bundle dependency="true" start-level="20">mvn:org.apache.aries/org.apache.aries.util/1.1.3</bundle>
+ <bundle start-level="30">mvn:org.apache.karaf.management/org.apache.karaf.management.server/4.2.1</bundle>
+ <bundle start-level="30">mvn:org.apache.aries.jmx/org.apache.aries.jmx.api/1.1.5</bundle>
+ <bundle start-level="30">mvn:org.apache.aries.jmx/org.apache.aries.jmx.core/1.1.8</bundle>
+ <bundle start-level="30">mvn:org.apache.aries.jmx/org.apache.aries.jmx.whiteboard/1.2.0</bundle>
+ <conditional>
+ <condition>aries-blueprint</condition>
+ <bundle start-level="30">mvn:org.apache.aries.jmx/org.apache.aries.jmx.blueprint.api/1.2.0</bundle>
+ <bundle start-level="30">mvn:org.apache.aries.jmx/org.apache.aries.jmx.blueprint.core/1.2.0</bundle>
+ </conditional>
+ </feature>
+
+ <feature name="scheduler" description="Provide a scheduler service in Karaf to fire events" version="4.2.1">
+ <config name="org.apache.karaf.scheduler.quartz">
+################################################################################
+#
+# 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.
+#
+################################################################################
+
+#============================================================================
+# Configure Karaf Scheduler Properties
+#============================================================================
+org.quartz.scheduler.instanceName=Karaf
+org.quartz.scheduler.instanceId=AUTO
+
+#============================================================================
+# Configure ThreadPool
+#============================================================================
+org.quartz.threadPool.class=org.quartz.simpl.SimpleThreadPool
+org.quartz.threadPool.threadCount=30
+org.quartz.threadPool.threadPriority=5
+
+#============================================================================
+# Configure JobStore
+#============================================================================
+org.quartz.jobStore.class=org.quartz.simpl.RAMJobStore
+ </config>
+ <bundle start-level="30">mvn:org.apache.karaf.scheduler/org.apache.karaf.scheduler.core/4.2.1</bundle>
+ </feature>
+
+ <feature name="eventadmin" description="OSGi Event Admin service specification for event-based communication" version="4.2.1">
+ <config name="org.apache.felix.eventadmin.impl.EventAdmin">
+################################################################################
+#
+# 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.
+#
+################################################################################
+
+org.apache.felix.eventadmin.AddTimestamp=true
+org.apache.felix.eventadmin.AddSubject=true
+ </config>
+ <bundle start-level="5">mvn:org.apache.felix/org.apache.felix.metatype/1.2.0</bundle>
+ <bundle start-level="5">mvn:org.apache.karaf.services/org.apache.karaf.services.eventadmin/4.2.1</bundle>
+ <conditional>
+ <condition>shell</condition>
+ <bundle>mvn:org.apache.karaf/org.apache.karaf.event/4.2.1</bundle>
+ </conditional>
+ <conditional>
+ <condition>webconsole</condition>
+ <bundle start-level="30">mvn:org.apache.felix/org.apache.felix.webconsole.plugins.event/1.1.8</bundle>
+ </conditional>
+ </feature>
+
+ <feature name="jasypt-encryption" description="Advanced encryption support for Karaf security" version="4.2.1">
+ <feature>jaas</feature>
+ <bundle dependency="true" start-level="30">mvn:commons-codec/commons-codec/1.10</bundle>
+ <bundle dependency="true" start-level="30">mvn:commons-lang/commons-lang/2.6</bundle>
+ <bundle dependency="true" start-level="30">mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.jasypt/1.9.2_1</bundle>
+ <bundle start-level="30">mvn:org.apache.karaf.jaas/org.apache.karaf.jaas.jasypt/4.2.1</bundle>
+ <conditional>
+ <condition>aries-blueprint</condition>
+ <bundle start-level="30">mvn:org.apache.karaf.jaas.blueprint/org.apache.karaf.jaas.blueprint.jasypt/4.2.1</bundle>
+ </conditional>
+ <conditional>
+ <condition>spring</condition>
+ <bundle start-level="30">mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.jasypt-spring31/1.9.2_1</bundle>
+ </conditional>
+ </feature>
+
+ <feature name="scr" description="Declarative Service support" version="4.2.1">
+ <bundle dependency="true" start-level="30">mvn:org.apache.felix/org.apache.felix.metatype/1.2.0</bundle>
+ <bundle start-level="30">mvn:org.apache.felix/org.apache.felix.scr/2.1.2</bundle>
+ <conditional>
+ <condition>management</condition>
+ <bundle start-level="30">mvn:org.apache.karaf.scr/org.apache.karaf.scr.management/4.2.1</bundle>
+ </conditional>
+ <conditional>
+ <condition>webconsole</condition>
+ <bundle start-level="30">mvn:org.apache.felix/org.apache.felix.inventory/1.0.4</bundle>
+ <bundle start-level="30">mvn:org.apache.felix/org.apache.felix.webconsole.plugins.ds/2.0.8</bundle>
+ </conditional>
+ <conditional>
+ <condition>bundle</condition>
+ <bundle start-level="30">mvn:org.apache.karaf.scr/org.apache.karaf.scr.state/4.2.1</bundle>
+ </conditional>
+ <capability>
+ osgi.service;effective:=active;objectClass=org.apache.felix.scr.ScrService,
+ osgi.extender;osgi.extender="osgi.component";uses:="org.osgi.service.component";version:Version="1.2.1"
+ </capability>
+ </feature>
+
+ <feature name="blueprint-web" description="Provides an OSGI-aware Servlet ContextListener for bootstrapping
+ blueprint inside web-bundle containers" version="4.2.1">
+ <feature>war</feature>
+ <feature>aries-blueprint</feature>
+ <bundle>mvn:org.apache.aries.blueprint/org.apache.aries.blueprint.webosgi/1.0.1</bundle>
+ </feature>
+
+ <feature name="wrap" description="Wrap URL handler" version="2.5.4">
+ <bundle start-level="5">mvn:org.ops4j.pax.url/pax-url-wrap/2.5.4/jar/uber</bundle>
+ </feature>
+
+ <feature name="profile" description="Profiles support" version="4.2.1">
+ <config name="org.apache.karaf.profile">
+################################################################################
+#
+# 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.
+#
+################################################################################
+
+profilesDirectory = ${karaf.home}/profiles
+ </config>
+ <bundle>mvn:org.apache.karaf.profile/org.apache.karaf.profile.core/4.2.1</bundle>
+ <bundle>mvn:org.apache.karaf.tooling/org.apache.karaf.tools.utils/4.2.1</bundle>
+ <bundle>mvn:commons-io/commons-io/2.6</bundle>
+ </feature>
+
+ <feature name="jolokia" description="Jolokia monitoring support" version="1.5.0">
+ <feature>http</feature>
+ <config name="org.jolokia.osgi">
+################################################################################
+#
+# 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.
+#
+################################################################################
+
+org.jolokia.user=karaf
+org.jolokia.realm=karaf
+org.jolokia.authMode=jaas
+ </config>
+ <bundle>mvn:org.jolokia/jolokia-osgi/1.5.0</bundle>
+ </feature>
+
+ <feature name="maven" description="Commands for Maven configuration of services from pax-url-aether" version="4.2.1">
+ <feature>shell</feature>
+ <bundle start-level="30">mvn:org.apache.karaf.maven/org.apache.karaf.maven.core/4.2.1</bundle>
+ <bundle dependency="true">mvn:org.apache.commons/commons-lang3/3.7</bundle>
+ <config name="org.apache.karaf.command.acl.maven">
+################################################################################
+#
+# 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.
+#
+################################################################################
+
+#
+# This configuration file defines the ACLs for maven configuration commands
+#
+summary[/.*[-][x].*/] = admin
+summary = viewer
+http-proxy-list[/.*[-][x].*/] = admin
+http-proxy-list = viewer
+repository-list[/.*[-][x].*/] = admin
+repository-list = viewer
+http-proxy = admin
+password = admin
+repository-add = admin
+repository-change = admin
+repository-remove = admin
+ </config>
+ </feature>
+
+ <feature name="audit-log" description="Security audit logging" version="4.2.1">
+ <feature>eventadmin</feature>
+ <bundle start-level="20">mvn:org.apache.karaf.audit/org.apache.karaf.audit.core/4.2.1</bundle>
+ <config name="org.apache.karaf.audit">
+################################################################################
+#
+# 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.
+#
+################################################################################
+
+# Security audit configuration
+# Only the above 4 loggers are supported
+# Supported layouts include: simple, gelf, rfc3164, rfc5424
+
+# Queue type
+queue.class = java.util.concurrent.ArrayBlockingQueue
+# Queue size
+queue.size = 256
+# Idle timeout
+runner.idle-timeout = 60000
+# Flush timeout
+runner.flush-timeout = 100
+# Event filter
+# filter = (!(type=log))
+
+# File logger
+file.enabled = true
+file.target = ${karaf.data}/log/audit.txt
+file.encoding = UTF-8
+file.layout.type = simple
+# rotating policy: can be 'daily', 'size([0-9]+(kb|mb|gb)?\)'
+file.policy = daily
+file.files = 32
+file.compress = false
+
+# Tcp logger
+# tcp.enabled = true
+# tcp.host = localhost
+# tcp.port = 8125
+# tcp.encoding = UTF-8
+# tcp.layout.type = gelf
+
+# Udp logger
+# udp.enabled = true
+# udp.host = localhost
+# udp.port = 514
+# udp.encoding = UTF-8
+# udp.layout.type = rfc3164
+
+# JUL logger
+jul.enabled = false
+jul.logger = audit
+jul.level = info
+jul.layout.type = simple
+ </config>
+ </feature>
+
+ <feature name="documentation" description="Documentation of Karaf project in HTML" version="4.2.1">
+ <feature>war</feature>
+ <bundle>mvn:org.apache.karaf/manual/4.2.1</bundle>
+ </feature>
+
+ <feature name="standard" description="Wrap feature describing all features part of a standard distribution" version="4.2.1">
+ <feature>wrap</feature>
+ <feature>aries-blueprint</feature>
+ <feature>shell</feature>
+ <feature>shell-compat</feature>
+ <feature>feature</feature>
+ <feature>jaas</feature>
+ <feature>ssh</feature>
+ <feature>management</feature>
+ <feature>bundle</feature>
+ <feature>config</feature>
+ <feature>deployer</feature>
+ <feature>diagnostic</feature>
+ <feature>feature</feature>
+ <feature>instance</feature>
+ <feature>kar</feature>
+ <feature>log</feature>
+ <feature>package</feature>
+ <feature>service</feature>
+ <feature>system</feature>
+ </feature>
+
+ <feature name="minimal" description="Wrap feature describing all features part of a minimal distribution" version="4.2.1">
+ <feature>jaas</feature>
+ <feature>shell</feature>
+ <feature>feature</feature>
+ <feature>ssh</feature>
+ <feature>management</feature>
+ <feature>bundle</feature>
+ <feature>config</feature>
+ <feature>deployer</feature>
+ <feature>diagnostic</feature>
+ <feature>instance</feature>
+ <feature>kar</feature>
+ <feature>log</feature>
+ <feature>package</feature>
+ <feature>service</feature>
+ <feature>system</feature>
+ </feature>
+
+</features>
diff --git a/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/apache/karaf/instance/org.apache.karaf.instance.core/4.2.1/org.apache.karaf.instance.core-4.2.1.jar b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/apache/karaf/instance/org.apache.karaf.instance.core/4.2.1/org.apache.karaf.instance.core-4.2.1.jar
new file mode 100644
index 0000000000..203c059eb6
--- /dev/null
+++ b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/apache/karaf/instance/org.apache.karaf.instance.core/4.2.1/org.apache.karaf.instance.core-4.2.1.jar
Binary files differ
diff --git a/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/apache/karaf/jaas/blueprint/org.apache.karaf.jaas.blueprint.config/4.2.1/org.apache.karaf.jaas.blueprint.config-4.2.1.jar b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/apache/karaf/jaas/blueprint/org.apache.karaf.jaas.blueprint.config/4.2.1/org.apache.karaf.jaas.blueprint.config-4.2.1.jar
new file mode 100644
index 0000000000..d52cc0a65d
--- /dev/null
+++ b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/apache/karaf/jaas/blueprint/org.apache.karaf.jaas.blueprint.config/4.2.1/org.apache.karaf.jaas.blueprint.config-4.2.1.jar
Binary files differ
diff --git a/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/apache/karaf/jaas/org.apache.karaf.jaas.boot/4.2.1/org.apache.karaf.jaas.boot-4.2.1.jar b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/apache/karaf/jaas/org.apache.karaf.jaas.boot/4.2.1/org.apache.karaf.jaas.boot-4.2.1.jar
new file mode 100644
index 0000000000..d242c10c4d
--- /dev/null
+++ b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/apache/karaf/jaas/org.apache.karaf.jaas.boot/4.2.1/org.apache.karaf.jaas.boot-4.2.1.jar
Binary files differ
diff --git a/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/apache/karaf/jaas/org.apache.karaf.jaas.command/4.2.1/org.apache.karaf.jaas.command-4.2.1.jar b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/apache/karaf/jaas/org.apache.karaf.jaas.command/4.2.1/org.apache.karaf.jaas.command-4.2.1.jar
new file mode 100644
index 0000000000..762ebe13f6
--- /dev/null
+++ b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/apache/karaf/jaas/org.apache.karaf.jaas.command/4.2.1/org.apache.karaf.jaas.command-4.2.1.jar
Binary files differ
diff --git a/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/apache/karaf/jaas/org.apache.karaf.jaas.config/4.2.1/org.apache.karaf.jaas.config-4.2.1.jar b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/apache/karaf/jaas/org.apache.karaf.jaas.config/4.2.1/org.apache.karaf.jaas.config-4.2.1.jar
new file mode 100644
index 0000000000..51eb7c1e90
--- /dev/null
+++ b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/apache/karaf/jaas/org.apache.karaf.jaas.config/4.2.1/org.apache.karaf.jaas.config-4.2.1.jar
Binary files differ
diff --git a/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/apache/karaf/jaas/org.apache.karaf.jaas.modules/4.2.1/org.apache.karaf.jaas.modules-4.2.1.jar b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/apache/karaf/jaas/org.apache.karaf.jaas.modules/4.2.1/org.apache.karaf.jaas.modules-4.2.1.jar
new file mode 100644
index 0000000000..f9831e33cb
--- /dev/null
+++ b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/apache/karaf/jaas/org.apache.karaf.jaas.modules/4.2.1/org.apache.karaf.jaas.modules-4.2.1.jar
Binary files differ
diff --git a/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/apache/karaf/kar/org.apache.karaf.kar.core/4.2.1/org.apache.karaf.kar.core-4.2.1.jar b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/apache/karaf/kar/org.apache.karaf.kar.core/4.2.1/org.apache.karaf.kar.core-4.2.1.jar
new file mode 100644
index 0000000000..80cf4c4ad7
--- /dev/null
+++ b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/apache/karaf/kar/org.apache.karaf.kar.core/4.2.1/org.apache.karaf.kar.core-4.2.1.jar
Binary files differ
diff --git a/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/apache/karaf/log/org.apache.karaf.log.core/4.2.1/org.apache.karaf.log.core-4.2.1.jar b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/apache/karaf/log/org.apache.karaf.log.core/4.2.1/org.apache.karaf.log.core-4.2.1.jar
new file mode 100644
index 0000000000..d27a689861
--- /dev/null
+++ b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/apache/karaf/log/org.apache.karaf.log.core/4.2.1/org.apache.karaf.log.core-4.2.1.jar
Binary files differ
diff --git a/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/apache/karaf/management/org.apache.karaf.management.server/4.2.1/org.apache.karaf.management.server-4.2.1.jar b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/apache/karaf/management/org.apache.karaf.management.server/4.2.1/org.apache.karaf.management.server-4.2.1.jar
new file mode 100644
index 0000000000..94cc6b5021
--- /dev/null
+++ b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/apache/karaf/management/org.apache.karaf.management.server/4.2.1/org.apache.karaf.management.server-4.2.1.jar
Binary files differ
diff --git a/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/apache/karaf/org.apache.karaf.client/4.2.1/org.apache.karaf.client-4.2.1.jar b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/apache/karaf/org.apache.karaf.client/4.2.1/org.apache.karaf.client-4.2.1.jar
new file mode 100644
index 0000000000..dda67b1b84
--- /dev/null
+++ b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/apache/karaf/org.apache.karaf.client/4.2.1/org.apache.karaf.client-4.2.1.jar
Binary files differ
diff --git a/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/apache/karaf/org.apache.karaf.event/4.2.1/org.apache.karaf.event-4.2.1.jar b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/apache/karaf/org.apache.karaf.event/4.2.1/org.apache.karaf.event-4.2.1.jar
new file mode 100644
index 0000000000..c6b7be5344
--- /dev/null
+++ b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/apache/karaf/org.apache.karaf.event/4.2.1/org.apache.karaf.event-4.2.1.jar
Binary files differ
diff --git a/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/apache/karaf/package/org.apache.karaf.package.core/4.2.1/org.apache.karaf.package.core-4.2.1.jar b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/apache/karaf/package/org.apache.karaf.package.core/4.2.1/org.apache.karaf.package.core-4.2.1.jar
new file mode 100644
index 0000000000..ae99f8c42d
--- /dev/null
+++ b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/apache/karaf/package/org.apache.karaf.package.core/4.2.1/org.apache.karaf.package.core-4.2.1.jar
Binary files differ
diff --git a/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/apache/karaf/service/org.apache.karaf.service.core/4.2.1/org.apache.karaf.service.core-4.2.1.jar b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/apache/karaf/service/org.apache.karaf.service.core/4.2.1/org.apache.karaf.service.core-4.2.1.jar
new file mode 100644
index 0000000000..c676c1714e
--- /dev/null
+++ b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/apache/karaf/service/org.apache.karaf.service.core/4.2.1/org.apache.karaf.service.core-4.2.1.jar
Binary files differ
diff --git a/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/apache/karaf/services/org.apache.karaf.services.eventadmin/4.2.1/org.apache.karaf.services.eventadmin-4.2.1.jar b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/apache/karaf/services/org.apache.karaf.services.eventadmin/4.2.1/org.apache.karaf.services.eventadmin-4.2.1.jar
new file mode 100644
index 0000000000..5d8aaccd7b
--- /dev/null
+++ b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/apache/karaf/services/org.apache.karaf.services.eventadmin/4.2.1/org.apache.karaf.services.eventadmin-4.2.1.jar
Binary files differ
diff --git a/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/apache/karaf/shell/org.apache.karaf.shell.commands/4.2.1/org.apache.karaf.shell.commands-4.2.1.jar b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/apache/karaf/shell/org.apache.karaf.shell.commands/4.2.1/org.apache.karaf.shell.commands-4.2.1.jar
new file mode 100644
index 0000000000..45c3a67e18
--- /dev/null
+++ b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/apache/karaf/shell/org.apache.karaf.shell.commands/4.2.1/org.apache.karaf.shell.commands-4.2.1.jar
Binary files differ
diff --git a/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/apache/karaf/shell/org.apache.karaf.shell.console/4.2.1/org.apache.karaf.shell.console-4.2.1.jar b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/apache/karaf/shell/org.apache.karaf.shell.console/4.2.1/org.apache.karaf.shell.console-4.2.1.jar
new file mode 100644
index 0000000000..c196183f67
--- /dev/null
+++ b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/apache/karaf/shell/org.apache.karaf.shell.console/4.2.1/org.apache.karaf.shell.console-4.2.1.jar
Binary files differ
diff --git a/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/apache/karaf/shell/org.apache.karaf.shell.core/4.2.1/org.apache.karaf.shell.core-4.2.1.jar b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/apache/karaf/shell/org.apache.karaf.shell.core/4.2.1/org.apache.karaf.shell.core-4.2.1.jar
new file mode 100644
index 0000000000..3ba2bf1258
--- /dev/null
+++ b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/apache/karaf/shell/org.apache.karaf.shell.core/4.2.1/org.apache.karaf.shell.core-4.2.1.jar
Binary files differ
diff --git a/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/apache/karaf/shell/org.apache.karaf.shell.ssh/4.2.1/org.apache.karaf.shell.ssh-4.2.1.jar b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/apache/karaf/shell/org.apache.karaf.shell.ssh/4.2.1/org.apache.karaf.shell.ssh-4.2.1.jar
new file mode 100644
index 0000000000..94f180c6e5
--- /dev/null
+++ b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/apache/karaf/shell/org.apache.karaf.shell.ssh/4.2.1/org.apache.karaf.shell.ssh-4.2.1.jar
Binary files differ
diff --git a/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/apache/karaf/shell/org.apache.karaf.shell.table/4.2.1/org.apache.karaf.shell.table-4.2.1.jar b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/apache/karaf/shell/org.apache.karaf.shell.table/4.2.1/org.apache.karaf.shell.table-4.2.1.jar
new file mode 100644
index 0000000000..db5d1ce5f1
--- /dev/null
+++ b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/apache/karaf/shell/org.apache.karaf.shell.table/4.2.1/org.apache.karaf.shell.table-4.2.1.jar
Binary files differ
diff --git a/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/apache/karaf/system/org.apache.karaf.system.core/4.2.1/org.apache.karaf.system.core-4.2.1.jar b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/apache/karaf/system/org.apache.karaf.system.core/4.2.1/org.apache.karaf.system.core-4.2.1.jar
new file mode 100644
index 0000000000..67f05114ec
--- /dev/null
+++ b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/apache/karaf/system/org.apache.karaf.system.core/4.2.1/org.apache.karaf.system.core-4.2.1.jar
Binary files differ
diff --git a/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/apache/karaf/wrapper/org.apache.karaf.wrapper.core/4.2.1/org.apache.karaf.wrapper.core-4.2.1.jar b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/apache/karaf/wrapper/org.apache.karaf.wrapper.core/4.2.1/org.apache.karaf.wrapper.core-4.2.1.jar
new file mode 100644
index 0000000000..565737a3d7
--- /dev/null
+++ b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/apache/karaf/wrapper/org.apache.karaf.wrapper.core/4.2.1/org.apache.karaf.wrapper.core-4.2.1.jar
Binary files differ
diff --git a/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/apache/openjpa/openjpa-features/3.0.0/openjpa-features-3.0.0-features.xml b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/apache/openjpa/openjpa-features/3.0.0/openjpa-features-3.0.0-features.xml
new file mode 100644
index 0000000000..ad3df8d47c
--- /dev/null
+++ b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/apache/openjpa/openjpa-features/3.0.0/openjpa-features-3.0.0-features.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<features xmlns="http://karaf.apache.org/xmlns/features/v1.5.0" name="openjpa-3.0.0">
+ <feature name="openjpa" description="Apache OpenJPA 3 persistence engine support" version="3.0.0">
+ <details>Apache OpenJPA persistence engine</details>
+ <bundle dependency="true">mvn:org.apache.geronimo.specs/geronimo-jta_1.1_spec/1.1.1</bundle>
+ <bundle dependency="true">mvn:org.eclipse.persistence/javax.persistence/2.1.0</bundle>
+ <bundle dependency="true">mvn:org.apache.geronimo.specs/geronimo-annotation_1.0_spec/1.1.1</bundle>
+ <bundle dependency="true">mvn:org.apache.geronimo.specs/geronimo-el_1.0_spec/1.0.1</bundle>
+ <bundle dependency="true">mvn:commons-pool/commons-pool/1.6</bundle>
+ <bundle dependency="true">mvn:commons-dbcp/commons-dbcp/1.4</bundle>
+ <bundle dependency="true">mvn:commons-collections/commons-collections/3.2.2</bundle>
+ <bundle dependency="true">mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.serp/1.14.1_1</bundle>
+ <bundle dependency="true">mvn:org.apache.xbean/xbean-asm5-shaded/4.3</bundle>
+ <bundle>mvn:org.apache.openjpa/openjpa/3.0.0</bundle>
+ </feature>
+</features>
diff --git a/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/apache/servicemix/bundles/org.apache.servicemix.bundles.jaxb-impl/2.2.11_1/org.apache.servicemix.bundles.jaxb-impl-2.2.11_1.jar b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/apache/servicemix/bundles/org.apache.servicemix.bundles.jaxb-impl/2.2.11_1/org.apache.servicemix.bundles.jaxb-impl-2.2.11_1.jar
new file mode 100644
index 0000000000..80007f8635
--- /dev/null
+++ b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/apache/servicemix/bundles/org.apache.servicemix.bundles.jaxb-impl/2.2.11_1/org.apache.servicemix.bundles.jaxb-impl-2.2.11_1.jar
Binary files differ
diff --git a/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/apache/servicemix/bundles/org.apache.servicemix.bundles.not-yet-commons-ssl/0.3.11_1/org.apache.servicemix.bundles.not-yet-commons-ssl-0.3.11_1.jar b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/apache/servicemix/bundles/org.apache.servicemix.bundles.not-yet-commons-ssl/0.3.11_1/org.apache.servicemix.bundles.not-yet-commons-ssl-0.3.11_1.jar
new file mode 100644
index 0000000000..bbb7bf2bfe
--- /dev/null
+++ b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/apache/servicemix/bundles/org.apache.servicemix.bundles.not-yet-commons-ssl/0.3.11_1/org.apache.servicemix.bundles.not-yet-commons-ssl-0.3.11_1.jar
Binary files differ
diff --git a/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/apache/servicemix/specs/org.apache.servicemix.specs.activation-api-1.1/2.5.0/org.apache.servicemix.specs.activation-api-1.1-2.5.0.jar b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/apache/servicemix/specs/org.apache.servicemix.specs.activation-api-1.1/2.5.0/org.apache.servicemix.specs.activation-api-1.1-2.5.0.jar
new file mode 100644
index 0000000000..601b1ffc99
--- /dev/null
+++ b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/apache/servicemix/specs/org.apache.servicemix.specs.activation-api-1.1/2.5.0/org.apache.servicemix.specs.activation-api-1.1-2.5.0.jar
Binary files differ
diff --git a/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/apache/servicemix/specs/org.apache.servicemix.specs.jaxb-api-2.2/2.5.0/org.apache.servicemix.specs.jaxb-api-2.2-2.5.0.jar b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/apache/servicemix/specs/org.apache.servicemix.specs.jaxb-api-2.2/2.5.0/org.apache.servicemix.specs.jaxb-api-2.2-2.5.0.jar
new file mode 100644
index 0000000000..2cc0085558
--- /dev/null
+++ b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/apache/servicemix/specs/org.apache.servicemix.specs.jaxb-api-2.2/2.5.0/org.apache.servicemix.specs.jaxb-api-2.2-2.5.0.jar
Binary files differ
diff --git a/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/apache/sshd/sshd-core/1.7.0/sshd-core-1.7.0.jar b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/apache/sshd/sshd-core/1.7.0/sshd-core-1.7.0.jar
new file mode 100644
index 0000000000..ae6d2c2fe2
--- /dev/null
+++ b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/apache/sshd/sshd-core/1.7.0/sshd-core-1.7.0.jar
Binary files differ
diff --git a/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/eclipse/platform/org.eclipse.osgi/3.12.100/org.eclipse.osgi-3.12.100.jar b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/eclipse/platform/org.eclipse.osgi/3.12.100/org.eclipse.osgi-3.12.100.jar
new file mode 100644
index 0000000000..65f823f3c1
--- /dev/null
+++ b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/eclipse/platform/org.eclipse.osgi/3.12.100/org.eclipse.osgi-3.12.100.jar
Binary files differ
diff --git a/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/fusesource/jansi/jansi/1.17.1/jansi-1.17.1.jar b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/fusesource/jansi/jansi/1.17.1/jansi-1.17.1.jar
new file mode 100644
index 0000000000..7a04257d21
--- /dev/null
+++ b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/fusesource/jansi/jansi/1.17.1/jansi-1.17.1.jar
Binary files differ
diff --git a/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/hibernate/hibernate-osgi/5.2.9.Final/hibernate-osgi-5.2.9.Final-karaf.xml b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/hibernate/hibernate-osgi/5.2.9.Final/hibernate-osgi-5.2.9.Final-karaf.xml
new file mode 100644
index 0000000000..97ab53caad
--- /dev/null
+++ b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/hibernate/hibernate-osgi/5.2.9.Final/hibernate-osgi-5.2.9.Final-karaf.xml
@@ -0,0 +1,35 @@
+<features xmlns='http://karaf.apache.org/xmlns/features/v1.2.0' name='hibernate-osgi'>
+ <feature name='hibernate-orm' description='Combines all Hibernate core dependencies and required modules into a single feature' version='5.2.9.Final'>
+ <bundle>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.antlr/2.7.7_5</bundle>
+ <bundle>mvn:org.jboss.logging/jboss-logging/3.3.0.Final</bundle>
+ <bundle dependency='true'>mvn:org.hibernate.javax.persistence/hibernate-jpa-2.1-api/1.0.0.Final</bundle>
+ <bundle>mvn:org.javassist/javassist/3.20.0-GA</bundle>
+ <bundle dependency='true'>mvn:org.jboss.spec.javax.transaction/jboss-transaction-api_1.2_spec/1.0.1.Final</bundle>
+ <bundle>mvn:org.jboss/jandex/2.0.3.Final</bundle>
+ <bundle>mvn:com.fasterxml/classmate/1.3.0</bundle>
+ <bundle>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.dom4j/1.6.1_5</bundle>
+ <bundle>mvn:org.hibernate.common/hibernate-commons-annotations/5.0.1.Final</bundle>
+ <bundle>mvn:org.hibernate/hibernate-core/5.2.9.Final</bundle>
+ <bundle>mvn:net.bytebuddy/byte-buddy/1.6.6</bundle>
+ <bundle dependency='true'>mvn:javax.interceptor/javax.interceptor-api/1.2</bundle>
+ <bundle>mvn:org.hibernate/hibernate-osgi/5.2.9.Final</bundle>
+ </feature>
+ <feature name='hibernate-envers' description='Feature for easily adding Envers support to hibernate-orm' version='5.2.9.Final'>
+ <feature>hibernate-orm</feature>
+ <bundle>mvn:org.hibernate/hibernate-envers/5.2.9.Final</bundle>
+ </feature>
+ <feature name='hibernate-infinispan' description='Feature for easily adding Infinispan-based caching support to hibernate-orm' version='5.2.9.Final'>
+ <feature>hibernate-orm</feature>
+ <bundle dependency='true'>mvn:org.infinispan/infinispan-commons/8.2.5.Final</bundle>
+ <bundle dependency='true'>mvn:org.jgroups/jgroups/3.6.7.Final</bundle>
+ <bundle>mvn:org.jboss.marshalling/jboss-marshalling-osgi/1.4.10.Final</bundle>
+ <bundle>mvn:org.infinispan/infinispan-core/8.2.5.Final</bundle>
+ <bundle>mvn:org.hibernate/hibernate-infinispan/5.2.9.Final</bundle>
+ </feature>
+ <feature name='hibernate-ehcache' description='Feature for easily adding Ehcache-based caching support to hibernate-orm' version='5.2.9.Final'>
+ <feature>hibernate-orm</feature>
+ <bundle>mvn:org.slf4j/slf4j-api/1.7.7</bundle>
+ <bundle dependency='true'>mvn:net.sf.ehcache/ehcache/2.10.3</bundle>
+ <bundle>mvn:org.hibernate/hibernate-ehcache/5.2.9.Final</bundle>
+ </feature>
+</features> \ No newline at end of file
diff --git a/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/hibernate/validator/hibernate-validator-osgi-karaf-features/6.0.12.Final/hibernate-validator-osgi-karaf-features-6.0.12.Final-features.xml b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/hibernate/validator/hibernate-validator-osgi-karaf-features/6.0.12.Final/hibernate-validator-osgi-karaf-features-6.0.12.Final-features.xml
new file mode 100644
index 0000000000..d140ab1806
--- /dev/null
+++ b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/hibernate/validator/hibernate-validator-osgi-karaf-features/6.0.12.Final/hibernate-validator-osgi-karaf-features-6.0.12.Final-features.xml
@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ ~ Hibernate Validator, declare and validate application constraints
+ ~
+ ~ License: Apache License, Version 2.0
+ ~ See the license.txt file in the root directory or <http://www.apache.org/licenses/LICENSE-2.0>.
+ -->
+<features xmlns="http://karaf.apache.org/xmlns/features/v1.4.0"
+ name="hibernate-validator-osgi-features"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://karaf.apache.org/xmlns/features/v1.4.0">
+
+ <feature name="hibernate-validator" version="6.0.12.Final">
+ <bundle>mvn:org.hibernate.validator/hibernate-validator/6.0.12.Final</bundle>
+ <bundle>mvn:javax.validation/validation-api/2.0.1.Final</bundle>
+
+ <bundle>mvn:org.jboss.logging/jboss-logging/3.3.2.Final</bundle>
+ <bundle>mvn:com.fasterxml/classmate/1.3.4</bundle>
+ <bundle>mvn:org.glassfish/javax.el/3.0.1-b09</bundle>
+ </feature>
+ <feature name="hibernate-validator-jsoup" version="6.0.12.Final">
+ <feature>hibernate-validator</feature>
+ <bundle>mvn:org.jsoup/jsoup/1.8.3</bundle>
+ </feature>
+ <feature name="hibernate-validator-joda-time" version="6.0.12.Final">
+ <feature>hibernate-validator</feature>
+ <bundle>mvn:joda-time/joda-time/2.9.7</bundle>
+ </feature>
+ <feature name="hibernate-validator-javax-money" version="6.0.12.Final">
+ <feature>hibernate-validator</feature>
+ <bundle>mvn:javax.money/money-api/1.0.1</bundle>
+ <bundle>mvn:org.javamoney/moneta/1.1</bundle>
+ <bundle>mvn:javax.annotation/javax.annotation-api/1.2</bundle>
+ </feature>
+ <feature name="hibernate-validator-groovy" version="6.0.12.Final">
+ <feature>hibernate-validator</feature>
+ <bundle>mvn:org.codehaus.groovy/groovy-all/2.4.12</bundle>
+ </feature>
+ <feature name="hibernate-validator-paranamer" version="6.0.12.Final">
+ <feature prerequisite="true">wrap</feature>
+ <feature>hibernate-validator</feature>
+ <bundle>wrap:mvn:com.thoughtworks.paranamer/paranamer/2.8</bundle>
+ </feature>
+</features>
diff --git a/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/jline/jline-builtins/3.9.0/jline-builtins-3.9.0.jar b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/jline/jline-builtins/3.9.0/jline-builtins-3.9.0.jar
new file mode 100644
index 0000000000..c986bcdf0e
--- /dev/null
+++ b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/jline/jline-builtins/3.9.0/jline-builtins-3.9.0.jar
Binary files differ
diff --git a/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/jline/jline-reader/3.9.0/jline-reader-3.9.0.jar b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/jline/jline-reader/3.9.0/jline-reader-3.9.0.jar
new file mode 100644
index 0000000000..48cb0f58b3
--- /dev/null
+++ b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/jline/jline-reader/3.9.0/jline-reader-3.9.0.jar
Binary files differ
diff --git a/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/jline/jline-terminal-jansi/3.9.0/jline-terminal-jansi-3.9.0.jar b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/jline/jline-terminal-jansi/3.9.0/jline-terminal-jansi-3.9.0.jar
new file mode 100644
index 0000000000..c245eef41d
--- /dev/null
+++ b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/jline/jline-terminal-jansi/3.9.0/jline-terminal-jansi-3.9.0.jar
Binary files differ
diff --git a/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/jline/jline-terminal/3.9.0/jline-terminal-3.9.0.jar b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/jline/jline-terminal/3.9.0/jline-terminal-3.9.0.jar
new file mode 100644
index 0000000000..d68f93461f
--- /dev/null
+++ b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/jline/jline-terminal/3.9.0/jline-terminal-3.9.0.jar
Binary files differ
diff --git a/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/jline/jline/3.9.0/jline-3.9.0.jar b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/jline/jline/3.9.0/jline-3.9.0.jar
new file mode 100644
index 0000000000..753a0d09c3
--- /dev/null
+++ b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/jline/jline/3.9.0/jline-3.9.0.jar
Binary files differ
diff --git a/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/ops4j/pax/cdi/pax-cdi-features/1.0.0/pax-cdi-features-1.0.0-features.xml b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/ops4j/pax/cdi/pax-cdi-features/1.0.0/pax-cdi-features-1.0.0-features.xml
new file mode 100644
index 0000000000..919dc40efb
--- /dev/null
+++ b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/ops4j/pax/cdi/pax-cdi-features/1.0.0/pax-cdi-features-1.0.0-features.xml
@@ -0,0 +1,151 @@
+<?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.
+
+-->
+<features name="org.ops4j.pax.cdi-1.0.0" xmlns="http://karaf.apache.org/xmlns/features/v1.4.0">
+
+ <feature name="pax-cdi" description="Provide CDI support" version="1.0.0">
+ <feature version="1.0.0" dependency="true">pax-cdi-weld</feature>
+ <requirement>
+ pax.cdi.provider
+ </requirement>
+ </feature>
+
+ <feature name="pax-cdi-core" hidden="true" version="1.0.0">
+ <bundle dependency="true">mvn:javax.interceptor/javax.interceptor-api/1.2</bundle>
+ <bundle dependency="true">mvn:javax.annotation/javax.annotation-api/1.2</bundle>
+ <bundle dependency="true">mvn:javax.enterprise/cdi-api/1.2</bundle>
+ <bundle dependency="true">mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.javax-inject/1_2</bundle>
+ <bundle dependency="true">mvn:javax.el/javax.el-api/3.0.0</bundle>
+ <bundle>mvn:org.ops4j.pax.cdi/pax-cdi-api/1.0.0</bundle>
+ <bundle>mvn:org.ops4j.pax.cdi/pax-cdi-spi/1.0.0</bundle>
+ <bundle>mvn:org.ops4j.pax.cdi/pax-cdi-extension/1.0.0</bundle>
+ <bundle>mvn:org.ops4j.pax.cdi/pax-cdi-extender/1.0.0</bundle>
+ </feature>
+
+ <feature name="pax-cdi-weld" description="Weld CDI 1.2 support" version="1.0.0">
+ <feature version="1.0.0">pax-cdi</feature>
+ <feature version="1.0.0">pax-cdi-core</feature>
+ <bundle dependency="true">mvn:org.apache.xbean/xbean-bundleutils/4.6</bundle>
+ <bundle dependency="true">mvn:org.apache.xbean/xbean-asm6-shaded/4.6</bundle>
+ <bundle dependency="true">mvn:org.apache.xbean/xbean-finder-shaded/4.6</bundle>
+ <bundle dependency="true">mvn:org.jboss.weld/weld-osgi-bundle/2.4.5.Final</bundle>
+ <bundle dependency="true">mvn:org.jboss.logging/jboss-logging/3.3.0.Final</bundle>
+ <!--<bundle dependency="true">mvn:com.google.guava/guava/18.0</bundle>-->
+ <bundle dependency="true">mvn:org.jboss.classfilewriter/jboss-classfilewriter/1.1.2.Final</bundle>
+ <bundle>mvn:org.ops4j.pax.cdi/pax-cdi-weld/1.0.0</bundle>
+ <capability>
+ pax.cdi.provider;provider:=weld
+ </capability>
+ </feature>
+
+ <feature name="pax-cdi-openwebbeans" description="OpenWebBeans CDI support" version="1.0.0">
+ <feature version="1.0.0">pax-cdi</feature>
+ <feature version="1.0.0">pax-cdi-core</feature>
+ <bundle dependency="true">mvn:org.apache.xbean/xbean-bundleutils/4.4</bundle>
+ <bundle dependency="true">mvn:org.apache.xbean/xbean-asm5-shaded/4.4</bundle>
+ <bundle dependency="true">mvn:org.apache.xbean/xbean-finder-shaded/4.4</bundle>
+ <bundle dependency="true">mvn:javax.validation/validation-api/1.1.0.Final</bundle>
+ <bundle dependency="true">mvn:javax.transaction/javax.transaction-api/1.2</bundle>
+ <bundle dependency="true">mvn:javax.servlet/javax.servlet-api/3.1.0</bundle>
+ <bundle dependency="true">mvn:org.apache.xbean/xbean-asm5-shaded/4.4</bundle>
+ <bundle>mvn:org.apache.openwebbeans/openwebbeans-spi/1.6.3</bundle>
+ <bundle>mvn:org.apache.openwebbeans/openwebbeans-impl/1.6.3</bundle>
+ <bundle>mvn:org.apache.openwebbeans/openwebbeans-el22/1.6.3</bundle>
+ <bundle>mvn:org.ops4j.pax.cdi/pax-cdi-openwebbeans/1.0.0</bundle>
+ <capability>
+ pax.cdi.provider;provider:=openwebbeans
+ </capability>
+ </feature>
+
+ <feature name="pax-cdi-web" description="Web CDI support" version="1.0.0">
+ <feature dependency="true" version="1.0.0">pax-cdi</feature>
+ <feature dependency="true">pax-web-core</feature>
+ <bundle dependency="true">mvn:javax.servlet/javax.servlet-api/3.1.0</bundle>
+ <bundle>mvn:org.ops4j.pax.cdi/pax-cdi-web/1.0.0</bundle>
+ </feature>
+
+ <feature name="pax-cdi-web-weld" description="Weld Web CDI support" version="1.0.0">
+ <feature version="1.0.0">pax-cdi-web</feature>
+ <feature version="1.0.0">pax-cdi-weld</feature>
+ </feature>
+
+ <feature name="pax-cdi-web-weld-undertow" description="Weld Web CDI / Undertow support" version="1.0.0">
+ <feature version="1.0.0">pax-cdi-web-weld</feature>
+ <bundle>mvn:org.ops4j.pax.cdi/pax-cdi-undertow-weld/1.0.0</bundle>
+ </feature>
+
+ <feature name="pax-cdi-web-weld-jetty" description="Weld Web CDI / Jetty support" version="1.0.0">
+ <feature version="1.0.0">pax-cdi-web-weld</feature>
+ <bundle>mvn:org.ops4j.pax.cdi/pax-cdi-jetty-weld/1.0.0</bundle>
+ </feature>
+
+ <feature name="pax-cdi-web-openwebbeans" description="OpenWebBeans Web CDI support" version="1.0.0">
+ <feature dependency="true" version="1.0.0">pax-cdi-web</feature>
+ <feature version="1.0.0">pax-cdi-openwebbeans</feature>
+ <conditional>
+ <condition>pax-http-jetty</condition>
+ <bundle>mvn:org.apache.openwebbeans/openwebbeans-web/1.6.3</bundle>
+ <bundle>mvn:org.ops4j.pax.cdi/pax-cdi-jetty-openwebbeans/1.0.0</bundle>
+ </conditional>
+ <conditional>
+ <condition>pax-http-undertow</condition>
+ <bundle>mvn:org.apache.openwebbeans/openwebbeans-web/1.6.3</bundle>
+ <bundle>mvn:org.ops4j.pax.cdi/pax-cdi-undertow-openwebbeans/1.0.0</bundle>
+ </conditional>
+ </feature>
+
+ <feature name="deltaspike-core" description="Apache Deltaspike core support" version="1.8.1">
+ <feature version="1.0.0">pax-cdi</feature>
+ <bundle>mvn:org.apache.deltaspike.core/deltaspike-core-api/1.8.1</bundle>
+ <bundle>mvn:org.apache.deltaspike.core/deltaspike-core-impl/1.8.1</bundle>
+ </feature>
+
+ <feature name="deltaspike-jpa" description="Apache Deltaspike jpa support" version="1.8.1">
+ <feature version="1.8.1">deltaspike-core</feature>
+ <bundle dependency="true">mvn:org.ops4j.base/ops4j-base/1.5.0</bundle>
+ <bundle dependency="true">mvn:org.apache.geronimo.specs/geronimo-jta_1.1_spec/1.1.1</bundle>
+ <bundle dependency="true">mvn:org.apache.geronimo.specs/geronimo-jpa_2.0_spec/1.1</bundle>
+ <bundle dependency="true">mvn:org.ops4j.pax.jpa/pax-jpa/0.3.0</bundle>
+ <bundle dependency="true">mvn:org.ops4j.pax.jdbc/pax-jdbc/0.5.0</bundle>
+ <bundle>mvn:org.apache.deltaspike.modules/deltaspike-jpa-module-api/1.8.1</bundle>
+ <bundle>mvn:org.apache.deltaspike.modules/deltaspike-jpa-module-impl/1.8.1</bundle>
+ </feature>
+
+ <feature name="deltaspike-proxy" description="Apache Deltaspike proxy support" version="1.8.1">
+ <feature version="1.8.1">deltaspike-core</feature>
+ <bundle>mvn:org.apache.deltaspike.modules/deltaspike-proxy-module-api/1.8.1</bundle>
+ <bundle>mvn:org.apache.deltaspike.modules/deltaspike-proxy-module-impl-asm5/1.8.1</bundle>
+ </feature>
+
+ <feature name="deltaspike-partial-bean" description="Apache Deltaspike partial bean support" version="1.8.1">
+ <feature version="1.8.1">deltaspike-proxy</feature>
+ <bundle>mvn:org.apache.deltaspike.modules/deltaspike-partial-bean-module-api/1.8.1</bundle>
+ <bundle>mvn:org.apache.deltaspike.modules/deltaspike-partial-bean-module-impl/1.8.1</bundle>
+ </feature>
+
+ <feature name="deltaspike-data" description="Apache Deltaspike data support" version="1.8.1">
+ <feature version="1.8.1">deltaspike-jpa</feature>
+ <feature version="1.8.1">deltaspike-partial-bean</feature>
+ <bundle>mvn:org.apache.deltaspike.modules/deltaspike-data-module-api/1.8.1</bundle>
+ <bundle>mvn:org.apache.deltaspike.modules/deltaspike-data-module-impl/1.8.1</bundle>
+ </feature>
+
+</features>
diff --git a/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/ops4j/pax/jdbc/pax-jdbc-features/1.3.0/pax-jdbc-features-1.3.0-features.xml b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/ops4j/pax/jdbc/pax-jdbc-features/1.3.0/pax-jdbc-features-1.3.0-features.xml
new file mode 100644
index 0000000000..fd455da5ac
--- /dev/null
+++ b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/ops4j/pax/jdbc/pax-jdbc-features/1.3.0/pax-jdbc-features-1.3.0-features.xml
@@ -0,0 +1,191 @@
+<?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.
+
+-->
+<features name="org.ops4j.pax.jdbc-1.3.0" xmlns="http://karaf.apache.org/xmlns/features/v1.4.0">
+
+ <repository>
+ mvn:org.ops4j.pax.transx/pax-transx-features/0.3.0/xml/features
+ </repository>
+
+ <feature name="pax-jdbc-spec" description="Provides OSGi JDBC Service spec" version="1.3.0">
+ <bundle>mvn:org.osgi/org.osgi.service.jdbc/1.0.0</bundle>
+ </feature>
+
+ <feature name="pax-jdbc" description="Provides JDBC Service support" version="1.3.0">
+ <feature>pax-jdbc-spec</feature>
+
+ <bundle>mvn:org.ops4j.pax.jdbc/pax-jdbc/1.3.0</bundle>
+ </feature>
+
+ <feature name="pax-jdbc-config" description="Provides JDBC Config support" version="1.3.0">
+ <feature>pax-jdbc-spec</feature>
+
+ <bundle dependency="true">mvn:org.apache.geronimo.specs/geronimo-jta_1.1_spec/1.1.1</bundle>
+ <bundle dependency="true">mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.jasypt/1.9.2_1</bundle>
+ <bundle dependency="true">mvn:org.ops4j.pax.jdbc/pax-jdbc-pool-common/1.3.0</bundle>
+ <bundle>mvn:org.ops4j.pax.jdbc/pax-jdbc-config/1.3.0</bundle>
+ </feature>
+
+ <feature name="pax-jdbc-db2" description="Provides JDBC DB2 DataSourceFactory" version="1.3.0">
+ <feature>pax-jdbc-spec</feature>
+
+ <bundle>mvn:org.ops4j.pax.jdbc/pax-jdbc-db2/1.3.0</bundle>
+ </feature>
+
+ <feature name="pax-jdbc-teradata" description="Provides JDBC Teradata DataSourceFactory" version="1.3.0">
+ <feature>pax-jdbc-spec</feature>
+
+ <bundle>mvn:org.ops4j.pax.jdbc/pax-jdbc-teradata/1.3.0</bundle>
+ </feature>
+
+ <feature name="pax-jdbc-derby" description="Provides JDBC Derbi Embedded DataSourceFactory" version="1.3.0">
+ <feature>pax-jdbc-spec</feature>
+
+ <bundle dependency="true">mvn:org.apache.derby/derby/10.13.1.1</bundle>
+ <bundle>mvn:org.ops4j.pax.jdbc/pax-jdbc-derby/1.3.0</bundle>
+ </feature>
+
+ <feature name="pax-jdbc-derbyclient" description="Provides JDBC Derbi Client DataSourceFactory" version="1.3.0">
+ <feature>pax-jdbc-spec</feature>
+
+ <bundle dependency="true">mvn:org.apache.derby/derbyclient/10.13.1.1</bundle>
+ <bundle>mvn:org.ops4j.pax.jdbc/pax-jdbc-derbyclient/1.3.0</bundle>
+ </feature>
+
+ <feature name="pax-jdbc-h2" description="Provides JDBC H2 DataSourceFactory" version="1.3.0">
+ <feature>pax-jdbc-spec</feature>
+
+ <bundle>mvn:com.h2database/h2/1.3.172</bundle>
+ </feature>
+
+ <feature name="pax-jdbc-hsqldb" description="Provides JDBC HSQLDB DataSourceFactory" version="1.3.0">
+ <feature>pax-jdbc-spec</feature>
+
+ <bundle dependency="true">mvn:org.hsqldb/hsqldb/2.3.4</bundle>
+ <bundle>mvn:org.ops4j.pax.jdbc/pax-jdbc-hsqldb/1.3.0</bundle>
+ </feature>
+
+ <feature name="pax-jdbc-mariadb" description="Provides JDBC Mariadb DataSourceFactory" version="1.3.0">
+ <feature>pax-jdbc-spec</feature>
+
+ <bundle dependency="true">mvn:org.mariadb.jdbc/mariadb-java-client/1.5.9</bundle>
+ <bundle>mvn:org.ops4j.pax.jdbc/pax-jdbc-mariadb/1.3.0</bundle>
+ </feature>
+
+ <feature name="pax-jdbc-oracle" description="Provides JDBC Oracle DataSourceFactory" version="1.3.0">
+ <feature>pax-jdbc-spec</feature>
+
+ <bundle>mvn:org.ops4j.pax.jdbc/pax-jdbc-oracle/1.3.0</bundle>
+ </feature>
+
+ <feature name="pax-jdbc-postgresql" description="Provides JDBC PostgreSQL DataSourceFactory" version="1.3.0">
+ <feature>pax-jdbc-spec</feature>
+
+ <bundle dependency="true">mvn:org.apache.geronimo.specs/geronimo-jta_1.1_spec/1.1.1</bundle>
+ <bundle>mvn:org.postgresql/postgresql/9.4.1212.jre7</bundle>
+ </feature>
+
+ <feature name="pax-jdbc-sqlite" description="Provides JDBC SQLite DataSourceFactory" version="1.3.0">
+ <feature>pax-jdbc-spec</feature>
+
+ <bundle dependency="true">mvn:org.xerial/sqlite-jdbc/3.16.1</bundle>
+ <bundle>mvn:org.ops4j.pax.jdbc/pax-jdbc-sqlite/1.3.0</bundle>
+ </feature>
+
+ <feature name="pax-jdbc-mssql" description="Provides JDBC MSSQL DataSourceFactory" version="1.3.0">
+ <feature>pax-jdbc-spec</feature>
+
+ <bundle>mvn:org.ops4j.pax.jdbc/pax-jdbc-mssql/1.3.0</bundle>
+ </feature>
+
+ <feature name="pax-jdbc-jtds" description="Provides JDBC jTDS DataSourceFactory" version="1.3.0">
+ <feature>pax-jdbc-spec</feature>
+
+ <bundle>wrap:mvn:net.sourceforge.jtds/jtds/1.3.1</bundle>
+ <bundle>mvn:org.ops4j.pax.jdbc/pax-jdbc-jtds/1.3.0</bundle>
+ </feature>
+
+ <feature name="pax-jdbc-pool-dbcp2" description="Provides JDBC Pooling DataSourceFactory" version="1.3.0">
+ <feature>pax-jdbc-spec</feature>
+
+ <bundle dependency="true">mvn:org.apache.commons/commons-dbcp2/2.1.1</bundle>
+ <bundle dependency="true">mvn:org.apache.commons/commons-pool2/2.5.0</bundle>
+ <bundle dependency="true">mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.cglib/3.2.4_1</bundle>
+ <bundle dependency="true">mvn:org.apache.geronimo.specs/geronimo-jta_1.1_spec/1.1.1</bundle>
+ <bundle>mvn:org.ops4j.pax.jdbc/pax-jdbc-pool-common/1.3.0</bundle>
+ <bundle>mvn:org.ops4j.pax.jdbc/pax-jdbc-pool-dbcp2/1.3.0</bundle>
+ </feature>
+
+ <feature name="pax-jdbc-pool-c3p0" description="Provides JDBC Pooling using C3P0" version="1.3.0">
+ <feature>pax-jdbc-spec</feature>
+
+ <bundle dependency="true">mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.c3p0/0.9.5.2_1</bundle>
+ <bundle dependency="true">mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.cglib/3.2.4_1</bundle>
+ <bundle dependency="true">mvn:org.apache.geronimo.specs/geronimo-jta_1.1_spec/1.1.1</bundle>
+ <bundle>mvn:org.ops4j.pax.jdbc/pax-jdbc-pool-common/1.3.0</bundle>
+ <bundle>mvn:org.ops4j.pax.jdbc/pax-jdbc-pool-c3p0/1.3.0</bundle>
+ </feature>
+
+ <feature name="pax-jdbc-pool-hikaricp" description="Provides JDBC Pooling DataSourceFactory using HikariCP" version="1.3.0">
+ <feature>pax-jdbc-spec</feature>
+
+ <bundle dependency="true">mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.cglib/3.2.4_1</bundle>
+ <bundle dependency="true">mvn:org.apache.geronimo.specs/geronimo-jta_1.1_spec/1.1.1</bundle>
+ <bundle>mvn:org.ops4j.pax.jdbc/pax-jdbc-pool-common/1.3.0</bundle>
+ <bundle>mvn:org.ops4j.pax.jdbc/pax-jdbc-pool-hikaricp/1.3.0</bundle>
+ <bundle>mvn:com.zaxxer/HikariCP-java7/2.4.11</bundle>
+ </feature>
+
+ <feature name="pax-jdbc-pool-aries" description="Provides JDBC Pooling DataSourceFactory using Aries Transaction JDBC" version="1.3.0">
+ <feature>pax-jdbc-spec</feature>
+
+ <bundle dependency="true">mvn:org.apache.geronimo.specs/geronimo-jta_1.1_spec/1.1.1</bundle>
+ <bundle dependency="true">mvn:org.apache.geronimo.specs/geronimo-j2ee-connector_1.6_spec/1.0</bundle>
+ <bundle dependency="true">mvn:org.apache.geronimo.specs/geronimo-validation_1.0_spec/1.1</bundle>
+ <bundle dependency="true">mvn:org.apache.geronimo.components/geronimo-connector/3.1.1</bundle>
+
+ <bundle dependency="true">mvn:org.apache.aries/org.apache.aries.util/1.1.3</bundle>
+ <bundle dependency="true">mvn:org.apache.aries.transaction/org.apache.aries.transaction.manager/1.3.3</bundle>
+ <bundle>mvn:org.ops4j.pax.jdbc/pax-jdbc-pool-common/1.3.0</bundle>
+ <bundle>mvn:org.ops4j.pax.jdbc/pax-jdbc-pool-aries/1.3.0</bundle>
+ </feature>
+
+ <feature name="pax-jdbc-pool-narayana" description="Provides JDBC Pooling DataSourceFactory using Narayana Transaction Manager" version="1.3.0">
+ <feature>pax-jdbc-spec</feature>
+
+ <bundle dependency="true">mvn:org.apache.commons/commons-dbcp2/2.1.1</bundle>
+ <bundle dependency="true">mvn:org.apache.commons/commons-pool2/2.5.0</bundle>
+ <bundle dependency="true">mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.cglib/3.2.4_1</bundle>
+ <bundle dependency="true">mvn:org.jboss.narayana.osgi/narayana-osgi-jta/5.2.8.Final</bundle>
+ <bundle>mvn:org.ops4j.pax.jdbc/pax-jdbc-pool-common/1.3.0</bundle>
+ <bundle>mvn:org.ops4j.pax.jdbc/pax-jdbc-pool-narayana/1.3.0</bundle>
+ </feature>
+
+ <feature name="pax-jdbc-pool-transx" description="Provides JDBC Pooling DataSourceFactory using Pax TransX JDBC" version="1.3.0">
+ <feature>pax-jdbc-spec</feature>
+ <feature>pax-transx-jdbc</feature>
+ <feature>pax-transx-tm</feature>
+
+ <bundle>mvn:org.ops4j.pax.jdbc/pax-jdbc-pool-common/1.3.0</bundle>
+ <bundle>mvn:org.ops4j.pax.jdbc/pax-jdbc-pool-transx/1.3.0</bundle>
+ </feature>
+
+</features>
diff --git a/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/ops4j/pax/jms/pax-jms-features/1.0.1/pax-jms-features-1.0.1-features.xml b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/ops4j/pax/jms/pax-jms-features/1.0.1/pax-jms-features-1.0.1-features.xml
new file mode 100644
index 0000000000..f5ecd889ca
--- /dev/null
+++ b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/ops4j/pax/jms/pax-jms-features/1.0.1/pax-jms-features-1.0.1-features.xml
@@ -0,0 +1,103 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<!--
+
+ 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.
+
+-->
+<features name="pax-jms-1.0.1" xmlns="http://karaf.apache.org/xmlns/features/v1.4.0">
+
+ <repository>
+ mvn:org.ops4j.pax.transx/pax-transx-features/0.3.0/xml/features
+ </repository>
+
+ <feature name="pax-jms-core" version="1.0.1">
+ <details>Core dependencies for pax-jms features</details>
+
+ <bundle dependency="true">mvn:javax.jms/javax.jms-api/2.0.1</bundle>
+ <bundle dependency="true">mvn:org.apache.geronimo.specs/geronimo-jta_1.1_spec/1.1.1</bundle>
+ <bundle dependency="true">mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.jasypt/1.9.2_1</bundle>
+ <bundle>mvn:org.ops4j.pax.jms/pax-jms-api/1.0.1</bundle>
+ </feature>
+
+ <feature name="pax-jms-config" version="1.0.1">
+ <details>Configuration Admin based registration of ConnectionFactory factories</details>
+ <feature>pax-jms-core</feature>
+
+ <bundle>mvn:org.ops4j.pax.jms/pax-jms-config/1.0.1</bundle>
+ </feature>
+
+ <feature name="pax-jms-activemq" version="1.0.1">
+ <feature>pax-jms-core</feature>
+
+ <bundle dependency="true">mvn:org.apache.geronimo.specs/geronimo-j2ee-management_1.1_spec/1.0.1</bundle>
+ <bundle dependency="true">mvn:org.fusesource.hawtbuf/hawtbuf/1.11</bundle>
+ <bundle dependency="true">mvn:org.apache.activemq/activemq-osgi/5.15.3</bundle>
+ <bundle>mvn:org.ops4j.pax.jms/pax-jms-activemq/1.0.1</bundle>
+ </feature>
+
+ <feature name="pax-jms-artemis" version="1.0.1">
+ <feature>pax-jms-core</feature>
+ <!-- features from mvn:org.apache.activemq/artemis-features/2.5.0/xml/features -->
+ <feature>artemis-core-client</feature>
+ <feature>artemis-jms-client</feature>
+ <feature>artemis-amqp-client</feature>
+
+ <bundle>mvn:org.ops4j.pax.jms/pax-jms-artemis/1.0.1</bundle>
+ </feature>
+
+ <feature name="pax-jms-ibmmq" version="1.0.1">
+ <details>Support for IBM MQ - requires IBM MQ drivers from https://developer.ibm.com/messaging/mq-downloads</details>
+ <feature>pax-jms-core</feature>
+
+ <bundle>mvn:org.ops4j.pax.jms/pax-jms-ibmmq/1.0.1</bundle>
+ </feature>
+
+ <feature name="pax-jms-pool-pooledjms" version="1.0.1">
+ <details>JMS connection/session pooling using org.messaginghub:pooled-jms library</details>
+ <feature>pax-jms-core</feature>
+
+ <bundle dependency="true">mvn:org.apache.commons/commons-pool2/2.5.0</bundle>
+ <bundle dependency="true">mvn:org.messaginghub/pooled-jms/0.4.0</bundle>
+ <bundle>mvn:org.ops4j.pax.jms/pax-jms-pool-pooledjms/1.0.1</bundle>
+ </feature>
+
+ <feature name="pax-jms-pool-narayana" version="1.0.1">
+ <details>JMS connection/session pooling using org.messaginghub:pooled-jms library and Narayana TX Manager Recovery service</details>
+ <feature>pax-jms-core</feature>
+
+ <bundle dependency="true">mvn:org.jboss.narayana.osgi/narayana-osgi-jta/5.6.3.Final</bundle>
+ <bundle dependency="true">mvn:org.apache.commons/commons-pool2/2.5.0</bundle>
+ <bundle dependency="true">mvn:org.messaginghub/pooled-jms/0.4.0</bundle>
+ <bundle>mvn:org.ops4j.pax.jms/pax-jms-pool-narayana/1.0.1</bundle>
+ </feature>
+
+ <feature name="pax-jms-pool-transx" version="1.0.1">
+ <details>JMS connection/session pooling JCA based pax-transx-jms</details>
+ <feature>pax-jms-core</feature>
+ <feature>pax-transx-jms</feature>
+ <feature>pax-transx-tm</feature>
+
+ <bundle>mvn:org.ops4j.pax.jms/pax-jms-pool-transx/1.0.1</bundle>
+ </feature>
+
+ <feature name="pax-jms-pool" version="1.0.1">
+ <details>Default JMS pool using org.messaginghub:pooled-jms library</details>
+ <feature>pax-jms-pool-pooledjms</feature>
+ </feature>
+
+</features>
diff --git a/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/ops4j/pax/logging/pax-logging-api/1.10.1/pax-logging-api-1.10.1.jar b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/ops4j/pax/logging/pax-logging-api/1.10.1/pax-logging-api-1.10.1.jar
new file mode 100644
index 0000000000..7b7083d348
--- /dev/null
+++ b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/ops4j/pax/logging/pax-logging-api/1.10.1/pax-logging-api-1.10.1.jar
Binary files differ
diff --git a/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/ops4j/pax/logging/pax-logging-log4j2/1.10.1/pax-logging-log4j2-1.10.1.jar b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/ops4j/pax/logging/pax-logging-log4j2/1.10.1/pax-logging-log4j2-1.10.1.jar
new file mode 100644
index 0000000000..ec3a18e95d
--- /dev/null
+++ b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/ops4j/pax/logging/pax-logging-log4j2/1.10.1/pax-logging-log4j2-1.10.1.jar
Binary files differ
diff --git a/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/ops4j/pax/logging/pax-logging-logback/1.10.1/pax-logging-logback-1.10.1.jar b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/ops4j/pax/logging/pax-logging-logback/1.10.1/pax-logging-logback-1.10.1.jar
new file mode 100644
index 0000000000..f601650969
--- /dev/null
+++ b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/ops4j/pax/logging/pax-logging-logback/1.10.1/pax-logging-logback-1.10.1.jar
Binary files differ
diff --git a/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/ops4j/pax/transx/pax-transx-features/0.3.0/pax-transx-features-0.3.0-features.xml b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/ops4j/pax/transx/pax-transx-features/0.3.0/pax-transx-features-0.3.0-features.xml
new file mode 100644
index 0000000000..76f3f3a250
--- /dev/null
+++ b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/ops4j/pax/transx/pax-transx-features/0.3.0/pax-transx-features-0.3.0-features.xml
@@ -0,0 +1,77 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<!--
+
+ 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.
+
+-->
+<features name="pax-transx-0.3.0"
+ xmlns="http://karaf.apache.org/xmlns/features/v1.3.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="
+ http://karaf.apache.org/xmlns/features/v1.3.0
+ http://karaf.apache.org/xmlns/features/v1.3.0">
+
+ <feature name="pax-transx-tm-api" version="0.3.0">
+ <!--
+ That's only a dependency="true". Karaf's "transaction" feature installs javax.transaction:javax.transaction-api:1.2
+ together with cdi-api, el-api, interceptor-api and javax.inject bundles
+ -->
+ <bundle dependency="true">mvn:org.apache.geronimo.specs/geronimo-jta_1.1_spec/1.1.1</bundle>
+ <bundle>mvn:org.ops4j.pax.transx/pax-transx-tm-api/0.3.0</bundle>
+ </feature>
+
+ <feature name="pax-transx-tm-geronimo" version="0.3.0">
+ <feature>pax-transx-tm-api</feature>
+ <bundle>mvn:org.ops4j.pax.transx/pax-transx-tm-geronimo/0.3.0</bundle>
+ </feature>
+
+ <feature name="pax-transx-tm-atomikos" version="0.3.0">
+ <feature>pax-transx-tm-api</feature>
+ <bundle>mvn:org.ops4j.pax.transx/pax-transx-tm-atomikos/0.3.0</bundle>
+ </feature>
+
+ <feature name="pax-transx-tm-narayana" version="0.3.0">
+ <feature>pax-transx-tm-api</feature>
+ <bundle>mvn:org.ops4j.pax.transx/pax-transx-tm-narayana/0.3.0</bundle>
+ </feature>
+
+ <feature name="pax-transx-tm" version="0.3.0">
+ <feature dependency="true">pax-transx-tm-geronimo</feature>
+ <requirement>
+ osgi.service;objectClass="org.ops4j.pax.transx.tm.TransactionManager"
+ </requirement>
+ </feature>
+
+ <feature name="pax-transx-connector" version="0.3.0">
+ <feature version="0.3.0">pax-transx-tm-api</feature>
+ <bundle dependency="true">mvn:org.apache.geronimo.specs/geronimo-j2ee-connector_1.6_spec/1.0</bundle>
+ <bundle>mvn:org.ops4j.pax.transx/pax-transx-connector/0.3.0</bundle>
+ </feature>
+
+ <feature name="pax-transx-jdbc" version="0.3.0">
+ <feature version="0.3.0">pax-transx-connector</feature>
+ <bundle>mvn:org.ops4j.pax.transx/pax-transx-jdbc/0.3.0</bundle>
+ </feature>
+
+ <feature name="pax-transx-jms" version="0.3.0">
+ <feature version="0.3.0">pax-transx-connector</feature>
+ <bundle dependency="true">mvn:javax.jms/javax.jms-api/2.0.1</bundle>
+ <bundle>mvn:org.ops4j.pax.transx/pax-transx-jms/0.3.0</bundle>
+ </feature>
+
+</features>
diff --git a/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/ops4j/pax/transx/pax-transx-features/0.4.0/pax-transx-features-0.4.0-features.xml b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/ops4j/pax/transx/pax-transx-features/0.4.0/pax-transx-features-0.4.0-features.xml
new file mode 100644
index 0000000000..6bb80310af
--- /dev/null
+++ b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/ops4j/pax/transx/pax-transx-features/0.4.0/pax-transx-features-0.4.0-features.xml
@@ -0,0 +1,85 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<!--
+
+ 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.
+
+-->
+<features name="pax-transx-0.4.0"
+ xmlns="http://karaf.apache.org/xmlns/features/v1.3.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="
+ http://karaf.apache.org/xmlns/features/v1.3.0
+ http://karaf.apache.org/xmlns/features/v1.3.0">
+
+ <feature name="pax-transx-tm-api" version="0.4.0">
+ <!--
+ That's only a dependency="true". Karaf's "transaction" feature installs javax.transaction:javax.transaction-api:1.2
+ together with cdi-api, el-api, interceptor-api and javax.inject bundles
+ -->
+ <bundle dependency="true">mvn:org.apache.geronimo.specs/geronimo-jta_1.1_spec/1.1.1</bundle>
+ <bundle>mvn:org.ops4j.pax.transx/pax-transx-tm-api/0.4.0</bundle>
+ </feature>
+
+ <feature name="pax-transx-tm-geronimo" version="0.4.0">
+ <config name="org.ops4j.pax.transx.tm.geronimo">
+ org.apache.geronimo.tm.recoverable = true
+ org.apache.geronimo.tm.timeout = 600
+ org.apache.geronimo.tm.howl.logFileDir = ${karaf.data}/txlog
+ org.apache.geronimo.tm.howl.maxLogFiles = 2
+ org.apache.geronimo.tm.howl.maxBlocksPerFile = 512
+ org.apache.geronimo.tm.howl.bufferSize = 4
+ </config>
+ <feature>pax-transx-tm-api</feature>
+ <bundle>mvn:org.ops4j.pax.transx/pax-transx-tm-geronimo/0.4.0</bundle>
+ </feature>
+
+ <feature name="pax-transx-tm-atomikos" version="0.4.0">
+ <feature>pax-transx-tm-api</feature>
+ <bundle>mvn:org.ops4j.pax.transx/pax-transx-tm-atomikos/0.4.0</bundle>
+ </feature>
+
+ <feature name="pax-transx-tm-narayana" version="0.4.0">
+ <feature>pax-transx-tm-api</feature>
+ <bundle>mvn:org.ops4j.pax.transx/pax-transx-tm-narayana/0.4.0</bundle>
+ </feature>
+
+ <feature name="pax-transx-tm" version="0.4.0">
+ <feature dependency="true">pax-transx-tm-geronimo</feature>
+ <requirement>
+ osgi.service;objectClass="org.ops4j.pax.transx.tm.TransactionManager"
+ </requirement>
+ </feature>
+
+ <feature name="pax-transx-connector" version="0.4.0">
+ <feature version="0.4.0">pax-transx-tm-api</feature>
+ <bundle dependency="true">mvn:org.apache.geronimo.specs/geronimo-j2ee-connector_1.6_spec/1.0</bundle>
+ <bundle>mvn:org.ops4j.pax.transx/pax-transx-connector/0.4.0</bundle>
+ </feature>
+
+ <feature name="pax-transx-jdbc" version="0.4.0">
+ <feature version="0.4.0">pax-transx-connector</feature>
+ <bundle>mvn:org.ops4j.pax.transx/pax-transx-jdbc/0.4.0</bundle>
+ </feature>
+
+ <feature name="pax-transx-jms" version="0.4.0">
+ <feature version="0.4.0">pax-transx-connector</feature>
+ <bundle dependency="true">mvn:javax.jms/javax.jms-api/2.0.1</bundle>
+ <bundle>mvn:org.ops4j.pax.transx/pax-transx-jms/0.4.0</bundle>
+ </feature>
+
+</features>
diff --git a/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/ops4j/pax/url/pax-url-aether/2.5.4/pax-url-aether-2.5.4.jar b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/ops4j/pax/url/pax-url-aether/2.5.4/pax-url-aether-2.5.4.jar
new file mode 100644
index 0000000000..82e9f682c1
--- /dev/null
+++ b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/ops4j/pax/url/pax-url-aether/2.5.4/pax-url-aether-2.5.4.jar
Binary files differ
diff --git a/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/ops4j/pax/url/pax-url-wrap/2.5.4/pax-url-wrap-2.5.4-uber.jar b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/ops4j/pax/url/pax-url-wrap/2.5.4/pax-url-wrap-2.5.4-uber.jar
new file mode 100644
index 0000000000..0f1fb01377
--- /dev/null
+++ b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/ops4j/pax/url/pax-url-wrap/2.5.4/pax-url-wrap-2.5.4-uber.jar
Binary files differ
diff --git a/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/ops4j/pax/web/pax-web-features/7.2.3/pax-web-features-7.2.3-features.xml b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/ops4j/pax/web/pax-web-features/7.2.3/pax-web-features-7.2.3-features.xml
new file mode 100644
index 0000000000..e6830838a4
--- /dev/null
+++ b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/ops4j/pax/web/pax-web-features/7.2.3/pax-web-features-7.2.3-features.xml
@@ -0,0 +1,290 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+ <!--
+
+ Licensed 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.
+
+ -->
+
+<features name="org.ops4j.pax.web-7.2.3" xmlns="http://karaf.apache.org/xmlns/features/v1.3.0">
+
+ <feature name="pax-web-core" description="Provide Core pax-web bundles" version="7.2.3">
+ <bundle start-level="30">mvn:org.ops4j.pax.web/pax-web-api/7.2.3</bundle>
+ <bundle start-level="30">mvn:org.ops4j.pax.web/pax-web-spi/7.2.3</bundle>
+
+ <bundle dependency="true">mvn:org.ow2.asm/asm/6.2</bundle>
+ <bundle dependency="true">mvn:org.ow2.asm/asm-util/6.2</bundle>
+ <bundle dependency="true">mvn:org.ow2.asm/asm-tree/6.2</bundle>
+ <bundle dependency="true">mvn:org.ow2.asm/asm-analysis/6.2</bundle>
+ <bundle dependency="true">mvn:org.ow2.asm/asm-commons/6.2</bundle>
+
+ <bundle dependency="true">mvn:org.apache.xbean/xbean-bundleutils/4.6</bundle>
+ <bundle dependency="true">mvn:org.apache.xbean/xbean-reflect/4.6</bundle>
+ <bundle dependency="true">mvn:org.apache.xbean/xbean-finder/4.6</bundle>
+ </feature>
+
+ <feature name="pax-jetty" description="Provide Jetty engine support" version="9.4.11.v20180605">
+ <bundle dependency="true" start-level="30">mvn:org.apache.servicemix.specs/org.apache.servicemix.specs.activation-api-1.1/2.5.0</bundle>
+ <bundle dependency="true" start-level="30">mvn:javax.servlet/javax.servlet-api/3.1.0</bundle>
+ <bundle dependency="true" start-level="30">mvn:javax.mail/mail/1.4.4</bundle>
+ <bundle dependency="true" start-level="30">mvn:org.apache.geronimo.specs/geronimo-jta_1.1_spec/1.1.1</bundle>
+ <bundle dependency="true" start-level="30">mvn:javax.annotation/javax.annotation-api/1.2</bundle>
+ <bundle dependency="true" start-level="30">mvn:org.apache.geronimo.specs/geronimo-jaspic_1.0_spec/1.1</bundle>
+ <bundle dependency="true" start-level="30">mvn:org.apache.aries.spifly/org.apache.aries.spifly.dynamic.bundle/1.0.10</bundle>
+ <bundle dependency="true" start-level="30">mvn:org.apache.aries/org.apache.aries.util/1.1.0</bundle>
+ <bundle start-level="30">mvn:org.eclipse.jetty/jetty-continuation/9.4.11.v20180605</bundle>
+ <bundle start-level="30">mvn:org.eclipse.jetty/jetty-http/9.4.11.v20180605</bundle>
+ <bundle start-level="30">mvn:org.eclipse.jetty/jetty-io/9.4.11.v20180605</bundle>
+ <bundle start-level="30">mvn:org.eclipse.jetty/jetty-jaspi/9.4.11.v20180605</bundle>
+ <bundle start-level="30">mvn:org.eclipse.jetty/jetty-plus/9.4.11.v20180605</bundle>
+ <bundle start-level="30">mvn:org.eclipse.jetty/jetty-jndi/9.4.11.v20180605</bundle>
+ <bundle start-level="30">mvn:org.eclipse.jetty/jetty-rewrite/9.4.11.v20180605</bundle>
+ <bundle start-level="30">mvn:org.eclipse.jetty/jetty-security/9.4.11.v20180605</bundle>
+ <bundle start-level="30">mvn:org.eclipse.jetty/jetty-server/9.4.11.v20180605</bundle>
+ <bundle start-level="30">mvn:org.eclipse.jetty/jetty-servlet/9.4.11.v20180605</bundle>
+ <bundle start-level="30">mvn:org.eclipse.jetty/jetty-servlets/9.4.11.v20180605</bundle>
+ <bundle start-level="30">mvn:org.eclipse.jetty/jetty-util/9.4.11.v20180605</bundle>
+ <bundle start-level="30">mvn:org.eclipse.jetty/jetty-util-ajax/9.4.11.v20180605</bundle>
+ <bundle start-level="30">mvn:org.eclipse.jetty/jetty-webapp/9.4.11.v20180605</bundle>
+ <bundle start-level="30">mvn:org.eclipse.jetty/jetty-jaas/9.4.11.v20180605</bundle>
+ <bundle start-level="30">mvn:org.eclipse.jetty/jetty-xml/9.4.11.v20180605</bundle>
+ <bundle start-level="30">mvn:org.eclipse.jetty/jetty-client/9.4.11.v20180605</bundle>
+ <bundle start-level="30">mvn:org.eclipse.jetty/jetty-deploy/9.4.11.v20180605</bundle>
+ <bundle start-level="30">mvn:org.eclipse.jetty/jetty-jmx/9.4.11.v20180605</bundle>
+ <conditional>
+ <condition>pax-http-whiteboard</condition>
+ <bundle start-level="30">mvn:org.eclipse.jetty.websocket/websocket-server/9.4.11.v20180605</bundle>
+ <bundle start-level="30">mvn:org.eclipse.jetty.websocket/websocket-client/9.4.11.v20180605</bundle>
+ <bundle start-level="30">mvn:org.eclipse.jetty.websocket/websocket-common/9.4.11.v20180605</bundle>
+ <bundle start-level="30">mvn:org.eclipse.jetty.websocket/websocket-servlet/9.4.11.v20180605</bundle>
+ <bundle start-level="30">mvn:org.eclipse.jetty.websocket/websocket-api/9.4.11.v20180605</bundle>
+ <bundle start-level="30">mvn:org.eclipse.jetty.websocket/javax-websocket-server-impl/9.4.11.v20180605</bundle>
+ <bundle start-level="30">mvn:org.eclipse.jetty.websocket/javax-websocket-client-impl/9.4.11.v20180605</bundle>
+ <bundle start-level="30">mvn:javax.websocket/javax.websocket-api/1.1</bundle>
+ </conditional>
+
+ <capability>
+ osgi.contract;osgi.contract=JavaServlet;version:Version="3.1.0";uses:="javax.servlet,javax.servlet.http,javax.servlet.descriptor,javax.servlet.annotation",
+ osgi.contract;osgi.contract=JavaWebSockets;version:Version="1";uses:="javax.websocket, javax.websocket.server"
+ </capability>
+ </feature>
+
+ <feature name="pax-jetty-http2" version="7.2.3" description="Optional additional feature to run Jetty with SPDY">
+ <details>
+ Please beware, for this feature to run properly you'll need to add the alpn-boot.jar to the
+ lib/ext folder of Karaf in some cases of your JVM.
+
+ make sure you have the following jar from it's maven coordinate installed:
+
+ mvn:org.mortbay.jetty.alpn/alpn-boot/8.1.4.v20150727 (and yes version 8.x is intentional there is no newer version available)
+
+ </details>
+ <library type="extension">mvn:org.mortbay.jetty.alpn/alpn-boot/8.1.4.v20150727</library>
+ <feature version="[9.3,10.0)">pax-jetty</feature>
+ <bundle start-level="1">mvn:org.eclipse.jetty.osgi/jetty-osgi-alpn/9.4.11.v20180605</bundle>
+ <bundle start-level="30">mvn:org.eclipse.jetty.alpn/alpn-api/1.1.2.v20150522</bundle>
+ <bundle start-level="30">mvn:org.eclipse.jetty/jetty-alpn-server/9.4.11.v20180605</bundle>
+ <bundle start-level="30">mvn:org.eclipse.jetty.http2/http2-server/9.4.11.v20180605</bundle>
+ <bundle start-level="30">mvn:org.eclipse.jetty.http2/http2-common/9.4.11.v20180605</bundle>
+ <bundle start-level="30">mvn:org.eclipse.jetty.http2/http2-hpack/9.4.11.v20180605</bundle>
+ </feature>
+
+ <feature name="pax-http-jetty" version="7.2.3">
+ <configfile finalname="${karaf.etc}/jetty.xml">mvn:org.ops4j.pax.web/pax-web-features/7.2.3/xml/jettyconfig</configfile>
+ <config name="org.ops4j.pax.web">
+ org.osgi.service.http.port=8181
+ javax.servlet.context.tempdir=${karaf.data}/pax-web-jsp
+ org.ops4j.pax.web.config.file=${karaf.etc}/jetty.xml
+ </config>
+ <feature>scr</feature>
+ <feature version="[9.3,10.0)">pax-jetty</feature>
+
+ <feature>pax-web-core</feature>
+ <bundle start-level="30">mvn:org.ops4j.pax.web/pax-web-runtime/7.2.3</bundle>
+ <bundle start-level="30">mvn:org.ops4j.pax.web/pax-web-jetty/7.2.3</bundle>
+
+ <capability>
+ pax.http.provider;provider:=jetty
+ </capability>
+
+ <conditional>
+ <condition>pax-keycloak</condition>
+ <feature>pax-keycloak-http-jetty</feature>
+ </conditional>
+ </feature>
+
+ <feature name="pax-http" version="7.2.3" description="Implementation of the OSGI HTTP Service">
+ <details>Allows to publish servlets using pax web and jetty</details>
+ <feature dependency="true" version="[7.2,7.3)">pax-http-jetty</feature>
+ <requirement>
+ pax.http.provider
+ </requirement>
+ </feature>
+
+ <feature name="pax-http-whiteboard" description="Provide HTTP Whiteboard pattern support" version="7.2.3">
+ <feature version="[7.2,7.3)">pax-http</feature>
+ <bundle dependency="true" start-level="30">mvn:org.eclipse.jdt.core.compiler/ecj/4.5.1</bundle>
+ <bundle start-level="30" dependency="true">mvn:javax.el/javax.el-api/3.0.0</bundle>
+ <bundle start-level="30">mvn:org.ops4j.pax.web/pax-web-jsp/7.2.3</bundle>
+ <bundle start-level="30">mvn:org.ops4j.pax.web/pax-web-extender-whiteboard/7.2.3</bundle>
+
+ <capability>
+ osgi.contract;osgi.contract=JavaEl;version:Version="3";uses:="javax.el",
+ osgi.contract;osgi.contract=JavaJSP;version:Version="2.3";uses:="javax.servlet.jsp, javax.servlet.jsp.el, javax.servlet.jsp.tagext",
+ osgi.contract;osgi.contract=JavaJSTL;version:Version="1.2";uses:="javax.servlet.jsp.jstl.core, javax.servlet.jsp.jstl.fmt, javax.servlet.jsp.jstl.sql, javax.servlet.jsp.jstl.tlv"
+ </capability>
+ </feature>
+
+ <feature name="pax-war" description="Provide support of a full WebContainer" version="7.2.3">
+ <config name="org.ops4j.pax.url.war">
+ org.ops4j.pax.url.war.importPaxLoggingPackages=true
+ </config>
+ <feature version="[7.2,7.3)">pax-http-whiteboard</feature>
+ <bundle start-level="30">mvn:org.ops4j.pax.web/pax-web-descriptor/7.2.3</bundle>
+ <bundle start-level="30">mvn:org.ops4j.pax.web/pax-web-extender-war/7.2.3</bundle>
+ <bundle start-level="30">mvn:org.ops4j.pax.web/pax-web-extender-whiteboard/7.2.3</bundle>
+ <bundle start-level="30">mvn:org.ops4j.pax.web/pax-web-deployer/7.2.3</bundle>
+ <bundle start-level="30">mvn:org.ops4j.pax.url/pax-url-war/2.5.2/jar/uber</bundle>
+ </feature>
+
+ <feature name="pax-http-tomcat" description="Provide Tomcat support" version="7.2.3">
+ <config name="org.ops4j.pax.url.war">
+ org.ops4j.pax.url.war.importPaxLoggingPackages=true
+ </config>
+ <config name="org.ops4j.pax.web">
+ org.osgi.service.http.port=8181
+ javax.servlet.context.tempdir=${karaf.data}/pax-web-jsp
+ </config>
+ <feature>scr</feature>
+ <feature version="[7.2,7.3)">pax-http</feature>
+ <bundle dependency="true" start-level="30">mvn:javax.el/javax.el-api/3.0.0</bundle>
+ <bundle dependency="true" start-level="30">mvn:javax.security.auth.message/javax.security.auth.message-api/1.1</bundle>
+ <bundle dependency="true" start-level="30">mvn:javax.validation/validation-api/1.1.0.Final</bundle>
+ <bundle dependency="true" start-level="30">mvn:org.ops4j.pax.tipi/org.ops4j.pax.tipi.tomcat-embed-core/8.5.32.1</bundle>
+ <bundle dependency="true" start-level="30">mvn:org.ops4j.pax.tipi/org.ops4j.pax.tipi.tomcat-embed-websocket/8.5.32.1</bundle>
+ <bundle dependency="true" start-level="30">mvn:javax.servlet/javax.servlet-api/3.1.0</bundle>
+ <bundle dependency="true" start-level="30">mvn:org.apache.geronimo.specs/geronimo-atinject_1.0_spec/1.0</bundle>
+ <bundle dependency="true" start-level="30">mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.jsr305/1.3.9_1</bundle>
+ <bundle dependency="true" start-level="30">mvn:org.apache.servicemix.specs/org.apache.servicemix.specs.activation-api-1.1/2.5.0</bundle>
+ <bundle dependency="true" start-level="30">mvn:org.apache.servicemix.specs/org.apache.servicemix.specs.java-persistence-api-2.0/2.5.0</bundle>
+ <bundle dependency="true" start-level="30">mvn:org.apache.servicemix.specs/org.apache.servicemix.specs.javamail-api-1.4/2.5.0</bundle>
+
+ <bundle dependency="true" start-level="30">mvn:org.apache.geronimo.specs/geronimo-stax-api_1.2_spec/1.1</bundle>
+ <bundle dependency="true" start-level="30">mvn:org.apache.geronimo.specs/geronimo-ejb_3.1_spec/1.0</bundle>
+ <bundle dependency="true" start-level="30">mvn:org.apache.geronimo.specs/geronimo-osgi-registry/1.1</bundle>
+ <bundle dependency="true" start-level="30">mvn:org.apache.geronimo.specs/geronimo-jaxws_2.2_spec/1.0</bundle>
+ <bundle dependency="true" start-level="30">mvn:org.apache.geronimo.specs/geronimo-jaxrpc_1.1_spec/2.1</bundle>
+
+ <bundle dependency="true" start-level="30">mvn:org.apache.servicemix.specs/org.apache.servicemix.specs.saaj-api-1.3/2.5.0</bundle>
+ <bundle dependency="true" start-level="30">mvn:org.apache.servicemix.specs/org.apache.servicemix.specs.jaxb-api-2.2/2.5.0</bundle>
+
+ <bundle dependency="true" start-level="30">mvn:org.apache.geronimo.specs/geronimo-jta_1.1_spec/1.1.1</bundle>
+ <bundle dependency="true" start-level="30">mvn:org.apache.geronimo.specs/geronimo-jaspic_1.0_spec/1.1</bundle>
+
+ <bundle dependency="true" start-level="30">mvn:org.apache.servicemix.specs/org.apache.servicemix.specs.jaxp-api-1.3/2.5.0</bundle>
+ <bundle dependency="true" start-level="30">mvn:org.apache.geronimo.specs/geronimo-annotation_1.1_spec/1.0.1</bundle>
+ <bundle dependency="true" start-level="30">mvn:javax.websocket/javax.websocket-api/1.1</bundle>
+
+ <feature>pax-web-core</feature>
+ <bundle start-level="30">mvn:org.ops4j.pax.web/pax-web-runtime/7.2.3</bundle>
+ <bundle start-level="30">mvn:org.ops4j.pax.web/pax-web-tomcat/7.2.3</bundle>
+ <bundle start-level="30">mvn:org.ops4j.pax.web/pax-web-jsp/7.2.3</bundle>
+
+ <capability>
+ pax.http.provider;provider:=tomcat
+ osgi.contract;osgi.contract=JavaServlet;version:Version="3.1.0";uses:="javax.servlet,javax.servlet.http,javax.servlet.descriptor,javax.servlet.annotation",
+ osgi.contract;osgi.contract=JavaWebSockets;version:Version="1";uses:="javax.websocket, javax.websocket.server"
+ </capability>
+
+ <conditional>
+ <condition>pax-keycloak</condition>
+ <feature>pax-keycloak-http-tomcat</feature>
+ </conditional>
+ </feature>
+
+ <feature name="pax-war-tomcat" version="7.2.3">
+ <feature version="[7.2,7.3)">pax-http-tomcat</feature>
+ <feature version="[7.2,7.3)">pax-war</feature>
+ </feature>
+
+ <feature name="pax-jsf-support" version="7.2.3">
+ <feature version="[7.2,7.3)">pax-war</feature>
+ <bundle dependency="true">mvn:javax.enterprise/cdi-api/1.2</bundle>
+ <bundle dependency="true">mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.javax-inject/1_2</bundle>
+ <bundle dependency="true">mvn:javax.interceptor/javax.interceptor-api/1.2</bundle>
+ <bundle dependency="true">mvn:org.apache.servicemix.specs/org.apache.servicemix.specs.jsr250-1.0/2.5.0</bundle>
+ <bundle dependency="true">mvn:javax.validation/validation-api/1.1.0.Final</bundle>
+ <bundle dependency="true">mvn:org.apache.servicemix.specs/org.apache.servicemix.specs.jsr303-api-1.0.0/2.5.0</bundle>
+ <bundle dependency="true">mvn:commons-beanutils/commons-beanutils/1.8.3</bundle>
+ <bundle dependency="true">mvn:commons-collections/commons-collections/3.2.2</bundle>
+ <bundle dependency="true">mvn:commons-codec/commons-codec/1.8</bundle>
+ <bundle dependency="true">mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.commons-digester/1.8_4</bundle>
+ <bundle dependency="true">mvn:org.apache.geronimo.bundles/commons-discovery/0.4_1</bundle>
+ <bundle>mvn:org.apache.myfaces.core/myfaces-api/2.2.12</bundle>
+ <bundle>mvn:org.apache.myfaces.core/myfaces-impl/2.2.12</bundle>
+ <capability>
+ osgi.contract;osgi.contract=JavaJSF;version:Version="2.2";uses:="javax.faces, javax.faces.application, javax.faces.bean, javax.faces.component, javax.faces.component.behavior, javax.faces.component.html, javax.faces.component.visit, javax.faces.context, javax.faces.convert, javax.faces.el, javax.faces.event, javax.faces.flow, javax.faces.flow.builder, javax.faces.lifecycle, javax.faces.model, javax.faces.render, javax.faces.validator, javax.faces.view, javax.faces.view.facelets, javax.faces.webapp"
+ </capability>
+ </feature>
+
+ <feature name="pax-jsf-resources-support" description="Provide sharing of resources according to Servlet 3.0 for OSGi bundles and JSF" version="7.2.3">
+ <feature version="[7.2,7.3)">pax-jsf-support</feature>
+ <bundle dependency="true">mvn:org.ops4j.pax.web/pax-web-resources-extender/7.2.3</bundle>
+ <bundle>mvn:org.ops4j.pax.web/pax-web-resources-jsf/7.2.3</bundle>
+ </feature>
+
+ <feature name="undertow" version="1.4.23.Final">
+ <bundle dependency="true" start-level="30">mvn:javax.servlet/javax.servlet-api/3.1.0</bundle>
+ <bundle dependency="true">mvn:javax.annotation/javax.annotation-api/1.2</bundle>
+ <bundle dependency="true">mvn:org.jboss.logging/jboss-logging/3.3.0.Final</bundle>
+ <bundle dependency="true">mvn:javax.websocket/javax.websocket-api/1.1</bundle>
+
+ <bundle>mvn:org.jboss.xnio/xnio-api/3.3.8.Final</bundle>
+ <bundle>mvn:org.jboss.xnio/xnio-nio/3.3.8.Final</bundle>
+ <bundle>mvn:io.undertow/undertow-core/1.4.23.Final</bundle>
+ <bundle>mvn:io.undertow/undertow-servlet/1.4.23.Final</bundle>
+ <bundle>mvn:io.undertow/undertow-websockets-jsr/1.4.23.Final</bundle>
+ <capability>
+ osgi.contract;osgi.contract=JavaServlet;version:Version="3.1.0";uses:="javax.servlet,javax.servlet.http,javax.servlet.descriptor,javax.servlet.annotation",
+ osgi.contract;osgi.contract=JavaWebSockets;version:Version="1";uses:="javax.websocket, javax.websocket.server"
+ </capability>
+ </feature>
+
+ <feature name="pax-http-undertow" version="7.2.3">
+ <configfile finalname="${karaf.etc}/undertow.properties">mvn:org.ops4j.pax.web/pax-web-features/7.2.3/properties/undertowconfig</configfile>
+ <configfile finalname="${karaf.etc}/undertow.xml">mvn:org.ops4j.pax.web/pax-web-features/7.2.3/xml/undertowconfig</configfile>
+ <config name="org.ops4j.pax.web">
+ org.osgi.service.http.port=8181
+ javax.servlet.context.tempdir=${karaf.data}/pax-web-jsp
+ #org.ops4j.pax.web.config.file=${karaf.etc}/undertow.properties
+ org.ops4j.pax.web.config.file=${karaf.etc}/undertow.xml
+ </config>
+ <feature>scr</feature>
+ <feature version="1.4.23.Final">undertow</feature>
+ <feature version="[7.2,7.3)">pax-http</feature>
+
+ <feature>pax-web-core</feature>
+ <bundle>mvn:org.ops4j.pax.web/pax-web-runtime/7.2.3</bundle>
+ <bundle>mvn:org.ops4j.pax.web/pax-web-undertow/7.2.3</bundle>
+
+ <capability>
+ pax.http.provider;provider:=undertow
+ </capability>
+
+ <conditional>
+ <condition>pax-keycloak</condition>
+ <feature>pax-keycloak-http-undertow</feature>
+ </conditional>
+ </feature>
+
+</features>
diff --git a/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/ow2/asm/asm-analysis/6.2.1/asm-analysis-6.2.1.jar b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/ow2/asm/asm-analysis/6.2.1/asm-analysis-6.2.1.jar
new file mode 100644
index 0000000000..4e0f764e6d
--- /dev/null
+++ b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/ow2/asm/asm-analysis/6.2.1/asm-analysis-6.2.1.jar
Binary files differ
diff --git a/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/ow2/asm/asm-commons/6.2.1/asm-commons-6.2.1.jar b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/ow2/asm/asm-commons/6.2.1/asm-commons-6.2.1.jar
new file mode 100644
index 0000000000..42cdfeeec2
--- /dev/null
+++ b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/ow2/asm/asm-commons/6.2.1/asm-commons-6.2.1.jar
Binary files differ
diff --git a/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/ow2/asm/asm-tree/6.2.1/asm-tree-6.2.1.jar b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/ow2/asm/asm-tree/6.2.1/asm-tree-6.2.1.jar
new file mode 100644
index 0000000000..9b17711dee
--- /dev/null
+++ b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/ow2/asm/asm-tree/6.2.1/asm-tree-6.2.1.jar
Binary files differ
diff --git a/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/ow2/asm/asm-util/6.2.1/asm-util-6.2.1.jar b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/ow2/asm/asm-util/6.2.1/asm-util-6.2.1.jar
new file mode 100644
index 0000000000..4930a397e5
--- /dev/null
+++ b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/ow2/asm/asm-util/6.2.1/asm-util-6.2.1.jar
Binary files differ
diff --git a/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/ow2/asm/asm/6.2.1/asm-6.2.1.jar b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/ow2/asm/asm/6.2.1/asm-6.2.1.jar
new file mode 100644
index 0000000000..cc00792662
--- /dev/null
+++ b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/ow2/asm/asm/6.2.1/asm-6.2.1.jar
Binary files differ
diff --git a/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/slf4j/slf4j-api/1.7.12/slf4j-api-1.7.12.jar b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/slf4j/slf4j-api/1.7.12/slf4j-api-1.7.12.jar
new file mode 100644
index 0000000000..51e2fad1b9
--- /dev/null
+++ b/test/servlet-containers/karaf/karaf-run/apache-karaf-4.2.1-minimal/system/org/slf4j/slf4j-api/1.7.12/slf4j-api-1.7.12.jar
Binary files differ
diff --git a/test/servlet-containers/karaf/karaf-run/karaf-run-pom.xml b/test/servlet-containers/karaf/karaf-run/karaf-run-pom.xml
deleted file mode 100644
index dab3f0a9ed..0000000000
--- a/test/servlet-containers/karaf/karaf-run/karaf-run-pom.xml
+++ /dev/null
@@ -1,21 +0,0 @@
-<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">
- <artifactId>karaf-runner</artifactId>
- <groupId>com.vaadin</groupId>
- <version>8.7-SNAPSHOT</version>
- <modelVersion>4.0.0</modelVersion>
- <build>
- <plugins>
- <plugin>
- <groupId>org.apache.karaf.tooling</groupId>
- <artifactId>karaf-maven-plugin</artifactId>
- <version>4.0.8</version>
- <configuration>
- <deployProjectArtifact>false</deployProjectArtifact>
- <startSsh>true</startSsh>
- </configuration>
- </plugin>
- </plugins>
- </build>
-</project>
diff --git a/test/servlet-containers/karaf/karaf-run/pom.xml b/test/servlet-containers/karaf/karaf-run/pom.xml
index d00f7a58d7..63b030044e 100644
--- a/test/servlet-containers/karaf/karaf-run/pom.xml
+++ b/test/servlet-containers/karaf/karaf-run/pom.xml
@@ -10,6 +10,7 @@
<modelVersion>4.0.0</modelVersion>
<artifactId>karaf-run</artifactId>
+ <packaging>pom</packaging>
<name>Vaadin Karaf Test Runner</name>
<dependencies>
@@ -24,33 +25,92 @@
<artifactId>vaadin-themes</artifactId>
<scope>provided</scope>
</dependency>
+ <dependency>
+ <groupId>com.vaadin</groupId>
+ <artifactId>vaadin-karaf-bundle1</artifactId>
+ <version>${project.version}</version>
+ <scope>runtime</scope>
+ </dependency>
+ <dependency>
+ <groupId>com.vaadin</groupId>
+ <artifactId>vaadin-karaf-bundle2</artifactId>
+ <version>${project.version}</version>
+ <scope>runtime</scope>
+ </dependency>
</dependencies>
+ <profiles>
+ <profile>
+ <id>windows</id>
+ <activation>
+ <os>
+ <family>Windows</family>
+ </os>
+ </activation>
+ <properties>
+ <karaf.script>karaf.bat</karaf.script>
+ </properties>
+ </profile>
+ </profiles>
+
+ <properties>
+ <karaf.script>karaf</karaf.script>
+ <karaf.home>${project.basedir}/apache-karaf-${karaf.plugin.version}-minimal</karaf.home>
+ </properties>
+
<build>
<plugins>
<plugin>
+ <artifactId>maven-clean-plugin</artifactId>
+ <executions>
+ <execution><id>clean-karaf</id>
+ <phase>pre-integration-test</phase>
+ <goals><goal>clean</goal></goals>
+ <configuration>
+ <failOnError>false</failOnError>
+ <excludeDefaultDirectories>true</excludeDefaultDirectories>
+ <filesets>
+ <fileset>
+ <directory>${karaf.home}</directory>
+ <includes>
+ <include>lock</include>
+ <include>karaf.pid</include>
+ <include>instances/*</include>
+ <include>data/*</include>
+ <include>data/*</include>
+ <include>data/*/**</include>
+ </includes>
+ </fileset>
+ </filesets>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+ <plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<version>1.6.0</version>
<executions>
<execution>
+ <id>start-karaf-background</id>
<phase>pre-integration-test</phase>
<goals>
<goal>exec</goal>
</goals>
<configuration>
- <executable>mvn</executable>
+ <executable>${karaf.home}/bin/${karaf.script}
+ </executable>
<async>true</async>
<asyncDestroyOnShutdown>true</asyncDestroyOnShutdown>
- <commandlineArgs>-f karaf-run-pom.xml karaf:run</commandlineArgs>
+ <commandlineArgs>server</commandlineArgs>
+ <workingDirectory>${project.build.directory}</workingDirectory>
</configuration>
</execution>
</executions>
-
</plugin>
<plugin>
<groupId>org.apache.karaf.tooling</groupId>
<artifactId>karaf-maven-plugin</artifactId>
- <version>4.0.8</version>
+ <version>4.2.1</version>
<executions>
<execution>
<id>karaf-client-ctrl</id>
@@ -66,17 +126,19 @@
<command>shutdown -f +10</command>
<command>feature:install http</command>
<command>feature:install http-whiteboard</command>
- <command>bundle:install -s mvn:org.jsoup/jsoup/1.8.3</command>
+ <command>bundle:install -s mvn:org.jsoup/jsoup/1.11.2</command>
<command>bundle:install -s mvn:com.vaadin.external/gentyref/1.2.0.vaadin1</command>
<command>bundle:install -s mvn:com.vaadin/vaadin-shared/${vaadin.version}</command>
<command>bundle:install -s mvn:com.vaadin/vaadin-server/${vaadin.version}</command>
- <command>bundle:install -s mvn:com.vaadin/vaadin-osgi-integration/${vaadin.version}</command>
- <command>bundle:install -s mvn:com.vaadin/vaadin-client-compiled/${vaadin.version}</command>
+ <command>bundle:install -s mvn:com.vaadin/vaadin-osgi-integration/${vaadin.version}
+ </command>
+ <command>bundle:install -s mvn:com.vaadin/vaadin-client-compiled/${vaadin.version}
+ </command>
<command>bundle:install -s mvn:com.vaadin/vaadin-themes/${vaadin.version}</command>
<command>
- <![CDATA[bundle:install -s file:./../vaadin-karaf-bundle1/target/vaadin-karaf-bundle1-${project.version}.jar]]></command>
+ <![CDATA[bundle:install -s file:./../../vaadin-karaf-bundle1/target/vaadin-karaf-bundle1-${project.version}.jar]]></command>
<command>
- <![CDATA[bundle:install -s file:./../vaadin-karaf-bundle2/target/vaadin-karaf-bundle2-${project.version}.jar]]></command>
+ <![CDATA[bundle:install -s file:./../../vaadin-karaf-bundle2/target/vaadin-karaf-bundle2-${project.version}.jar]]></command>
</commands>
</configuration>
</execution>
diff --git a/test/servlet-containers/karaf/pom.xml b/test/servlet-containers/karaf/pom.xml
index 323b96af6f..f106c9ca8a 100644
--- a/test/servlet-containers/karaf/pom.xml
+++ b/test/servlet-containers/karaf/pom.xml
@@ -18,7 +18,8 @@
</modules>
<properties>
- <karaf.plugin.version>4.0.8</karaf.plugin.version>
+ <karaf.version>4.2.1</karaf.version>
+ <karaf.plugin.version>${karaf.version}</karaf.plugin.version>
<vaadin.widgetset.mode>local</vaadin.widgetset.mode>
</properties>
<build>
diff --git a/test/servlet-containers/karaf/vaadin-karaf-bundle1/pom.xml b/test/servlet-containers/karaf/vaadin-karaf-bundle1/pom.xml
index f534d4559c..367b3af65a 100644
--- a/test/servlet-containers/karaf/vaadin-karaf-bundle1/pom.xml
+++ b/test/servlet-containers/karaf/vaadin-karaf-bundle1/pom.xml
@@ -112,6 +112,14 @@
</archive>
</configuration>
</plugin>
+ <plugin>
+ <groupId>com.github.klieber</groupId>
+ <artifactId>phantomjs-maven-plugin</artifactId>
+ <version>0.7</version>
+ <configuration>
+ <skip>true</skip>
+ </configuration>
+ </plugin>
</plugins>
</build>
diff --git a/test/servlet-containers/karaf/vaadin-karaf-bundle2/pom.xml b/test/servlet-containers/karaf/vaadin-karaf-bundle2/pom.xml
index 585a4a878d..4a6ab40a8b 100644
--- a/test/servlet-containers/karaf/vaadin-karaf-bundle2/pom.xml
+++ b/test/servlet-containers/karaf/vaadin-karaf-bundle2/pom.xml
@@ -104,6 +104,14 @@
</archive>
</configuration>
</plugin>
+ <plugin>
+ <groupId>com.github.klieber</groupId>
+ <artifactId>phantomjs-maven-plugin</artifactId>
+ <version>0.7</version>
+ <configuration>
+ <skip>true</skip>
+ </configuration>
+ </plugin>
</plugins>
</build>