diff --git a/.asf.yaml b/.asf.yaml
new file mode 100644
index 0000000..ae7e40a
--- /dev/null
+++ b/.asf.yaml
@@ -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.
+
+github:
+  description: "Apache TomEE"
+  homepage: https://tomee.apache.org/
+  labels:
+    - jakarta-ee
+    - microprofile
+    - network-server
+    - java
+    - tomee
+
+  features:
+    wiki: false
+    issues: false
+    projects: false
+  enabled_merge_buttons:
+    squash:  true
+    merge:   true
+    rebase:  true
+notifications:
+  commits:      commits@tomee.apache.org
+  issues:       dev@tomee.apache.org
+  pullrequests: dev@tomee.apache.org
+  jira_options: link worklog
\ No newline at end of file
diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml
index fe929e3..a123e02 100644
--- a/.github/workflows/main.yml
+++ b/.github/workflows/main.yml
@@ -1,4 +1,4 @@
-name: CI
+name: CI Master
 
 on:
   push:
@@ -11,13 +11,12 @@
 
 jobs:
   build:
-    runs-on: ubuntu-18.04
+    runs-on: ubuntu-latest
 
     steps:
     - uses: actions/checkout@v2
-        
     - name: Set up JDK 1.8
-      uses: joschi/setup-jdk@v2
+      uses: actions/setup-java@v1
       with:
         java-version: '8'
 
@@ -31,19 +30,12 @@
         key: ${{ runner.os }}-m2-${{ hashFiles('**/pom.xml') }}
         restore-keys: ${{ runner.os }}-m2
 
-    - name: Checkstyle
-      run: mvn help:system checkstyle:check -Pstyle
-      env:
-        MAVEN_OPTS: -Xmx1536m
+    - name: maven-settings-xml-action
+      run: echo "<settings xmlns=\"http://maven.apache.org/SETTINGS/1.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd\"> <activeProfiles> <activeProfile>github</activeProfile> </activeProfiles> <profiles> <profile> <id>github</id> <repositories> <repository> <id>central-repo</id> <url>https://repo.maven.apache.org/maven2</url> <releases> <enabled>true</enabled> </releases> <snapshots> <enabled>false</enabled> </snapshots> </repository> </repositories> <pluginRepositories> <pluginRepository> <id>central-plugin-repository</id> <url>https://repo.maven.apache.org/maven2</url> <releases> <enabled>true</enabled> </releases> <snapshots> <enabled>false</enabled> </snapshots> </pluginRepository> </pluginRepositories> </profile> </profiles> <servers/> <mirrors/> <pluginGroups/> </settings>" > ~/.m2/settings.xml
 
-    - name: Pmd
-      run: mvn help:system pmd:check -Pstyle
+    - name: Compile with Sanity checks
+      run: mvn help:system -U --show-version --fail-at-end -Djava.io.tmpdir=/tmp/tomee-trunk-ubuntu-jvm8 clean install -DfailIfNoTests=false -DskipTests -Pstyle,rat
       env:
-        MAVEN_OPTS: -Xmx1536m
-
-    - name: Compile
-      run: mvn help:system -e --show-version --update-snapshots --fail-at-end -Djava.io.tmpdir=/tmp/tomee-trunk-ubuntu-jvm8 clean install -DfailIfNoTests=false -DskipTests
-      env:
-        MAVEN_OPTS: -Xmx1536m
+        MAVEN_OPTS: -Xmx2048m
 
 
diff --git a/arquillian/arquillian-common/pom.xml b/arquillian/arquillian-common/pom.xml
index f0c9e0e..b52e419 100644
--- a/arquillian/arquillian-common/pom.xml
+++ b/arquillian/arquillian-common/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <artifactId>arquillian</artifactId>
     <groupId>org.apache.tomee</groupId>
-    <version>8.0.6-SNAPSHOT</version>
+    <version>8.0.7-SNAPSHOT</version>
   </parent>
 
   <artifactId>arquillian-common</artifactId>
diff --git a/arquillian/arquillian-openejb-embedded/pom.xml b/arquillian/arquillian-openejb-embedded/pom.xml
index 0b03e1e..3d33af9 100644
--- a/arquillian/arquillian-openejb-embedded/pom.xml
+++ b/arquillian/arquillian-openejb-embedded/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <artifactId>arquillian</artifactId>
     <groupId>org.apache.tomee</groupId>
-    <version>8.0.6-SNAPSHOT</version>
+    <version>8.0.7-SNAPSHOT</version>
   </parent>
   <modelVersion>4.0.0</modelVersion>
 
diff --git a/arquillian/arquillian-openejb-transaction-provider/pom.xml b/arquillian/arquillian-openejb-transaction-provider/pom.xml
index 465821f..cac43e2 100644
--- a/arquillian/arquillian-openejb-transaction-provider/pom.xml
+++ b/arquillian/arquillian-openejb-transaction-provider/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <artifactId>arquillian</artifactId>
     <groupId>org.apache.tomee</groupId>
-    <version>8.0.6-SNAPSHOT</version>
+    <version>8.0.7-SNAPSHOT</version>
   </parent>
   <modelVersion>4.0.0</modelVersion>
 
diff --git a/arquillian/arquillian-tck/pom.xml b/arquillian/arquillian-tck/pom.xml
index 280968a..e7c09c7 100644
--- a/arquillian/arquillian-tck/pom.xml
+++ b/arquillian/arquillian-tck/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <artifactId>arquillian</artifactId>
     <groupId>org.apache.tomee</groupId>
-    <version>8.0.6-SNAPSHOT</version>
+    <version>8.0.7-SNAPSHOT</version>
   </parent>
 
   <artifactId>arquillian-tck</artifactId>
diff --git a/arquillian/arquillian-tomee-common/pom.xml b/arquillian/arquillian-tomee-common/pom.xml
index e5a4955..9c377cf 100644
--- a/arquillian/arquillian-tomee-common/pom.xml
+++ b/arquillian/arquillian-tomee-common/pom.xml
@@ -21,7 +21,7 @@
   <parent>
     <artifactId>arquillian</artifactId>
     <groupId>org.apache.tomee</groupId>
-    <version>8.0.6-SNAPSHOT</version>
+    <version>8.0.7-SNAPSHOT</version>
   </parent>
   <artifactId>arquillian-tomee-common</artifactId>
   <packaging>jar</packaging>
diff --git a/arquillian/arquillian-tomee-embedded/pom.xml b/arquillian/arquillian-tomee-embedded/pom.xml
index 65e65df..63d63bf 100644
--- a/arquillian/arquillian-tomee-embedded/pom.xml
+++ b/arquillian/arquillian-tomee-embedded/pom.xml
@@ -21,7 +21,7 @@
   <parent>
     <artifactId>arquillian</artifactId>
     <groupId>org.apache.tomee</groupId>
-    <version>8.0.6-SNAPSHOT</version>
+    <version>8.0.7-SNAPSHOT</version>
   </parent>
   <artifactId>arquillian-tomee-embedded</artifactId>
   <packaging>jar</packaging>
diff --git a/arquillian/arquillian-tomee-moviefun-example/pom.xml b/arquillian/arquillian-tomee-moviefun-example/pom.xml
index a3a3295..dd5776d 100644
--- a/arquillian/arquillian-tomee-moviefun-example/pom.xml
+++ b/arquillian/arquillian-tomee-moviefun-example/pom.xml
@@ -17,7 +17,7 @@
   <parent>
     <groupId>org.apache.tomee</groupId>
     <artifactId>arquillian</artifactId>
-    <version>8.0.6-SNAPSHOT</version>
+    <version>8.0.7-SNAPSHOT</version>
   </parent>
   <artifactId>arquillian-tomee-moviefun-example</artifactId>
   <packaging>war</packaging>
diff --git a/arquillian/arquillian-tomee-remote/pom.xml b/arquillian/arquillian-tomee-remote/pom.xml
index af6e644..7dd38e8 100644
--- a/arquillian/arquillian-tomee-remote/pom.xml
+++ b/arquillian/arquillian-tomee-remote/pom.xml
@@ -21,7 +21,7 @@
   <parent>
     <artifactId>arquillian</artifactId>
     <groupId>org.apache.tomee</groupId>
-    <version>8.0.6-SNAPSHOT</version>
+    <version>8.0.7-SNAPSHOT</version>
   </parent>
   <artifactId>arquillian-tomee-remote</artifactId>
   <packaging>jar</packaging>
@@ -95,7 +95,7 @@
       <groupId>${project.groupId}</groupId>
       <artifactId>apache-tomee</artifactId>
       <type>zip</type>
-      <version>8.0.6-SNAPSHOT</version>
+      <version>8.0.7-SNAPSHOT</version>
       <classifier>webprofile</classifier>
       <scope>provided</scope>
     </dependency>
@@ -124,7 +124,7 @@
     <dependency>
       <groupId>${project.groupId}</groupId>
       <artifactId>arquillian-tomee-common</artifactId>
-      <version>8.0.6-SNAPSHOT</version>
+      <version>8.0.7-SNAPSHOT</version>
       <type>jar</type>
       <scope>compile</scope>
     </dependency>
@@ -151,7 +151,7 @@
     <dependency>
       <groupId>${project.groupId}</groupId>
       <artifactId>arquillian-common</artifactId>
-      <version>8.0.6-SNAPSHOT</version>
+      <version>8.0.7-SNAPSHOT</version>
     </dependency>
 
     <dependency>
diff --git a/arquillian/arquillian-tomee-tests/arquillian-tomee-codi-tests/pom.xml b/arquillian/arquillian-tomee-tests/arquillian-tomee-codi-tests/pom.xml
index 581e2f1..f2e6d24 100644
--- a/arquillian/arquillian-tomee-tests/arquillian-tomee-codi-tests/pom.xml
+++ b/arquillian/arquillian-tomee-tests/arquillian-tomee-codi-tests/pom.xml
@@ -21,7 +21,7 @@
   <parent>
     <artifactId>arquillian-tomee-tests</artifactId>
     <groupId>org.apache.tomee</groupId>
-    <version>8.0.6-SNAPSHOT</version>
+    <version>8.0.7-SNAPSHOT</version>
   </parent>
 
   <artifactId>arquillian-tomee-codi-tests</artifactId>
diff --git a/arquillian/arquillian-tomee-tests/arquillian-tomee-config-tests/pom.xml b/arquillian/arquillian-tomee-tests/arquillian-tomee-config-tests/pom.xml
index 52157d7..c7d0b2e 100644
--- a/arquillian/arquillian-tomee-tests/arquillian-tomee-config-tests/pom.xml
+++ b/arquillian/arquillian-tomee-tests/arquillian-tomee-config-tests/pom.xml
@@ -21,7 +21,7 @@
   <parent>
     <artifactId>arquillian-tomee-tests</artifactId>
     <groupId>org.apache.tomee</groupId>
-    <version>8.0.6-SNAPSHOT</version>
+    <version>8.0.7-SNAPSHOT</version>
   </parent>
 
   <artifactId>arquillian-tomee-config-tests</artifactId>
diff --git a/arquillian/arquillian-tomee-tests/arquillian-tomee-jaxrs-tests/pom.xml b/arquillian/arquillian-tomee-tests/arquillian-tomee-jaxrs-tests/pom.xml
index 290358b..fc46e1d 100644
--- a/arquillian/arquillian-tomee-tests/arquillian-tomee-jaxrs-tests/pom.xml
+++ b/arquillian/arquillian-tomee-tests/arquillian-tomee-jaxrs-tests/pom.xml
@@ -21,7 +21,7 @@
   <parent>
     <artifactId>arquillian-tomee-tests</artifactId>
     <groupId>org.apache.tomee</groupId>
-    <version>8.0.6-SNAPSHOT</version>
+    <version>8.0.7-SNAPSHOT</version>
   </parent>
 
   <artifactId>arquillian-tomee-jaxrs-tests</artifactId>
diff --git a/arquillian/arquillian-tomee-tests/arquillian-tomee-jaxrs-tests/src/test/resources/org/apache/openejb/arquillian/tests/jaxrs/servlets/ok.html b/arquillian/arquillian-tomee-tests/arquillian-tomee-jaxrs-tests/src/test/resources/org/apache/openejb/arquillian/tests/jaxrs/servlets/ok.html
index c7be294..fc1632e 100644
--- a/arquillian/arquillian-tomee-tests/arquillian-tomee-jaxrs-tests/src/test/resources/org/apache/openejb/arquillian/tests/jaxrs/servlets/ok.html
+++ b/arquillian/arquillian-tomee-tests/arquillian-tomee-jaxrs-tests/src/test/resources/org/apache/openejb/arquillian/tests/jaxrs/servlets/ok.html
@@ -1 +1,17 @@
+<!--
+  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.
+-->
 <html><body>ok!</body></html>
diff --git a/arquillian/arquillian-tomee-tests/arquillian-tomee-jaxws-tests/pom.xml b/arquillian/arquillian-tomee-tests/arquillian-tomee-jaxws-tests/pom.xml
index 623a2ec..6649f84 100644
--- a/arquillian/arquillian-tomee-tests/arquillian-tomee-jaxws-tests/pom.xml
+++ b/arquillian/arquillian-tomee-tests/arquillian-tomee-jaxws-tests/pom.xml
@@ -21,7 +21,7 @@
   <parent>
     <artifactId>arquillian-tomee-tests</artifactId>
     <groupId>org.apache.tomee</groupId>
-    <version>8.0.6-SNAPSHOT</version>
+    <version>8.0.7-SNAPSHOT</version>
   </parent>
 
   <artifactId>arquillian-tomee-jaxws-tests</artifactId>
diff --git a/arquillian/arquillian-tomee-tests/arquillian-tomee-jms-tests/pom.xml b/arquillian/arquillian-tomee-tests/arquillian-tomee-jms-tests/pom.xml
index 13c8133..88f6d85 100644
--- a/arquillian/arquillian-tomee-tests/arquillian-tomee-jms-tests/pom.xml
+++ b/arquillian/arquillian-tomee-tests/arquillian-tomee-jms-tests/pom.xml
@@ -21,7 +21,7 @@
   <parent>
     <artifactId>arquillian-tomee-tests</artifactId>
     <groupId>org.apache.tomee</groupId>
-    <version>8.0.6-SNAPSHOT</version>
+    <version>8.0.7-SNAPSHOT</version>
   </parent>
 
   <artifactId>arquillian-tomee-jms-tests</artifactId>
diff --git a/arquillian/arquillian-tomee-tests/arquillian-tomee-webprofile-tests/pom.xml b/arquillian/arquillian-tomee-tests/arquillian-tomee-webprofile-tests/pom.xml
index 4368d8f..aacebdd 100644
--- a/arquillian/arquillian-tomee-tests/arquillian-tomee-webprofile-tests/pom.xml
+++ b/arquillian/arquillian-tomee-tests/arquillian-tomee-webprofile-tests/pom.xml
@@ -21,7 +21,7 @@
   <parent>
     <artifactId>arquillian-tomee-tests</artifactId>
     <groupId>org.apache.tomee</groupId>
-    <version>8.0.6-SNAPSHOT</version>
+    <version>8.0.7-SNAPSHOT</version>
   </parent>
 
   <artifactId>arquillian-tomee-webprofile-tests</artifactId>
diff --git a/arquillian/arquillian-tomee-tests/arquillian-tomee-webprofile-tests/src/test/resources/org/apache/openejb/arquillian/tests/jsp/test.jsp b/arquillian/arquillian-tomee-tests/arquillian-tomee-webprofile-tests/src/test/resources/org/apache/openejb/arquillian/tests/jsp/test.jsp
index 05ab5a2..7ce61e3 100644
--- a/arquillian/arquillian-tomee-tests/arquillian-tomee-webprofile-tests/src/test/resources/org/apache/openejb/arquillian/tests/jsp/test.jsp
+++ b/arquillian/arquillian-tomee-tests/arquillian-tomee-webprofile-tests/src/test/resources/org/apache/openejb/arquillian/tests/jsp/test.jsp
@@ -1,3 +1,19 @@
+<%--
+  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.
+--%>
 <%@ page import="javax.naming.InitialContext"%><%@ page import="java.util.Properties"%><%@ page import="javax.naming.Context"%><%@ page import="org.apache.openejb.arquillian.tests.jsp.DataBusinessHome"%><%@ page import="javax.rmi.PortableRemoteObject"%><%@ page import="org.apache.openejb.arquillian.tests.jsp.DataBusiness"%><%@ page import="org.apache.openejb.arquillian.tests.jsp.Data"%><%@ page contentType="text/plain;charset=UTF-8" language="java" %>
 <%
 
diff --git a/arquillian/arquillian-tomee-tests/pom.xml b/arquillian/arquillian-tomee-tests/pom.xml
index 03d14ea..f95e596 100644
--- a/arquillian/arquillian-tomee-tests/pom.xml
+++ b/arquillian/arquillian-tomee-tests/pom.xml
@@ -16,7 +16,7 @@
   <parent>
     <artifactId>arquillian</artifactId>
     <groupId>org.apache.tomee</groupId>
-    <version>8.0.6-SNAPSHOT</version>
+    <version>8.0.7-SNAPSHOT</version>
   </parent>
   
   <artifactId>arquillian-tomee-tests</artifactId>
diff --git a/arquillian/arquillian-tomee-webapp-remote/pom.xml b/arquillian/arquillian-tomee-webapp-remote/pom.xml
index aeccbb9..0c174d3 100644
--- a/arquillian/arquillian-tomee-webapp-remote/pom.xml
+++ b/arquillian/arquillian-tomee-webapp-remote/pom.xml
@@ -21,7 +21,7 @@
   <parent>
     <artifactId>arquillian</artifactId>
     <groupId>org.apache.tomee</groupId>
-    <version>8.0.6-SNAPSHOT</version>
+    <version>8.0.7-SNAPSHOT</version>
   </parent>
 
   <artifactId>arquillian-tomee-webapp-remote</artifactId>
@@ -252,10 +252,6 @@
           <groupId>${project.groupId}</groupId>
         </exclusion>
         <exclusion>
-          <artifactId>openejb-bval</artifactId>
-          <groupId>org.apache.openejb.patch</groupId>
-        </exclusion>
-        <exclusion>
           <artifactId>mbean-annotation-api</artifactId>
           <groupId>${project.groupId}</groupId>
         </exclusion>
diff --git a/arquillian/pom.xml b/arquillian/pom.xml
index 0ccb720..60f61dd 100644
--- a/arquillian/pom.xml
+++ b/arquillian/pom.xml
@@ -22,11 +22,11 @@
   <parent>
     <artifactId>tomee-project</artifactId>
     <groupId>org.apache.tomee</groupId>
-    <version>8.0.6-SNAPSHOT</version>
+    <version>8.0.7-SNAPSHOT</version>
   </parent>
 
   <artifactId>arquillian</artifactId>
-  <version>8.0.6-SNAPSHOT</version>
+  <version>8.0.7-SNAPSHOT</version>
   <packaging>pom</packaging>
   <name>TomEE :: Arquillian Adaptors Parent</name>
 
diff --git a/arquillian/ziplock/pom.xml b/arquillian/ziplock/pom.xml
index 3fc4d85..9f96852 100644
--- a/arquillian/ziplock/pom.xml
+++ b/arquillian/ziplock/pom.xml
@@ -21,7 +21,7 @@
   <parent>
     <artifactId>arquillian</artifactId>
     <groupId>org.apache.tomee</groupId>
-    <version>8.0.6-SNAPSHOT</version>
+    <version>8.0.7-SNAPSHOT</version>
   </parent>
 
   <artifactId>ziplock</artifactId>
@@ -66,5 +66,11 @@
       <version>${version.shrinkwrap.shrinkwrap}</version>
       <scope>test</scope>
     </dependency>
+    <dependency>
+      <groupId>org.slf4j</groupId>
+      <artifactId>slf4j-simple</artifactId>
+      <version>1.7.21</version>
+      <scope>test</scope>
+    </dependency>
   </dependencies>
 </project>
diff --git a/arquillian/ziplock/src/test/java/org/apache/ziplock/maven/MvnTest.java b/arquillian/ziplock/src/test/java/org/apache/ziplock/maven/MvnTest.java
index 5f9c206..f96ac3e 100644
--- a/arquillian/ziplock/src/test/java/org/apache/ziplock/maven/MvnTest.java
+++ b/arquillian/ziplock/src/test/java/org/apache/ziplock/maven/MvnTest.java
@@ -27,6 +27,7 @@
     @Test
     public void main() {
         final Archive<?> war = Mvn.war();
+        System.out.println(war.toString(true));
         assertTrue(war.get("/WEB-INF/classes/org/apache/ziplock/maven/Mvn.class") != null);
         assertTrue(war.getContent(new Filter<ArchivePath>() {
             @Override
@@ -45,6 +46,7 @@
     @Test
     public void test() {
         final Archive<?> war = Mvn.testWar();
+        System.out.println(war.toString(true));
         assertTrue(war.get("/WEB-INF/classes/org/apache/ziplock/maven/Mvn.class") != null);
         assertTrue(war.getContent(new Filter<ArchivePath>() {
             @Override
diff --git a/assembly/openejb-lite/pom.xml b/assembly/openejb-lite/pom.xml
index 2c2eb1a..e2199d6 100644
--- a/assembly/openejb-lite/pom.xml
+++ b/assembly/openejb-lite/pom.xml
@@ -26,7 +26,7 @@
   <parent>
     <artifactId>assembly</artifactId>
     <groupId>org.apache.tomee</groupId>
-    <version>8.0.6-SNAPSHOT</version>
+    <version>8.0.7-SNAPSHOT</version>
   </parent>
 
   <artifactId>openejb-lite</artifactId>
diff --git a/assembly/openejb-standalone/pom.xml b/assembly/openejb-standalone/pom.xml
index c8dee87..4e44b0f 100644
--- a/assembly/openejb-standalone/pom.xml
+++ b/assembly/openejb-standalone/pom.xml
@@ -26,7 +26,7 @@
   <parent>
     <artifactId>assembly</artifactId>
     <groupId>org.apache.tomee</groupId>
-    <version>8.0.6-SNAPSHOT</version>
+    <version>8.0.7-SNAPSHOT</version>
   </parent>
 
   <artifactId>openejb-standalone</artifactId>
@@ -84,15 +84,6 @@
         </executions>
       </plugin>
       <plugin>
-        <groupId>org.codehaus.mojo</groupId>
-        <artifactId>rat-maven-plugin</artifactId>
-        <configuration>
-          <excludes>
-            <exclude>src/main/resources/DATA-README.txt</exclude>
-          </excludes>
-        </configuration>
-      </plugin>
-      <plugin>
         <groupId>org.apache.maven.plugins</groupId>
         <artifactId>maven-assembly-plugin</artifactId>
         <executions>
diff --git a/assembly/pom.xml b/assembly/pom.xml
index 53e0fa7..53119bf 100644
--- a/assembly/pom.xml
+++ b/assembly/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <artifactId>tomee-project</artifactId>
     <groupId>org.apache.tomee</groupId>
-    <version>8.0.6-SNAPSHOT</version>
+    <version>8.0.7-SNAPSHOT</version>
   </parent>
   <modelVersion>4.0.0</modelVersion>
   <artifactId>assembly</artifactId>
diff --git a/boms/jaxb-runtime/pom.xml b/boms/jaxb-runtime/pom.xml
index 276b244..e1dfd71 100644
--- a/boms/jaxb-runtime/pom.xml
+++ b/boms/jaxb-runtime/pom.xml
@@ -24,7 +24,7 @@
   <parent>
     <groupId>org.apache.tomee.bom</groupId>
     <artifactId>boms</artifactId>
-    <version>8.0.6-SNAPSHOT</version>
+    <version>8.0.7-SNAPSHOT</version>
   </parent>
 
   <modelVersion>4.0.0</modelVersion>
diff --git a/boms/pom.xml b/boms/pom.xml
index 7016bc6..bf0df3a 100644
--- a/boms/pom.xml
+++ b/boms/pom.xml
@@ -24,7 +24,7 @@
   <parent>
     <artifactId>tomee-project</artifactId>
     <groupId>org.apache.tomee</groupId>
-    <version>8.0.6-SNAPSHOT</version>
+    <version>8.0.7-SNAPSHOT</version>
   </parent>
 
   <modelVersion>4.0.0</modelVersion>
diff --git a/boms/tomee-microprofile/pom.xml b/boms/tomee-microprofile/pom.xml
index 0a42985..e30d18a 100644
--- a/boms/tomee-microprofile/pom.xml
+++ b/boms/tomee-microprofile/pom.xml
@@ -31,7 +31,7 @@
   <parent>
     <groupId>org.apache.tomee.bom</groupId>
     <artifactId>boms</artifactId>
-    <version>8.0.6-SNAPSHOT</version>
+    <version>8.0.7-SNAPSHOT</version>
   </parent>
 
   <modelVersion>4.0.0</modelVersion>
@@ -43,12 +43,12 @@
     <dependency>
       <groupId>org.apache.tomee</groupId>
       <artifactId>tomee-bootstrap</artifactId>
-      <version>${project.version}</version>
+      <version>8.0.7-SNAPSHOT</version>
     </dependency>
     <dependency>
       <groupId>com.fasterxml.jackson.core</groupId>
       <artifactId>jackson-annotations</artifactId>
-      <version>2.10.0</version>
+      <version>2.12.0-rc1</version>
       <exclusions>
         <exclusion>
           <artifactId>*</artifactId>
@@ -59,7 +59,7 @@
     <dependency>
       <groupId>com.fasterxml.jackson.core</groupId>
       <artifactId>jackson-core</artifactId>
-      <version>2.10.0</version>
+      <version>2.12.0-rc1</version>
       <exclusions>
         <exclusion>
           <artifactId>*</artifactId>
@@ -70,7 +70,7 @@
     <dependency>
       <groupId>com.fasterxml.jackson.core</groupId>
       <artifactId>jackson-databind</artifactId>
-      <version>2.10.0</version>
+      <version>2.12.0-rc1</version>
       <exclusions>
         <exclusion>
           <artifactId>*</artifactId>
@@ -81,7 +81,7 @@
     <dependency>
       <groupId>com.fasterxml.jackson.dataformat</groupId>
       <artifactId>jackson-dataformat-yaml</artifactId>
-      <version>2.10.0</version>
+      <version>2.12.0-rc1</version>
       <exclusions>
         <exclusion>
           <artifactId>*</artifactId>
@@ -169,7 +169,7 @@
     <dependency>
       <groupId>commons-codec</groupId>
       <artifactId>commons-codec</artifactId>
-      <version>1.14</version>
+      <version>1.15</version>
       <exclusions>
         <exclusion>
           <artifactId>*</artifactId>
@@ -279,7 +279,7 @@
     <dependency>
       <groupId>org.apache.bval</groupId>
       <artifactId>bval-jsr</artifactId>
-      <version>2.0.3</version>
+      <version>2.0.5</version>
       <exclusions>
         <exclusion>
           <artifactId>*</artifactId>
@@ -290,7 +290,7 @@
     <dependency>
       <groupId>org.apache.commons</groupId>
       <artifactId>commons-collections4</artifactId>
-      <version>4.3</version>
+      <version>4.4</version>
       <exclusions>
         <exclusion>
           <artifactId>*</artifactId>
@@ -312,7 +312,7 @@
     <dependency>
       <groupId>org.apache.commons</groupId>
       <artifactId>commons-lang3</artifactId>
-      <version>3.8.1</version>
+      <version>3.11</version>
       <exclusions>
         <exclusion>
           <artifactId>*</artifactId>
@@ -334,7 +334,7 @@
     <dependency>
       <groupId>org.apache.cxf</groupId>
       <artifactId>cxf-core</artifactId>
-      <version>3.3.7</version>
+      <version>3.3.8</version>
       <exclusions>
         <exclusion>
           <artifactId>*</artifactId>
@@ -345,7 +345,7 @@
     <dependency>
       <groupId>org.apache.cxf</groupId>
       <artifactId>cxf-rt-bindings-soap</artifactId>
-      <version>3.3.7</version>
+      <version>3.3.8</version>
       <exclusions>
         <exclusion>
           <artifactId>*</artifactId>
@@ -356,7 +356,7 @@
     <dependency>
       <groupId>org.apache.cxf</groupId>
       <artifactId>cxf-rt-bindings-xml</artifactId>
-      <version>3.3.7</version>
+      <version>3.3.8</version>
       <exclusions>
         <exclusion>
           <artifactId>*</artifactId>
@@ -367,7 +367,7 @@
     <dependency>
       <groupId>org.apache.cxf</groupId>
       <artifactId>cxf-rt-databinding-jaxb</artifactId>
-      <version>3.3.7</version>
+      <version>3.3.8</version>
       <exclusions>
         <exclusion>
           <artifactId>*</artifactId>
@@ -378,7 +378,7 @@
     <dependency>
       <groupId>org.apache.cxf</groupId>
       <artifactId>cxf-rt-frontend-jaxrs</artifactId>
-      <version>3.3.7</version>
+      <version>3.3.8</version>
       <exclusions>
         <exclusion>
           <artifactId>*</artifactId>
@@ -389,7 +389,7 @@
     <dependency>
       <groupId>org.apache.cxf</groupId>
       <artifactId>cxf-rt-frontend-jaxws</artifactId>
-      <version>3.3.7</version>
+      <version>3.3.8</version>
       <exclusions>
         <exclusion>
           <artifactId>*</artifactId>
@@ -400,7 +400,7 @@
     <dependency>
       <groupId>org.apache.cxf</groupId>
       <artifactId>cxf-rt-frontend-simple</artifactId>
-      <version>3.3.7</version>
+      <version>3.3.8</version>
       <exclusions>
         <exclusion>
           <artifactId>*</artifactId>
@@ -411,7 +411,7 @@
     <dependency>
       <groupId>org.apache.cxf</groupId>
       <artifactId>cxf-rt-management</artifactId>
-      <version>3.3.7</version>
+      <version>3.3.8</version>
       <exclusions>
         <exclusion>
           <artifactId>*</artifactId>
@@ -422,7 +422,7 @@
     <dependency>
       <groupId>org.apache.cxf</groupId>
       <artifactId>cxf-rt-rs-client</artifactId>
-      <version>3.3.7</version>
+      <version>3.3.8</version>
       <exclusions>
         <exclusion>
           <artifactId>*</artifactId>
@@ -433,7 +433,7 @@
     <dependency>
       <groupId>org.apache.cxf</groupId>
       <artifactId>cxf-rt-rs-extension-providers</artifactId>
-      <version>3.3.7</version>
+      <version>3.3.8</version>
       <exclusions>
         <exclusion>
           <artifactId>*</artifactId>
@@ -444,7 +444,7 @@
     <dependency>
       <groupId>org.apache.cxf</groupId>
       <artifactId>cxf-rt-rs-extension-search</artifactId>
-      <version>3.3.7</version>
+      <version>3.3.8</version>
       <exclusions>
         <exclusion>
           <artifactId>*</artifactId>
@@ -455,7 +455,7 @@
     <dependency>
       <groupId>org.apache.cxf</groupId>
       <artifactId>cxf-rt-rs-json-basic</artifactId>
-      <version>3.3.7</version>
+      <version>3.3.8</version>
       <exclusions>
         <exclusion>
           <artifactId>*</artifactId>
@@ -466,7 +466,7 @@
     <dependency>
       <groupId>org.apache.cxf</groupId>
       <artifactId>cxf-rt-rs-mp-client</artifactId>
-      <version>3.3.7</version>
+      <version>3.3.8</version>
       <exclusions>
         <exclusion>
           <artifactId>*</artifactId>
@@ -477,7 +477,7 @@
     <dependency>
       <groupId>org.apache.cxf</groupId>
       <artifactId>cxf-rt-rs-security-cors</artifactId>
-      <version>3.3.7</version>
+      <version>3.3.8</version>
       <exclusions>
         <exclusion>
           <artifactId>*</artifactId>
@@ -488,7 +488,7 @@
     <dependency>
       <groupId>org.apache.cxf</groupId>
       <artifactId>cxf-rt-rs-security-jose</artifactId>
-      <version>3.3.7</version>
+      <version>3.3.8</version>
       <exclusions>
         <exclusion>
           <artifactId>*</artifactId>
@@ -499,7 +499,7 @@
     <dependency>
       <groupId>org.apache.cxf</groupId>
       <artifactId>cxf-rt-rs-security-jose-jaxrs</artifactId>
-      <version>3.3.7</version>
+      <version>3.3.8</version>
       <exclusions>
         <exclusion>
           <artifactId>*</artifactId>
@@ -510,7 +510,7 @@
     <dependency>
       <groupId>org.apache.cxf</groupId>
       <artifactId>cxf-rt-rs-security-oauth2</artifactId>
-      <version>3.3.7</version>
+      <version>3.3.8</version>
       <exclusions>
         <exclusion>
           <artifactId>*</artifactId>
@@ -521,7 +521,18 @@
     <dependency>
       <groupId>org.apache.cxf</groupId>
       <artifactId>cxf-rt-rs-service-description</artifactId>
-      <version>3.3.7</version>
+      <version>3.3.8</version>
+      <exclusions>
+        <exclusion>
+          <artifactId>*</artifactId>
+          <groupId>*</groupId>
+        </exclusion>
+      </exclusions>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.cxf</groupId>
+      <artifactId>cxf-rt-rs-sse</artifactId>
+      <version>3.3.8</version>
       <exclusions>
         <exclusion>
           <artifactId>*</artifactId>
@@ -532,7 +543,7 @@
     <dependency>
       <groupId>org.apache.cxf</groupId>
       <artifactId>cxf-rt-security</artifactId>
-      <version>3.3.7</version>
+      <version>3.3.8</version>
       <exclusions>
         <exclusion>
           <artifactId>*</artifactId>
@@ -543,7 +554,7 @@
     <dependency>
       <groupId>org.apache.cxf</groupId>
       <artifactId>cxf-rt-security-saml</artifactId>
-      <version>3.3.7</version>
+      <version>3.3.8</version>
       <exclusions>
         <exclusion>
           <artifactId>*</artifactId>
@@ -554,7 +565,7 @@
     <dependency>
       <groupId>org.apache.cxf</groupId>
       <artifactId>cxf-rt-transports-http</artifactId>
-      <version>3.3.7</version>
+      <version>3.3.8</version>
       <exclusions>
         <exclusion>
           <artifactId>*</artifactId>
@@ -565,7 +576,7 @@
     <dependency>
       <groupId>org.apache.cxf</groupId>
       <artifactId>cxf-rt-ws-addr</artifactId>
-      <version>3.3.7</version>
+      <version>3.3.8</version>
       <exclusions>
         <exclusion>
           <artifactId>*</artifactId>
@@ -576,7 +587,7 @@
     <dependency>
       <groupId>org.apache.cxf</groupId>
       <artifactId>cxf-rt-ws-policy</artifactId>
-      <version>3.3.7</version>
+      <version>3.3.8</version>
       <exclusions>
         <exclusion>
           <artifactId>*</artifactId>
@@ -587,7 +598,7 @@
     <dependency>
       <groupId>org.apache.cxf</groupId>
       <artifactId>cxf-rt-ws-security</artifactId>
-      <version>3.3.7</version>
+      <version>3.3.8</version>
       <exclusions>
         <exclusion>
           <artifactId>*</artifactId>
@@ -598,7 +609,7 @@
     <dependency>
       <groupId>org.apache.cxf</groupId>
       <artifactId>cxf-rt-wsdl</artifactId>
-      <version>3.3.7</version>
+      <version>3.3.8</version>
       <exclusions>
         <exclusion>
           <artifactId>*</artifactId>
@@ -719,7 +730,7 @@
     <dependency>
       <groupId>org.apache.johnzon</groupId>
       <artifactId>johnzon-core</artifactId>
-      <version>1.2.5</version>
+      <version>1.2.9</version>
       <exclusions>
         <exclusion>
           <artifactId>*</artifactId>
@@ -730,7 +741,7 @@
     <dependency>
       <groupId>org.apache.johnzon</groupId>
       <artifactId>johnzon-jaxrs</artifactId>
-      <version>1.2.5</version>
+      <version>1.2.9</version>
       <exclusions>
         <exclusion>
           <artifactId>*</artifactId>
@@ -741,7 +752,18 @@
     <dependency>
       <groupId>org.apache.johnzon</groupId>
       <artifactId>johnzon-jsonb</artifactId>
-      <version>1.2.5</version>
+      <version>1.2.9</version>
+      <exclusions>
+        <exclusion>
+          <artifactId>*</artifactId>
+          <groupId>*</groupId>
+        </exclusion>
+      </exclusions>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.johnzon</groupId>
+      <artifactId>johnzon-jsonp-strict</artifactId>
+      <version>1.2.9</version>
       <exclusions>
         <exclusion>
           <artifactId>*</artifactId>
@@ -752,7 +774,7 @@
     <dependency>
       <groupId>org.apache.johnzon</groupId>
       <artifactId>johnzon-mapper</artifactId>
-      <version>1.2.5</version>
+      <version>1.2.9</version>
       <exclusions>
         <exclusion>
           <artifactId>*</artifactId>
@@ -763,7 +785,7 @@
     <dependency>
       <groupId>org.apache.myfaces.core</groupId>
       <artifactId>myfaces-api</artifactId>
-      <version>2.3.6</version>
+      <version>2.3.7</version>
       <exclusions>
         <exclusion>
           <artifactId>*</artifactId>
@@ -774,7 +796,7 @@
     <dependency>
       <groupId>org.apache.myfaces.core</groupId>
       <artifactId>myfaces-impl</artifactId>
-      <version>2.3.6</version>
+      <version>2.3.7</version>
       <exclusions>
         <exclusion>
           <artifactId>*</artifactId>
@@ -796,7 +818,7 @@
     <dependency>
       <groupId>org.apache.openejb.shade</groupId>
       <artifactId>quartz-openejb-shade</artifactId>
-      <version>2.2.1</version>
+      <version>2.2.4</version>
       <exclusions>
         <exclusion>
           <artifactId>*</artifactId>
@@ -807,7 +829,7 @@
     <dependency>
       <groupId>org.apache.openjpa</groupId>
       <artifactId>openjpa</artifactId>
-      <version>3.1.0</version>
+      <version>3.1.2</version>
       <exclusions>
         <exclusion>
           <artifactId>*</artifactId>
@@ -915,39 +937,6 @@
       </exclusions>
     </dependency>
     <dependency>
-      <groupId>org.apache.taglibs</groupId>
-      <artifactId>taglibs-standard-impl</artifactId>
-      <version>1.2.5</version>
-      <exclusions>
-        <exclusion>
-          <artifactId>*</artifactId>
-          <groupId>*</groupId>
-        </exclusion>
-      </exclusions>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.taglibs</groupId>
-      <artifactId>taglibs-standard-jstlel</artifactId>
-      <version>1.2.5</version>
-      <exclusions>
-        <exclusion>
-          <artifactId>*</artifactId>
-          <groupId>*</groupId>
-        </exclusion>
-      </exclusions>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.taglibs</groupId>
-      <artifactId>taglibs-standard-spec</artifactId>
-      <version>1.2.5</version>
-      <exclusions>
-        <exclusion>
-          <artifactId>*</artifactId>
-          <groupId>*</groupId>
-        </exclusion>
-      </exclusions>
-    </dependency>
-    <dependency>
       <groupId>org.apache.tomcat</groupId>
       <artifactId>tomcat-api</artifactId>
       <version>${tomcat.version}</version>
@@ -1170,7 +1159,7 @@
     <dependency>
       <groupId>org.apache.tomee</groupId>
       <artifactId>javaee-api</artifactId>
-      <version>8.0-4</version>
+      <version>8.0-5</version>
       <exclusions>
         <exclusion>
           <artifactId>*</artifactId>
@@ -1400,6 +1389,17 @@
     </dependency>
     <dependency>
       <groupId>org.apache.tomee</groupId>
+      <artifactId>taglibs-shade</artifactId>
+      <version>8.0.7-SNAPSHOT</version>
+      <exclusions>
+        <exclusion>
+          <artifactId>*</artifactId>
+          <groupId>*</groupId>
+        </exclusion>
+      </exclusions>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.tomee</groupId>
       <artifactId>tomee-catalina</artifactId>
       <version>${project.version}</version>
       <exclusions>
@@ -1620,6 +1620,17 @@
     </dependency>
     <dependency>
       <groupId>org.apache.xbean</groupId>
+      <artifactId>xbean-asm8-shaded</artifactId>
+      <version>4.17</version>
+      <exclusions>
+        <exclusion>
+          <artifactId>*</artifactId>
+          <groupId>*</groupId>
+        </exclusion>
+      </exclusions>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.xbean</groupId>
       <artifactId>xbean-bundleutils</artifactId>
       <version>4.14</version>
       <exclusions>
@@ -2092,9 +2103,20 @@
       </exclusions>
     </dependency>
     <dependency>
+      <groupId>org.tomitribe.quartz</groupId>
+      <artifactId>quartz</artifactId>
+      <version>2.2.4</version>
+      <exclusions>
+        <exclusion>
+          <artifactId>*</artifactId>
+          <groupId>*</groupId>
+        </exclusion>
+      </exclusions>
+    </dependency>
+    <dependency>
       <groupId>org.yaml</groupId>
       <artifactId>snakeyaml</artifactId>
-      <version>1.24</version>
+      <version>1.27</version>
       <exclusions>
         <exclusion>
           <artifactId>*</artifactId>
diff --git a/boms/tomee-microprofile/src/main/resources/tomee/conf/system.properties b/boms/tomee-microprofile/src/main/resources/tomee/conf/system.properties
index cdf5327..71c4983 100644
--- a/boms/tomee-microprofile/src/main/resources/tomee/conf/system.properties
+++ b/boms/tomee-microprofile/src/main/resources/tomee/conf/system.properties
@@ -1,3 +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.
+
 # all this properties are added at JVM system properties at startup
 # here some default Apache TomEE system properties
 # for more information please see http://tomee.apache.org/properties-listing.html
diff --git a/boms/tomee-microprofile/src/main/resources/tomee/conf/tomee.xml b/boms/tomee-microprofile/src/main/resources/tomee/conf/tomee.xml
index 4f25bb2..737643f 100644
--- a/boms/tomee-microprofile/src/main/resources/tomee/conf/tomee.xml
+++ b/boms/tomee-microprofile/src/main/resources/tomee/conf/tomee.xml
@@ -1,4 +1,20 @@
 <?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.
+-->
 <tomee>
   <!-- see http://tomee.apache.org/containers-and-resources.html -->
 
diff --git a/boms/tomee-plume/pom.xml b/boms/tomee-plume/pom.xml
index 98ce6ee..03b35ff 100644
--- a/boms/tomee-plume/pom.xml
+++ b/boms/tomee-plume/pom.xml
@@ -31,7 +31,7 @@
   <parent>
     <groupId>org.apache.tomee.bom</groupId>
     <artifactId>boms</artifactId>
-    <version>8.0.6-SNAPSHOT</version>
+    <version>8.0.7-SNAPSHOT</version>
   </parent>
 
   <modelVersion>4.0.0</modelVersion>
@@ -43,12 +43,12 @@
     <dependency>
       <groupId>org.apache.tomee</groupId>
       <artifactId>tomee-bootstrap</artifactId>
-      <version>${project.version}</version>
+      <version>8.0.7-SNAPSHOT</version>
     </dependency>
     <dependency>
       <groupId>com.fasterxml.jackson.core</groupId>
       <artifactId>jackson-annotations</artifactId>
-      <version>2.10.0</version>
+      <version>2.12.0-rc1</version>
       <exclusions>
         <exclusion>
           <artifactId>*</artifactId>
@@ -59,7 +59,7 @@
     <dependency>
       <groupId>com.fasterxml.jackson.core</groupId>
       <artifactId>jackson-core</artifactId>
-      <version>2.10.0</version>
+      <version>2.12.0-rc1</version>
       <exclusions>
         <exclusion>
           <artifactId>*</artifactId>
@@ -70,7 +70,7 @@
     <dependency>
       <groupId>com.fasterxml.jackson.core</groupId>
       <artifactId>jackson-databind</artifactId>
-      <version>2.10.0</version>
+      <version>2.12.0-rc1</version>
       <exclusions>
         <exclusion>
           <artifactId>*</artifactId>
@@ -81,7 +81,7 @@
     <dependency>
       <groupId>com.fasterxml.jackson.dataformat</groupId>
       <artifactId>jackson-dataformat-yaml</artifactId>
-      <version>2.10.0</version>
+      <version>2.12.0-rc1</version>
       <exclusions>
         <exclusion>
           <artifactId>*</artifactId>
@@ -169,7 +169,7 @@
     <dependency>
       <groupId>commons-codec</groupId>
       <artifactId>commons-codec</artifactId>
-      <version>1.14</version>
+      <version>1.15</version>
       <exclusions>
         <exclusion>
           <artifactId>*</artifactId>
@@ -290,7 +290,7 @@
     <dependency>
       <groupId>org.apache.activemq</groupId>
       <artifactId>activemq-broker</artifactId>
-      <version>5.15.12</version>
+      <version>5.16.0</version>
       <exclusions>
         <exclusion>
           <artifactId>*</artifactId>
@@ -301,7 +301,7 @@
     <dependency>
       <groupId>org.apache.activemq</groupId>
       <artifactId>activemq-client</artifactId>
-      <version>5.15.12</version>
+      <version>5.16.0</version>
       <exclusions>
         <exclusion>
           <artifactId>*</artifactId>
@@ -312,7 +312,7 @@
     <dependency>
       <groupId>org.apache.activemq</groupId>
       <artifactId>activemq-jdbc-store</artifactId>
-      <version>5.15.12</version>
+      <version>5.16.0</version>
       <exclusions>
         <exclusion>
           <artifactId>*</artifactId>
@@ -323,7 +323,7 @@
     <dependency>
       <groupId>org.apache.activemq</groupId>
       <artifactId>activemq-kahadb-store</artifactId>
-      <version>5.15.12</version>
+      <version>5.16.0</version>
       <exclusions>
         <exclusion>
           <artifactId>*</artifactId>
@@ -334,7 +334,7 @@
     <dependency>
       <groupId>org.apache.activemq</groupId>
       <artifactId>activemq-openwire-legacy</artifactId>
-      <version>5.15.12</version>
+      <version>5.16.0</version>
       <exclusions>
         <exclusion>
           <artifactId>*</artifactId>
@@ -345,7 +345,7 @@
     <dependency>
       <groupId>org.apache.activemq</groupId>
       <artifactId>activemq-ra</artifactId>
-      <version>5.15.12</version>
+      <version>5.16.0</version>
       <exclusions>
         <exclusion>
           <artifactId>*</artifactId>
@@ -356,7 +356,7 @@
     <dependency>
       <groupId>org.apache.bval</groupId>
       <artifactId>bval-jsr</artifactId>
-      <version>2.0.3</version>
+      <version>2.0.5</version>
       <exclusions>
         <exclusion>
           <artifactId>*</artifactId>
@@ -367,7 +367,7 @@
     <dependency>
       <groupId>org.apache.commons</groupId>
       <artifactId>commons-collections4</artifactId>
-      <version>4.3</version>
+      <version>4.4</version>
       <exclusions>
         <exclusion>
           <artifactId>*</artifactId>
@@ -389,7 +389,7 @@
     <dependency>
       <groupId>org.apache.commons</groupId>
       <artifactId>commons-lang3</artifactId>
-      <version>3.8.1</version>
+      <version>3.11</version>
       <exclusions>
         <exclusion>
           <artifactId>*</artifactId>
@@ -411,7 +411,7 @@
     <dependency>
       <groupId>org.apache.cxf</groupId>
       <artifactId>cxf-core</artifactId>
-      <version>3.3.7</version>
+      <version>3.3.8</version>
       <exclusions>
         <exclusion>
           <artifactId>*</artifactId>
@@ -422,7 +422,7 @@
     <dependency>
       <groupId>org.apache.cxf</groupId>
       <artifactId>cxf-rt-bindings-soap</artifactId>
-      <version>3.3.7</version>
+      <version>3.3.8</version>
       <exclusions>
         <exclusion>
           <artifactId>*</artifactId>
@@ -433,7 +433,7 @@
     <dependency>
       <groupId>org.apache.cxf</groupId>
       <artifactId>cxf-rt-bindings-xml</artifactId>
-      <version>3.3.7</version>
+      <version>3.3.8</version>
       <exclusions>
         <exclusion>
           <artifactId>*</artifactId>
@@ -444,7 +444,7 @@
     <dependency>
       <groupId>org.apache.cxf</groupId>
       <artifactId>cxf-rt-databinding-jaxb</artifactId>
-      <version>3.3.7</version>
+      <version>3.3.8</version>
       <exclusions>
         <exclusion>
           <artifactId>*</artifactId>
@@ -455,7 +455,7 @@
     <dependency>
       <groupId>org.apache.cxf</groupId>
       <artifactId>cxf-rt-frontend-jaxrs</artifactId>
-      <version>3.3.7</version>
+      <version>3.3.8</version>
       <exclusions>
         <exclusion>
           <artifactId>*</artifactId>
@@ -466,7 +466,7 @@
     <dependency>
       <groupId>org.apache.cxf</groupId>
       <artifactId>cxf-rt-frontend-jaxws</artifactId>
-      <version>3.3.7</version>
+      <version>3.3.8</version>
       <exclusions>
         <exclusion>
           <artifactId>*</artifactId>
@@ -477,7 +477,7 @@
     <dependency>
       <groupId>org.apache.cxf</groupId>
       <artifactId>cxf-rt-frontend-simple</artifactId>
-      <version>3.3.7</version>
+      <version>3.3.8</version>
       <exclusions>
         <exclusion>
           <artifactId>*</artifactId>
@@ -488,7 +488,7 @@
     <dependency>
       <groupId>org.apache.cxf</groupId>
       <artifactId>cxf-rt-management</artifactId>
-      <version>3.3.7</version>
+      <version>3.3.8</version>
       <exclusions>
         <exclusion>
           <artifactId>*</artifactId>
@@ -499,7 +499,7 @@
     <dependency>
       <groupId>org.apache.cxf</groupId>
       <artifactId>cxf-rt-rs-client</artifactId>
-      <version>3.3.7</version>
+      <version>3.3.8</version>
       <exclusions>
         <exclusion>
           <artifactId>*</artifactId>
@@ -510,7 +510,7 @@
     <dependency>
       <groupId>org.apache.cxf</groupId>
       <artifactId>cxf-rt-rs-extension-providers</artifactId>
-      <version>3.3.7</version>
+      <version>3.3.8</version>
       <exclusions>
         <exclusion>
           <artifactId>*</artifactId>
@@ -521,7 +521,7 @@
     <dependency>
       <groupId>org.apache.cxf</groupId>
       <artifactId>cxf-rt-rs-extension-search</artifactId>
-      <version>3.3.7</version>
+      <version>3.3.8</version>
       <exclusions>
         <exclusion>
           <artifactId>*</artifactId>
@@ -532,7 +532,7 @@
     <dependency>
       <groupId>org.apache.cxf</groupId>
       <artifactId>cxf-rt-rs-json-basic</artifactId>
-      <version>3.3.7</version>
+      <version>3.3.8</version>
       <exclusions>
         <exclusion>
           <artifactId>*</artifactId>
@@ -543,7 +543,7 @@
     <dependency>
       <groupId>org.apache.cxf</groupId>
       <artifactId>cxf-rt-rs-mp-client</artifactId>
-      <version>3.3.7</version>
+      <version>3.3.8</version>
       <exclusions>
         <exclusion>
           <artifactId>*</artifactId>
@@ -554,7 +554,7 @@
     <dependency>
       <groupId>org.apache.cxf</groupId>
       <artifactId>cxf-rt-rs-security-cors</artifactId>
-      <version>3.3.7</version>
+      <version>3.3.8</version>
       <exclusions>
         <exclusion>
           <artifactId>*</artifactId>
@@ -565,7 +565,7 @@
     <dependency>
       <groupId>org.apache.cxf</groupId>
       <artifactId>cxf-rt-rs-security-jose</artifactId>
-      <version>3.3.7</version>
+      <version>3.3.8</version>
       <exclusions>
         <exclusion>
           <artifactId>*</artifactId>
@@ -576,7 +576,7 @@
     <dependency>
       <groupId>org.apache.cxf</groupId>
       <artifactId>cxf-rt-rs-security-jose-jaxrs</artifactId>
-      <version>3.3.7</version>
+      <version>3.3.8</version>
       <exclusions>
         <exclusion>
           <artifactId>*</artifactId>
@@ -587,7 +587,7 @@
     <dependency>
       <groupId>org.apache.cxf</groupId>
       <artifactId>cxf-rt-rs-security-oauth2</artifactId>
-      <version>3.3.7</version>
+      <version>3.3.8</version>
       <exclusions>
         <exclusion>
           <artifactId>*</artifactId>
@@ -598,7 +598,18 @@
     <dependency>
       <groupId>org.apache.cxf</groupId>
       <artifactId>cxf-rt-rs-service-description</artifactId>
-      <version>3.3.7</version>
+      <version>3.3.8</version>
+      <exclusions>
+        <exclusion>
+          <artifactId>*</artifactId>
+          <groupId>*</groupId>
+        </exclusion>
+      </exclusions>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.cxf</groupId>
+      <artifactId>cxf-rt-rs-sse</artifactId>
+      <version>3.3.8</version>
       <exclusions>
         <exclusion>
           <artifactId>*</artifactId>
@@ -609,7 +620,7 @@
     <dependency>
       <groupId>org.apache.cxf</groupId>
       <artifactId>cxf-rt-security</artifactId>
-      <version>3.3.7</version>
+      <version>3.3.8</version>
       <exclusions>
         <exclusion>
           <artifactId>*</artifactId>
@@ -620,7 +631,7 @@
     <dependency>
       <groupId>org.apache.cxf</groupId>
       <artifactId>cxf-rt-security-saml</artifactId>
-      <version>3.3.7</version>
+      <version>3.3.8</version>
       <exclusions>
         <exclusion>
           <artifactId>*</artifactId>
@@ -631,7 +642,7 @@
     <dependency>
       <groupId>org.apache.cxf</groupId>
       <artifactId>cxf-rt-transports-http</artifactId>
-      <version>3.3.7</version>
+      <version>3.3.8</version>
       <exclusions>
         <exclusion>
           <artifactId>*</artifactId>
@@ -642,7 +653,7 @@
     <dependency>
       <groupId>org.apache.cxf</groupId>
       <artifactId>cxf-rt-ws-addr</artifactId>
-      <version>3.3.7</version>
+      <version>3.3.8</version>
       <exclusions>
         <exclusion>
           <artifactId>*</artifactId>
@@ -653,7 +664,7 @@
     <dependency>
       <groupId>org.apache.cxf</groupId>
       <artifactId>cxf-rt-ws-policy</artifactId>
-      <version>3.3.7</version>
+      <version>3.3.8</version>
       <exclusions>
         <exclusion>
           <artifactId>*</artifactId>
@@ -664,7 +675,7 @@
     <dependency>
       <groupId>org.apache.cxf</groupId>
       <artifactId>cxf-rt-ws-security</artifactId>
-      <version>3.3.7</version>
+      <version>3.3.8</version>
       <exclusions>
         <exclusion>
           <artifactId>*</artifactId>
@@ -675,7 +686,7 @@
     <dependency>
       <groupId>org.apache.cxf</groupId>
       <artifactId>cxf-rt-wsdl</artifactId>
-      <version>3.3.7</version>
+      <version>3.3.8</version>
       <exclusions>
         <exclusion>
           <artifactId>*</artifactId>
@@ -718,8 +729,8 @@
     </dependency>
     <dependency>
       <groupId>org.apache.geronimo.javamail</groupId>
-      <artifactId>geronimo-javamail_1.4_mail</artifactId>
-      <version>1.9.0-alpha-2</version>
+      <artifactId>geronimo-javamail_1.6_mail</artifactId>
+      <version>1.0.0</version>
       <exclusions>
         <exclusion>
           <artifactId>*</artifactId>
@@ -807,7 +818,7 @@
     <dependency>
       <groupId>org.apache.johnzon</groupId>
       <artifactId>johnzon-core</artifactId>
-      <version>1.2.5</version>
+      <version>1.2.9</version>
       <exclusions>
         <exclusion>
           <artifactId>*</artifactId>
@@ -818,7 +829,7 @@
     <dependency>
       <groupId>org.apache.johnzon</groupId>
       <artifactId>johnzon-jaxrs</artifactId>
-      <version>1.2.5</version>
+      <version>1.2.9</version>
       <exclusions>
         <exclusion>
           <artifactId>*</artifactId>
@@ -829,7 +840,18 @@
     <dependency>
       <groupId>org.apache.johnzon</groupId>
       <artifactId>johnzon-jsonb</artifactId>
-      <version>1.2.5</version>
+      <version>1.2.9</version>
+      <exclusions>
+        <exclusion>
+          <artifactId>*</artifactId>
+          <groupId>*</groupId>
+        </exclusion>
+      </exclusions>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.johnzon</groupId>
+      <artifactId>johnzon-jsonp-strict</artifactId>
+      <version>1.2.9</version>
       <exclusions>
         <exclusion>
           <artifactId>*</artifactId>
@@ -840,7 +862,7 @@
     <dependency>
       <groupId>org.apache.johnzon</groupId>
       <artifactId>johnzon-mapper</artifactId>
-      <version>1.2.5</version>
+      <version>1.2.9</version>
       <exclusions>
         <exclusion>
           <artifactId>*</artifactId>
@@ -862,7 +884,7 @@
     <dependency>
       <groupId>org.apache.openejb.shade</groupId>
       <artifactId>quartz-openejb-shade</artifactId>
-      <version>2.2.1</version>
+      <version>2.2.4</version>
       <exclusions>
         <exclusion>
           <artifactId>*</artifactId>
@@ -873,7 +895,7 @@
     <dependency>
       <groupId>org.apache.openjpa</groupId>
       <artifactId>openjpa</artifactId>
-      <version>3.1.0</version>
+      <version>3.1.2</version>
       <exclusions>
         <exclusion>
           <artifactId>*</artifactId>
@@ -981,39 +1003,6 @@
       </exclusions>
     </dependency>
     <dependency>
-      <groupId>org.apache.taglibs</groupId>
-      <artifactId>taglibs-standard-impl</artifactId>
-      <version>1.2.5</version>
-      <exclusions>
-        <exclusion>
-          <artifactId>*</artifactId>
-          <groupId>*</groupId>
-        </exclusion>
-      </exclusions>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.taglibs</groupId>
-      <artifactId>taglibs-standard-jstlel</artifactId>
-      <version>1.2.5</version>
-      <exclusions>
-        <exclusion>
-          <artifactId>*</artifactId>
-          <groupId>*</groupId>
-        </exclusion>
-      </exclusions>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.taglibs</groupId>
-      <artifactId>taglibs-standard-spec</artifactId>
-      <version>1.2.5</version>
-      <exclusions>
-        <exclusion>
-          <artifactId>*</artifactId>
-          <groupId>*</groupId>
-        </exclusion>
-      </exclusions>
-    </dependency>
-    <dependency>
       <groupId>org.apache.tomcat</groupId>
       <artifactId>tomcat-api</artifactId>
       <version>${tomcat.version}</version>
@@ -1236,7 +1225,7 @@
     <dependency>
       <groupId>org.apache.tomee</groupId>
       <artifactId>javaee-api</artifactId>
-      <version>8.0-4</version>
+      <version>8.0-5</version>
       <exclusions>
         <exclusion>
           <artifactId>*</artifactId>
@@ -1477,6 +1466,17 @@
     </dependency>
     <dependency>
       <groupId>org.apache.tomee</groupId>
+      <artifactId>taglibs-shade</artifactId>
+      <version>8.0.7-SNAPSHOT</version>
+      <exclusions>
+        <exclusion>
+          <artifactId>*</artifactId>
+          <groupId>*</groupId>
+        </exclusion>
+      </exclusions>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.tomee</groupId>
       <artifactId>tomee-catalina</artifactId>
       <version>${project.version}</version>
       <exclusions>
@@ -1686,6 +1686,17 @@
     </dependency>
     <dependency>
       <groupId>org.apache.xbean</groupId>
+      <artifactId>xbean-asm8-shaded</artifactId>
+      <version>4.17</version>
+      <exclusions>
+        <exclusion>
+          <artifactId>*</artifactId>
+          <groupId>*</groupId>
+        </exclusion>
+      </exclusions>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.xbean</groupId>
       <artifactId>xbean-bundleutils</artifactId>
       <version>4.14</version>
       <exclusions>
@@ -1896,7 +1907,7 @@
     <dependency>
       <groupId>org.eclipse.persistence</groupId>
       <artifactId>eclipselink</artifactId>
-      <version>2.7.4</version>
+      <version>2.7.7</version>
       <exclusions>
         <exclusion>
           <artifactId>*</artifactId>
@@ -2202,9 +2213,20 @@
       </exclusions>
     </dependency>
     <dependency>
+      <groupId>org.tomitribe.quartz</groupId>
+      <artifactId>quartz</artifactId>
+      <version>2.2.4</version>
+      <exclusions>
+        <exclusion>
+          <artifactId>*</artifactId>
+          <groupId>*</groupId>
+        </exclusion>
+      </exclusions>
+    </dependency>
+    <dependency>
       <groupId>org.yaml</groupId>
       <artifactId>snakeyaml</artifactId>
-      <version>1.24</version>
+      <version>1.27</version>
       <exclusions>
         <exclusion>
           <artifactId>*</artifactId>
diff --git a/boms/tomee-plume/src/main/resources/tomee/conf/system.properties b/boms/tomee-plume/src/main/resources/tomee/conf/system.properties
index 55daeaa..ab0fdfd 100644
--- a/boms/tomee-plume/src/main/resources/tomee/conf/system.properties
+++ b/boms/tomee-plume/src/main/resources/tomee/conf/system.properties
@@ -1,3 +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.
+
 # all this properties are added at JVM system properties at startup
 # here some default Apache TomEE system properties
 # for more information please see http://tomee.apache.org/properties-listing.html
diff --git a/boms/tomee-plume/src/main/resources/tomee/conf/tomee.xml b/boms/tomee-plume/src/main/resources/tomee/conf/tomee.xml
index 4f25bb2..737643f 100644
--- a/boms/tomee-plume/src/main/resources/tomee/conf/tomee.xml
+++ b/boms/tomee-plume/src/main/resources/tomee/conf/tomee.xml
@@ -1,4 +1,20 @@
 <?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.
+-->
 <tomee>
   <!-- see http://tomee.apache.org/containers-and-resources.html -->
 
diff --git a/boms/tomee-plus/pom.xml b/boms/tomee-plus/pom.xml
index 4435575..028c3d4 100644
--- a/boms/tomee-plus/pom.xml
+++ b/boms/tomee-plus/pom.xml
@@ -31,7 +31,7 @@
   <parent>
     <groupId>org.apache.tomee.bom</groupId>
     <artifactId>boms</artifactId>
-    <version>8.0.6-SNAPSHOT</version>
+    <version>8.0.7-SNAPSHOT</version>
   </parent>
 
   <modelVersion>4.0.0</modelVersion>
@@ -43,12 +43,12 @@
     <dependency>
       <groupId>org.apache.tomee</groupId>
       <artifactId>tomee-bootstrap</artifactId>
-      <version>${project.version}</version>
+      <version>8.0.7-SNAPSHOT</version>
     </dependency>
     <dependency>
       <groupId>com.fasterxml.jackson.core</groupId>
       <artifactId>jackson-annotations</artifactId>
-      <version>2.10.0</version>
+      <version>2.12.0-rc1</version>
       <exclusions>
         <exclusion>
           <artifactId>*</artifactId>
@@ -59,7 +59,7 @@
     <dependency>
       <groupId>com.fasterxml.jackson.core</groupId>
       <artifactId>jackson-core</artifactId>
-      <version>2.10.0</version>
+      <version>2.12.0-rc1</version>
       <exclusions>
         <exclusion>
           <artifactId>*</artifactId>
@@ -70,7 +70,7 @@
     <dependency>
       <groupId>com.fasterxml.jackson.core</groupId>
       <artifactId>jackson-databind</artifactId>
-      <version>2.10.0</version>
+      <version>2.12.0-rc1</version>
       <exclusions>
         <exclusion>
           <artifactId>*</artifactId>
@@ -81,7 +81,7 @@
     <dependency>
       <groupId>com.fasterxml.jackson.dataformat</groupId>
       <artifactId>jackson-dataformat-yaml</artifactId>
-      <version>2.10.0</version>
+      <version>2.12.0-rc1</version>
       <exclusions>
         <exclusion>
           <artifactId>*</artifactId>
@@ -169,7 +169,7 @@
     <dependency>
       <groupId>commons-codec</groupId>
       <artifactId>commons-codec</artifactId>
-      <version>1.14</version>
+      <version>1.15</version>
       <exclusions>
         <exclusion>
           <artifactId>*</artifactId>
@@ -290,7 +290,7 @@
     <dependency>
       <groupId>org.apache.activemq</groupId>
       <artifactId>activemq-broker</artifactId>
-      <version>5.15.12</version>
+      <version>5.16.0</version>
       <exclusions>
         <exclusion>
           <artifactId>*</artifactId>
@@ -301,7 +301,7 @@
     <dependency>
       <groupId>org.apache.activemq</groupId>
       <artifactId>activemq-client</artifactId>
-      <version>5.15.12</version>
+      <version>5.16.0</version>
       <exclusions>
         <exclusion>
           <artifactId>*</artifactId>
@@ -312,7 +312,7 @@
     <dependency>
       <groupId>org.apache.activemq</groupId>
       <artifactId>activemq-jdbc-store</artifactId>
-      <version>5.15.12</version>
+      <version>5.16.0</version>
       <exclusions>
         <exclusion>
           <artifactId>*</artifactId>
@@ -323,7 +323,7 @@
     <dependency>
       <groupId>org.apache.activemq</groupId>
       <artifactId>activemq-kahadb-store</artifactId>
-      <version>5.15.12</version>
+      <version>5.16.0</version>
       <exclusions>
         <exclusion>
           <artifactId>*</artifactId>
@@ -334,7 +334,7 @@
     <dependency>
       <groupId>org.apache.activemq</groupId>
       <artifactId>activemq-openwire-legacy</artifactId>
-      <version>5.15.12</version>
+      <version>5.16.0</version>
       <exclusions>
         <exclusion>
           <artifactId>*</artifactId>
@@ -345,7 +345,7 @@
     <dependency>
       <groupId>org.apache.activemq</groupId>
       <artifactId>activemq-ra</artifactId>
-      <version>5.15.12</version>
+      <version>5.16.0</version>
       <exclusions>
         <exclusion>
           <artifactId>*</artifactId>
@@ -367,7 +367,7 @@
     <dependency>
       <groupId>org.apache.bval</groupId>
       <artifactId>bval-jsr</artifactId>
-      <version>2.0.3</version>
+      <version>2.0.5</version>
       <exclusions>
         <exclusion>
           <artifactId>*</artifactId>
@@ -378,7 +378,7 @@
     <dependency>
       <groupId>org.apache.commons</groupId>
       <artifactId>commons-collections4</artifactId>
-      <version>4.3</version>
+      <version>4.4</version>
       <exclusions>
         <exclusion>
           <artifactId>*</artifactId>
@@ -422,7 +422,7 @@
     <dependency>
       <groupId>org.apache.commons</groupId>
       <artifactId>commons-lang3</artifactId>
-      <version>3.8.1</version>
+      <version>3.11</version>
       <exclusions>
         <exclusion>
           <artifactId>*</artifactId>
@@ -444,7 +444,7 @@
     <dependency>
       <groupId>org.apache.cxf</groupId>
       <artifactId>cxf-core</artifactId>
-      <version>3.3.7</version>
+      <version>3.3.8</version>
       <exclusions>
         <exclusion>
           <artifactId>*</artifactId>
@@ -455,7 +455,7 @@
     <dependency>
       <groupId>org.apache.cxf</groupId>
       <artifactId>cxf-rt-bindings-soap</artifactId>
-      <version>3.3.7</version>
+      <version>3.3.8</version>
       <exclusions>
         <exclusion>
           <artifactId>*</artifactId>
@@ -466,7 +466,7 @@
     <dependency>
       <groupId>org.apache.cxf</groupId>
       <artifactId>cxf-rt-bindings-xml</artifactId>
-      <version>3.3.7</version>
+      <version>3.3.8</version>
       <exclusions>
         <exclusion>
           <artifactId>*</artifactId>
@@ -477,7 +477,7 @@
     <dependency>
       <groupId>org.apache.cxf</groupId>
       <artifactId>cxf-rt-databinding-jaxb</artifactId>
-      <version>3.3.7</version>
+      <version>3.3.8</version>
       <exclusions>
         <exclusion>
           <artifactId>*</artifactId>
@@ -488,7 +488,7 @@
     <dependency>
       <groupId>org.apache.cxf</groupId>
       <artifactId>cxf-rt-frontend-jaxrs</artifactId>
-      <version>3.3.7</version>
+      <version>3.3.8</version>
       <exclusions>
         <exclusion>
           <artifactId>*</artifactId>
@@ -499,7 +499,7 @@
     <dependency>
       <groupId>org.apache.cxf</groupId>
       <artifactId>cxf-rt-frontend-jaxws</artifactId>
-      <version>3.3.7</version>
+      <version>3.3.8</version>
       <exclusions>
         <exclusion>
           <artifactId>*</artifactId>
@@ -510,7 +510,7 @@
     <dependency>
       <groupId>org.apache.cxf</groupId>
       <artifactId>cxf-rt-frontend-simple</artifactId>
-      <version>3.3.7</version>
+      <version>3.3.8</version>
       <exclusions>
         <exclusion>
           <artifactId>*</artifactId>
@@ -521,7 +521,7 @@
     <dependency>
       <groupId>org.apache.cxf</groupId>
       <artifactId>cxf-rt-management</artifactId>
-      <version>3.3.7</version>
+      <version>3.3.8</version>
       <exclusions>
         <exclusion>
           <artifactId>*</artifactId>
@@ -532,7 +532,7 @@
     <dependency>
       <groupId>org.apache.cxf</groupId>
       <artifactId>cxf-rt-rs-client</artifactId>
-      <version>3.3.7</version>
+      <version>3.3.8</version>
       <exclusions>
         <exclusion>
           <artifactId>*</artifactId>
@@ -543,7 +543,7 @@
     <dependency>
       <groupId>org.apache.cxf</groupId>
       <artifactId>cxf-rt-rs-extension-providers</artifactId>
-      <version>3.3.7</version>
+      <version>3.3.8</version>
       <exclusions>
         <exclusion>
           <artifactId>*</artifactId>
@@ -554,7 +554,7 @@
     <dependency>
       <groupId>org.apache.cxf</groupId>
       <artifactId>cxf-rt-rs-extension-search</artifactId>
-      <version>3.3.7</version>
+      <version>3.3.8</version>
       <exclusions>
         <exclusion>
           <artifactId>*</artifactId>
@@ -565,7 +565,7 @@
     <dependency>
       <groupId>org.apache.cxf</groupId>
       <artifactId>cxf-rt-rs-json-basic</artifactId>
-      <version>3.3.7</version>
+      <version>3.3.8</version>
       <exclusions>
         <exclusion>
           <artifactId>*</artifactId>
@@ -576,7 +576,7 @@
     <dependency>
       <groupId>org.apache.cxf</groupId>
       <artifactId>cxf-rt-rs-mp-client</artifactId>
-      <version>3.3.7</version>
+      <version>3.3.8</version>
       <exclusions>
         <exclusion>
           <artifactId>*</artifactId>
@@ -587,7 +587,7 @@
     <dependency>
       <groupId>org.apache.cxf</groupId>
       <artifactId>cxf-rt-rs-security-cors</artifactId>
-      <version>3.3.7</version>
+      <version>3.3.8</version>
       <exclusions>
         <exclusion>
           <artifactId>*</artifactId>
@@ -598,7 +598,7 @@
     <dependency>
       <groupId>org.apache.cxf</groupId>
       <artifactId>cxf-rt-rs-security-jose</artifactId>
-      <version>3.3.7</version>
+      <version>3.3.8</version>
       <exclusions>
         <exclusion>
           <artifactId>*</artifactId>
@@ -609,7 +609,7 @@
     <dependency>
       <groupId>org.apache.cxf</groupId>
       <artifactId>cxf-rt-rs-security-jose-jaxrs</artifactId>
-      <version>3.3.7</version>
+      <version>3.3.8</version>
       <exclusions>
         <exclusion>
           <artifactId>*</artifactId>
@@ -620,7 +620,7 @@
     <dependency>
       <groupId>org.apache.cxf</groupId>
       <artifactId>cxf-rt-rs-security-oauth2</artifactId>
-      <version>3.3.7</version>
+      <version>3.3.8</version>
       <exclusions>
         <exclusion>
           <artifactId>*</artifactId>
@@ -631,7 +631,18 @@
     <dependency>
       <groupId>org.apache.cxf</groupId>
       <artifactId>cxf-rt-rs-service-description</artifactId>
-      <version>3.3.7</version>
+      <version>3.3.8</version>
+      <exclusions>
+        <exclusion>
+          <artifactId>*</artifactId>
+          <groupId>*</groupId>
+        </exclusion>
+      </exclusions>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.cxf</groupId>
+      <artifactId>cxf-rt-rs-sse</artifactId>
+      <version>3.3.8</version>
       <exclusions>
         <exclusion>
           <artifactId>*</artifactId>
@@ -642,7 +653,7 @@
     <dependency>
       <groupId>org.apache.cxf</groupId>
       <artifactId>cxf-rt-security</artifactId>
-      <version>3.3.7</version>
+      <version>3.3.8</version>
       <exclusions>
         <exclusion>
           <artifactId>*</artifactId>
@@ -653,7 +664,7 @@
     <dependency>
       <groupId>org.apache.cxf</groupId>
       <artifactId>cxf-rt-security-saml</artifactId>
-      <version>3.3.7</version>
+      <version>3.3.8</version>
       <exclusions>
         <exclusion>
           <artifactId>*</artifactId>
@@ -664,7 +675,7 @@
     <dependency>
       <groupId>org.apache.cxf</groupId>
       <artifactId>cxf-rt-transports-http</artifactId>
-      <version>3.3.7</version>
+      <version>3.3.8</version>
       <exclusions>
         <exclusion>
           <artifactId>*</artifactId>
@@ -675,7 +686,7 @@
     <dependency>
       <groupId>org.apache.cxf</groupId>
       <artifactId>cxf-rt-ws-addr</artifactId>
-      <version>3.3.7</version>
+      <version>3.3.8</version>
       <exclusions>
         <exclusion>
           <artifactId>*</artifactId>
@@ -686,7 +697,7 @@
     <dependency>
       <groupId>org.apache.cxf</groupId>
       <artifactId>cxf-rt-ws-policy</artifactId>
-      <version>3.3.7</version>
+      <version>3.3.8</version>
       <exclusions>
         <exclusion>
           <artifactId>*</artifactId>
@@ -697,7 +708,7 @@
     <dependency>
       <groupId>org.apache.cxf</groupId>
       <artifactId>cxf-rt-ws-security</artifactId>
-      <version>3.3.7</version>
+      <version>3.3.8</version>
       <exclusions>
         <exclusion>
           <artifactId>*</artifactId>
@@ -708,7 +719,7 @@
     <dependency>
       <groupId>org.apache.cxf</groupId>
       <artifactId>cxf-rt-wsdl</artifactId>
-      <version>3.3.7</version>
+      <version>3.3.8</version>
       <exclusions>
         <exclusion>
           <artifactId>*</artifactId>
@@ -751,8 +762,8 @@
     </dependency>
     <dependency>
       <groupId>org.apache.geronimo.javamail</groupId>
-      <artifactId>geronimo-javamail_1.4_mail</artifactId>
-      <version>1.9.0-alpha-2</version>
+      <artifactId>geronimo-javamail_1.6_mail</artifactId>
+      <version>1.0.0</version>
       <exclusions>
         <exclusion>
           <artifactId>*</artifactId>
@@ -840,7 +851,7 @@
     <dependency>
       <groupId>org.apache.johnzon</groupId>
       <artifactId>johnzon-core</artifactId>
-      <version>1.2.5</version>
+      <version>1.2.9</version>
       <exclusions>
         <exclusion>
           <artifactId>*</artifactId>
@@ -851,7 +862,7 @@
     <dependency>
       <groupId>org.apache.johnzon</groupId>
       <artifactId>johnzon-jaxrs</artifactId>
-      <version>1.2.5</version>
+      <version>1.2.9</version>
       <exclusions>
         <exclusion>
           <artifactId>*</artifactId>
@@ -862,7 +873,18 @@
     <dependency>
       <groupId>org.apache.johnzon</groupId>
       <artifactId>johnzon-jsonb</artifactId>
-      <version>1.2.5</version>
+      <version>1.2.9</version>
+      <exclusions>
+        <exclusion>
+          <artifactId>*</artifactId>
+          <groupId>*</groupId>
+        </exclusion>
+      </exclusions>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.johnzon</groupId>
+      <artifactId>johnzon-jsonp-strict</artifactId>
+      <version>1.2.9</version>
       <exclusions>
         <exclusion>
           <artifactId>*</artifactId>
@@ -873,7 +895,7 @@
     <dependency>
       <groupId>org.apache.johnzon</groupId>
       <artifactId>johnzon-mapper</artifactId>
-      <version>1.2.5</version>
+      <version>1.2.9</version>
       <exclusions>
         <exclusion>
           <artifactId>*</artifactId>
@@ -884,7 +906,7 @@
     <dependency>
       <groupId>org.apache.myfaces.core</groupId>
       <artifactId>myfaces-api</artifactId>
-      <version>2.3.6</version>
+      <version>2.3.7</version>
       <exclusions>
         <exclusion>
           <artifactId>*</artifactId>
@@ -895,7 +917,7 @@
     <dependency>
       <groupId>org.apache.myfaces.core</groupId>
       <artifactId>myfaces-impl</artifactId>
-      <version>2.3.6</version>
+      <version>2.3.7</version>
       <exclusions>
         <exclusion>
           <artifactId>*</artifactId>
@@ -917,7 +939,7 @@
     <dependency>
       <groupId>org.apache.openejb.shade</groupId>
       <artifactId>quartz-openejb-shade</artifactId>
-      <version>2.2.1</version>
+      <version>2.2.4</version>
       <exclusions>
         <exclusion>
           <artifactId>*</artifactId>
@@ -928,7 +950,7 @@
     <dependency>
       <groupId>org.apache.openjpa</groupId>
       <artifactId>openjpa</artifactId>
-      <version>3.1.0</version>
+      <version>3.1.2</version>
       <exclusions>
         <exclusion>
           <artifactId>*</artifactId>
@@ -1036,39 +1058,6 @@
       </exclusions>
     </dependency>
     <dependency>
-      <groupId>org.apache.taglibs</groupId>
-      <artifactId>taglibs-standard-impl</artifactId>
-      <version>1.2.5</version>
-      <exclusions>
-        <exclusion>
-          <artifactId>*</artifactId>
-          <groupId>*</groupId>
-        </exclusion>
-      </exclusions>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.taglibs</groupId>
-      <artifactId>taglibs-standard-jstlel</artifactId>
-      <version>1.2.5</version>
-      <exclusions>
-        <exclusion>
-          <artifactId>*</artifactId>
-          <groupId>*</groupId>
-        </exclusion>
-      </exclusions>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.taglibs</groupId>
-      <artifactId>taglibs-standard-spec</artifactId>
-      <version>1.2.5</version>
-      <exclusions>
-        <exclusion>
-          <artifactId>*</artifactId>
-          <groupId>*</groupId>
-        </exclusion>
-      </exclusions>
-    </dependency>
-    <dependency>
       <groupId>org.apache.tomcat</groupId>
       <artifactId>tomcat-api</artifactId>
       <version>${tomcat.version}</version>
@@ -1291,7 +1280,7 @@
     <dependency>
       <groupId>org.apache.tomee</groupId>
       <artifactId>javaee-api</artifactId>
-      <version>8.0-4</version>
+      <version>8.0-5</version>
       <exclusions>
         <exclusion>
           <artifactId>*</artifactId>
@@ -1521,6 +1510,17 @@
     </dependency>
     <dependency>
       <groupId>org.apache.tomee</groupId>
+      <artifactId>taglibs-shade</artifactId>
+      <version>8.0.7-SNAPSHOT</version>
+      <exclusions>
+        <exclusion>
+          <artifactId>*</artifactId>
+          <groupId>*</groupId>
+        </exclusion>
+      </exclusions>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.tomee</groupId>
       <artifactId>tomee-catalina</artifactId>
       <version>${project.version}</version>
       <exclusions>
@@ -1741,6 +1741,17 @@
     </dependency>
     <dependency>
       <groupId>org.apache.xbean</groupId>
+      <artifactId>xbean-asm8-shaded</artifactId>
+      <version>4.17</version>
+      <exclusions>
+        <exclusion>
+          <artifactId>*</artifactId>
+          <groupId>*</groupId>
+        </exclusion>
+      </exclusions>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.xbean</groupId>
       <artifactId>xbean-bundleutils</artifactId>
       <version>4.14</version>
       <exclusions>
@@ -2224,9 +2235,20 @@
       </exclusions>
     </dependency>
     <dependency>
+      <groupId>org.tomitribe.quartz</groupId>
+      <artifactId>quartz</artifactId>
+      <version>2.2.4</version>
+      <exclusions>
+        <exclusion>
+          <artifactId>*</artifactId>
+          <groupId>*</groupId>
+        </exclusion>
+      </exclusions>
+    </dependency>
+    <dependency>
       <groupId>org.yaml</groupId>
       <artifactId>snakeyaml</artifactId>
-      <version>1.24</version>
+      <version>1.27</version>
       <exclusions>
         <exclusion>
           <artifactId>*</artifactId>
diff --git a/boms/tomee-plus/src/main/resources/tomee/conf/system.properties b/boms/tomee-plus/src/main/resources/tomee/conf/system.properties
index 55daeaa..ab0fdfd 100644
--- a/boms/tomee-plus/src/main/resources/tomee/conf/system.properties
+++ b/boms/tomee-plus/src/main/resources/tomee/conf/system.properties
@@ -1,3 +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.
+
 # all this properties are added at JVM system properties at startup
 # here some default Apache TomEE system properties
 # for more information please see http://tomee.apache.org/properties-listing.html
diff --git a/boms/tomee-plus/src/main/resources/tomee/conf/tomee.xml b/boms/tomee-plus/src/main/resources/tomee/conf/tomee.xml
index 4f25bb2..737643f 100644
--- a/boms/tomee-plus/src/main/resources/tomee/conf/tomee.xml
+++ b/boms/tomee-plus/src/main/resources/tomee/conf/tomee.xml
@@ -1,4 +1,20 @@
 <?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.
+-->
 <tomee>
   <!-- see http://tomee.apache.org/containers-and-resources.html -->
 
diff --git a/boms/tomee-webprofile/pom.xml b/boms/tomee-webprofile/pom.xml
index bef02a1..c3606b5 100644
--- a/boms/tomee-webprofile/pom.xml
+++ b/boms/tomee-webprofile/pom.xml
@@ -31,7 +31,7 @@
   <parent>
     <groupId>org.apache.tomee.bom</groupId>
     <artifactId>boms</artifactId>
-    <version>8.0.6-SNAPSHOT</version>
+    <version>8.0.7-SNAPSHOT</version>
   </parent>
 
   <modelVersion>4.0.0</modelVersion>
@@ -43,12 +43,12 @@
     <dependency>
       <groupId>org.apache.tomee</groupId>
       <artifactId>tomee-bootstrap</artifactId>
-      <version>${project.version}</version>
+      <version>8.0.7-SNAPSHOT</version>
     </dependency>
     <dependency>
       <groupId>com.fasterxml.jackson.core</groupId>
       <artifactId>jackson-annotations</artifactId>
-      <version>2.10.0</version>
+      <version>2.12.0-rc1</version>
       <exclusions>
         <exclusion>
           <artifactId>*</artifactId>
@@ -59,7 +59,7 @@
     <dependency>
       <groupId>com.fasterxml.jackson.core</groupId>
       <artifactId>jackson-core</artifactId>
-      <version>2.10.0</version>
+      <version>2.12.0-rc1</version>
       <exclusions>
         <exclusion>
           <artifactId>*</artifactId>
@@ -70,7 +70,7 @@
     <dependency>
       <groupId>com.fasterxml.jackson.core</groupId>
       <artifactId>jackson-databind</artifactId>
-      <version>2.10.0</version>
+      <version>2.12.0-rc1</version>
       <exclusions>
         <exclusion>
           <artifactId>*</artifactId>
@@ -213,7 +213,7 @@
     <dependency>
       <groupId>org.apache.bval</groupId>
       <artifactId>bval-jsr</artifactId>
-      <version>2.0.3</version>
+      <version>2.0.5</version>
       <exclusions>
         <exclusion>
           <artifactId>*</artifactId>
@@ -224,7 +224,7 @@
     <dependency>
       <groupId>org.apache.commons</groupId>
       <artifactId>commons-collections4</artifactId>
-      <version>4.3</version>
+      <version>4.4</version>
       <exclusions>
         <exclusion>
           <artifactId>*</artifactId>
@@ -246,7 +246,7 @@
     <dependency>
       <groupId>org.apache.commons</groupId>
       <artifactId>commons-lang3</artifactId>
-      <version>3.8.1</version>
+      <version>3.11</version>
       <exclusions>
         <exclusion>
           <artifactId>*</artifactId>
@@ -268,7 +268,7 @@
     <dependency>
       <groupId>org.apache.cxf</groupId>
       <artifactId>cxf-core</artifactId>
-      <version>3.3.7</version>
+      <version>3.3.8</version>
       <exclusions>
         <exclusion>
           <artifactId>*</artifactId>
@@ -279,7 +279,7 @@
     <dependency>
       <groupId>org.apache.cxf</groupId>
       <artifactId>cxf-rt-frontend-jaxrs</artifactId>
-      <version>3.3.7</version>
+      <version>3.3.8</version>
       <exclusions>
         <exclusion>
           <artifactId>*</artifactId>
@@ -290,7 +290,7 @@
     <dependency>
       <groupId>org.apache.cxf</groupId>
       <artifactId>cxf-rt-management</artifactId>
-      <version>3.3.7</version>
+      <version>3.3.8</version>
       <exclusions>
         <exclusion>
           <artifactId>*</artifactId>
@@ -301,7 +301,7 @@
     <dependency>
       <groupId>org.apache.cxf</groupId>
       <artifactId>cxf-rt-rs-client</artifactId>
-      <version>3.3.7</version>
+      <version>3.3.8</version>
       <exclusions>
         <exclusion>
           <artifactId>*</artifactId>
@@ -312,7 +312,7 @@
     <dependency>
       <groupId>org.apache.cxf</groupId>
       <artifactId>cxf-rt-rs-extension-providers</artifactId>
-      <version>3.3.7</version>
+      <version>3.3.8</version>
       <exclusions>
         <exclusion>
           <artifactId>*</artifactId>
@@ -323,7 +323,7 @@
     <dependency>
       <groupId>org.apache.cxf</groupId>
       <artifactId>cxf-rt-rs-extension-search</artifactId>
-      <version>3.3.7</version>
+      <version>3.3.8</version>
       <exclusions>
         <exclusion>
           <artifactId>*</artifactId>
@@ -334,7 +334,7 @@
     <dependency>
       <groupId>org.apache.cxf</groupId>
       <artifactId>cxf-rt-rs-json-basic</artifactId>
-      <version>3.3.7</version>
+      <version>3.3.8</version>
       <exclusions>
         <exclusion>
           <artifactId>*</artifactId>
@@ -345,7 +345,7 @@
     <dependency>
       <groupId>org.apache.cxf</groupId>
       <artifactId>cxf-rt-rs-security-cors</artifactId>
-      <version>3.3.7</version>
+      <version>3.3.8</version>
       <exclusions>
         <exclusion>
           <artifactId>*</artifactId>
@@ -356,7 +356,7 @@
     <dependency>
       <groupId>org.apache.cxf</groupId>
       <artifactId>cxf-rt-rs-security-jose</artifactId>
-      <version>3.3.7</version>
+      <version>3.3.8</version>
       <exclusions>
         <exclusion>
           <artifactId>*</artifactId>
@@ -367,7 +367,7 @@
     <dependency>
       <groupId>org.apache.cxf</groupId>
       <artifactId>cxf-rt-rs-security-jose-jaxrs</artifactId>
-      <version>3.3.7</version>
+      <version>3.3.8</version>
       <exclusions>
         <exclusion>
           <artifactId>*</artifactId>
@@ -378,7 +378,7 @@
     <dependency>
       <groupId>org.apache.cxf</groupId>
       <artifactId>cxf-rt-rs-security-oauth2</artifactId>
-      <version>3.3.7</version>
+      <version>3.3.8</version>
       <exclusions>
         <exclusion>
           <artifactId>*</artifactId>
@@ -389,7 +389,18 @@
     <dependency>
       <groupId>org.apache.cxf</groupId>
       <artifactId>cxf-rt-rs-service-description</artifactId>
-      <version>3.3.7</version>
+      <version>3.3.8</version>
+      <exclusions>
+        <exclusion>
+          <artifactId>*</artifactId>
+          <groupId>*</groupId>
+        </exclusion>
+      </exclusions>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.cxf</groupId>
+      <artifactId>cxf-rt-rs-sse</artifactId>
+      <version>3.3.8</version>
       <exclusions>
         <exclusion>
           <artifactId>*</artifactId>
@@ -400,7 +411,7 @@
     <dependency>
       <groupId>org.apache.cxf</groupId>
       <artifactId>cxf-rt-security</artifactId>
-      <version>3.3.7</version>
+      <version>3.3.8</version>
       <exclusions>
         <exclusion>
           <artifactId>*</artifactId>
@@ -411,7 +422,7 @@
     <dependency>
       <groupId>org.apache.cxf</groupId>
       <artifactId>cxf-rt-transports-http</artifactId>
-      <version>3.3.7</version>
+      <version>3.3.8</version>
       <exclusions>
         <exclusion>
           <artifactId>*</artifactId>
@@ -432,8 +443,8 @@
     </dependency>
     <dependency>
       <groupId>org.apache.geronimo.javamail</groupId>
-      <artifactId>geronimo-javamail_1.4_mail</artifactId>
-      <version>1.9.0-alpha-2</version>
+      <artifactId>geronimo-javamail_1.6_mail</artifactId>
+      <version>1.0.0</version>
       <exclusions>
         <exclusion>
           <artifactId>*</artifactId>
@@ -444,7 +455,7 @@
     <dependency>
       <groupId>org.apache.johnzon</groupId>
       <artifactId>johnzon-core</artifactId>
-      <version>1.2.5</version>
+      <version>1.2.9</version>
       <exclusions>
         <exclusion>
           <artifactId>*</artifactId>
@@ -455,7 +466,7 @@
     <dependency>
       <groupId>org.apache.johnzon</groupId>
       <artifactId>johnzon-jaxrs</artifactId>
-      <version>1.2.5</version>
+      <version>1.2.9</version>
       <exclusions>
         <exclusion>
           <artifactId>*</artifactId>
@@ -466,7 +477,18 @@
     <dependency>
       <groupId>org.apache.johnzon</groupId>
       <artifactId>johnzon-jsonb</artifactId>
-      <version>1.2.5</version>
+      <version>1.2.9</version>
+      <exclusions>
+        <exclusion>
+          <artifactId>*</artifactId>
+          <groupId>*</groupId>
+        </exclusion>
+      </exclusions>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.johnzon</groupId>
+      <artifactId>johnzon-jsonp-strict</artifactId>
+      <version>1.2.9</version>
       <exclusions>
         <exclusion>
           <artifactId>*</artifactId>
@@ -477,7 +499,7 @@
     <dependency>
       <groupId>org.apache.johnzon</groupId>
       <artifactId>johnzon-mapper</artifactId>
-      <version>1.2.5</version>
+      <version>1.2.9</version>
       <exclusions>
         <exclusion>
           <artifactId>*</artifactId>
@@ -488,7 +510,7 @@
     <dependency>
       <groupId>org.apache.myfaces.core</groupId>
       <artifactId>myfaces-api</artifactId>
-      <version>2.3.6</version>
+      <version>2.3.7</version>
       <exclusions>
         <exclusion>
           <artifactId>*</artifactId>
@@ -499,7 +521,7 @@
     <dependency>
       <groupId>org.apache.myfaces.core</groupId>
       <artifactId>myfaces-impl</artifactId>
-      <version>2.3.6</version>
+      <version>2.3.7</version>
       <exclusions>
         <exclusion>
           <artifactId>*</artifactId>
@@ -510,7 +532,7 @@
     <dependency>
       <groupId>org.apache.openejb.shade</groupId>
       <artifactId>quartz-openejb-shade</artifactId>
-      <version>2.2.1</version>
+      <version>2.2.4</version>
       <exclusions>
         <exclusion>
           <artifactId>*</artifactId>
@@ -521,7 +543,7 @@
     <dependency>
       <groupId>org.apache.openjpa</groupId>
       <artifactId>openjpa</artifactId>
-      <version>3.1.0</version>
+      <version>3.1.2</version>
       <exclusions>
         <exclusion>
           <artifactId>*</artifactId>
@@ -618,39 +640,6 @@
       </exclusions>
     </dependency>
     <dependency>
-      <groupId>org.apache.taglibs</groupId>
-      <artifactId>taglibs-standard-impl</artifactId>
-      <version>1.2.5</version>
-      <exclusions>
-        <exclusion>
-          <artifactId>*</artifactId>
-          <groupId>*</groupId>
-        </exclusion>
-      </exclusions>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.taglibs</groupId>
-      <artifactId>taglibs-standard-jstlel</artifactId>
-      <version>1.2.5</version>
-      <exclusions>
-        <exclusion>
-          <artifactId>*</artifactId>
-          <groupId>*</groupId>
-        </exclusion>
-      </exclusions>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.taglibs</groupId>
-      <artifactId>taglibs-standard-spec</artifactId>
-      <version>1.2.5</version>
-      <exclusions>
-        <exclusion>
-          <artifactId>*</artifactId>
-          <groupId>*</groupId>
-        </exclusion>
-      </exclusions>
-    </dependency>
-    <dependency>
       <groupId>org.apache.tomcat</groupId>
       <artifactId>tomcat-api</artifactId>
       <version>${tomcat.version}</version>
@@ -873,7 +862,7 @@
     <dependency>
       <groupId>org.apache.tomee</groupId>
       <artifactId>javaee-api</artifactId>
-      <version>8.0-4</version>
+      <version>8.0-5</version>
       <exclusions>
         <exclusion>
           <artifactId>*</artifactId>
@@ -1059,6 +1048,17 @@
     </dependency>
     <dependency>
       <groupId>org.apache.tomee</groupId>
+      <artifactId>taglibs-shade</artifactId>
+      <version>8.0.7-SNAPSHOT</version>
+      <exclusions>
+        <exclusion>
+          <artifactId>*</artifactId>
+          <groupId>*</groupId>
+        </exclusion>
+      </exclusions>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.tomee</groupId>
       <artifactId>tomee-catalina</artifactId>
       <version>${project.version}</version>
       <exclusions>
@@ -1202,6 +1202,17 @@
     </dependency>
     <dependency>
       <groupId>org.apache.xbean</groupId>
+      <artifactId>xbean-asm8-shaded</artifactId>
+      <version>4.17</version>
+      <exclusions>
+        <exclusion>
+          <artifactId>*</artifactId>
+          <groupId>*</groupId>
+        </exclusion>
+      </exclusions>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.xbean</groupId>
       <artifactId>xbean-bundleutils</artifactId>
       <version>4.14</version>
       <exclusions>
@@ -1376,6 +1387,17 @@
         </exclusion>
       </exclusions>
     </dependency>
+    <dependency>
+      <groupId>org.tomitribe.quartz</groupId>
+      <artifactId>quartz</artifactId>
+      <version>2.2.4</version>
+      <exclusions>
+        <exclusion>
+          <artifactId>*</artifactId>
+          <groupId>*</groupId>
+        </exclusion>
+      </exclusions>
+    </dependency>
   </dependencies>
 </project>
 
diff --git a/boms/tomee-webprofile/src/main/resources/tomee/conf/system.properties b/boms/tomee-webprofile/src/main/resources/tomee/conf/system.properties
index 55daeaa..ab0fdfd 100644
--- a/boms/tomee-webprofile/src/main/resources/tomee/conf/system.properties
+++ b/boms/tomee-webprofile/src/main/resources/tomee/conf/system.properties
@@ -1,3 +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.
+
 # all this properties are added at JVM system properties at startup
 # here some default Apache TomEE system properties
 # for more information please see http://tomee.apache.org/properties-listing.html
diff --git a/boms/tomee-webprofile/src/main/resources/tomee/conf/tomee.xml b/boms/tomee-webprofile/src/main/resources/tomee/conf/tomee.xml
index 4f25bb2..737643f 100644
--- a/boms/tomee-webprofile/src/main/resources/tomee/conf/tomee.xml
+++ b/boms/tomee-webprofile/src/main/resources/tomee/conf/tomee.xml
@@ -1,4 +1,20 @@
 <?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.
+-->
 <tomee>
   <!-- see http://tomee.apache.org/containers-and-resources.html -->
 
diff --git a/container/mbean-annotation-api/pom.xml b/container/mbean-annotation-api/pom.xml
index 9e945f1..820b847 100644
--- a/container/mbean-annotation-api/pom.xml
+++ b/container/mbean-annotation-api/pom.xml
@@ -21,7 +21,7 @@
   <parent>
     <artifactId>container</artifactId>
     <groupId>org.apache.tomee</groupId>
-    <version>8.0.6-SNAPSHOT</version>
+    <version>8.0.7-SNAPSHOT</version>
   </parent>
 
   <artifactId>mbean-annotation-api</artifactId>
diff --git a/container/openejb-api/pom.xml b/container/openejb-api/pom.xml
index b43fc48..f05a2bc 100644
--- a/container/openejb-api/pom.xml
+++ b/container/openejb-api/pom.xml
@@ -23,7 +23,7 @@
   <parent>
     <artifactId>container</artifactId>
     <groupId>org.apache.tomee</groupId>
-    <version>8.0.6-SNAPSHOT</version>
+    <version>8.0.7-SNAPSHOT</version>
   </parent>
 
   <modelVersion>4.0.0</modelVersion>
diff --git a/container/openejb-core/pom.xml b/container/openejb-core/pom.xml
index 6b208ad..2000d30 100644
--- a/container/openejb-core/pom.xml
+++ b/container/openejb-core/pom.xml
@@ -26,7 +26,7 @@
   <parent>
     <artifactId>container</artifactId>
     <groupId>org.apache.tomee</groupId>
-    <version>8.0.6-SNAPSHOT</version>
+    <version>8.0.7-SNAPSHOT</version>
   </parent>
 
   <artifactId>openejb-core</artifactId>
@@ -409,19 +409,6 @@
           </archive>
         </configuration>
       </plugin>
-      <plugin>
-        <groupId>org.codehaus.mojo</groupId>
-        <artifactId>rat-maven-plugin</artifactId>
-        <configuration>
-          <excludes>
-            <exclude>src/main/resources/META-INF/org.apache.openejb.cli/validate.examples</exclude>
-            <exclude>src/main/resources/META-INF/org.apache.openejb.cli/validate.help</exclude>
-            <exclude>src/main/resources/META-INF/org.apache.openejb.resource.jdbc.DataSourcePlugin/*
-            </exclude>
-            <exclude>src/main/resources/META-INF/services/org/apache/activemq/broker/openejb</exclude>
-          </excludes>
-        </configuration>
-      </plugin>
     </plugins>
   </build>
 
diff --git a/container/openejb-core/src/main/java/org/apache/openejb/assembler/DeployerEjb.java b/container/openejb-core/src/main/java/org/apache/openejb/assembler/DeployerEjb.java
index 79bed95..58f440a 100644
--- a/container/openejb-core/src/main/java/org/apache/openejb/assembler/DeployerEjb.java
+++ b/container/openejb-core/src/main/java/org/apache/openejb/assembler/DeployerEjb.java
@@ -174,7 +174,7 @@
             AUTO_DEPLOY.set(autoDeploy);
             try {
                 final AppInfo appInfo = SystemInstance.get().getComponent(WebAppDeployer.class)
-                        .deploy(host, contextRoot(properties, file.getAbsolutePath()), file);
+                                                      .deploy(host, contextRoot(properties, file), file);
                 if (appInfo != null) {
                     saveIfNeeded(properties, file, appInfo);
                     return appInfo;
@@ -454,7 +454,14 @@
     }
 
     private String contextRoot(final Properties properties, final String jarPath) {
-        return properties.getProperty("webapp." + jarPath + ".context-root");
+        final File file = new File(jarPath);
+        return file.exists()
+               ? contextRoot(properties, file)
+               : properties.getProperty("webapp." + jarPath + ".context-root");
+    }
+
+    private String contextRoot(final Properties properties, final File jarPath) {
+        return properties.getProperty("webapp." + jarPath.getName() + ".context-root");
     }
 
     @Override
diff --git a/container/openejb-core/src/main/java/org/apache/openejb/cdi/CdiAppContextsService.java b/container/openejb-core/src/main/java/org/apache/openejb/cdi/CdiAppContextsService.java
index c5f69eb..ea0d8ca 100644
--- a/container/openejb-core/src/main/java/org/apache/openejb/cdi/CdiAppContextsService.java
+++ b/container/openejb-core/src/main/java/org/apache/openejb/cdi/CdiAppContextsService.java
@@ -32,6 +32,10 @@
 import java.util.Collection;
 import javax.servlet.ServletContext;
 import javax.servlet.ServletContextEvent;
+import javax.servlet.ServletRequest;
+import javax.servlet.ServletRequestEvent;
+import javax.servlet.ServletRequestWrapper;
+import javax.servlet.http.HttpServletRequest;
 
 
 public class CdiAppContextsService extends WebContextsService implements ContextsService {
@@ -114,4 +118,26 @@
     }
 
     public interface FiredManually {}
+
+    @Override
+    protected void initRequestContext(final Object startupObject) {
+        if(startupObject instanceof ServletRequestEvent) {
+
+            // OWB gets the ServletContextWrapper from the event and attempts to cast it to an HttpServletRequest
+            // in TCK, some tests are actually downgrading the HttpServletRequest to a regular ServletRequest
+            // See com.sun.ts.tests.servlet.api.jakarta_servlet.asynccontext
+            // In the look bellow, we try to check if we can find an HttpServletRequest in the hierarchy.
+            // otherwise, we let the call being delegated to OWB
+
+            ServletRequest current = ((ServletRequestEvent) startupObject).getServletRequest();
+            while (!HttpServletRequest.class.isInstance(current) && ServletRequestWrapper.class.isInstance(current)) {
+                current = ServletRequestWrapper.class.cast(current).getRequest();
+            }
+            super.initRequestContext(new ServletRequestEvent(((ServletRequestEvent) startupObject).getServletContext(), current));
+
+        } else {
+            super.initRequestContext(startupObject);
+
+        }
+    }
 }
diff --git a/container/openejb-core/src/main/java/org/apache/openejb/config/AnnotationDeployer.java b/container/openejb-core/src/main/java/org/apache/openejb/config/AnnotationDeployer.java
index 19efeff..fceb33e 100644
--- a/container/openejb-core/src/main/java/org/apache/openejb/config/AnnotationDeployer.java
+++ b/container/openejb-core/src/main/java/org/apache/openejb/config/AnnotationDeployer.java
@@ -1157,6 +1157,9 @@
                 webModule.getRestClasses().addAll(findRestClasses(webModule, finder));
                 addJaxRsProviders(finder, webModule.getJaxrsProviders(), Provider.class);
 
+                // CXF actually does this in its own CDI setup - org.apache.cxf.cdi.JAXRSCdiResourceExtension#collect(javax.enterprise.inject.spi.ProcessBean<T>)
+                //addJaxRsProviders(finder, webModule.getJaxrsProviders(), Path.class);
+
                 // Applications with a default constructor
                 // findSubclasses will not work by default to gain a lot of time
                 // look FinderFactory for the flag to activate it or
diff --git a/container/openejb-core/src/main/java/org/apache/openejb/config/ReadDescriptors.java b/container/openejb-core/src/main/java/org/apache/openejb/config/ReadDescriptors.java
index 89e1634..0ed48a9 100644
--- a/container/openejb-core/src/main/java/org/apache/openejb/config/ReadDescriptors.java
+++ b/container/openejb-core/src/main/java/org/apache/openejb/config/ReadDescriptors.java
@@ -848,7 +848,7 @@
 
     public static TldTaglib readTldTaglib(final URL url) throws OpenEJBException {
         // TOMEE-164 Optimization on reading built-in tld files
-        if (url.getPath().contains("jstl-1.2.jar") || (url.getPath().contains("taglibs-standard-") && url.getPath().contains(".jar!"))) {
+        if (url.getPath().contains("jstl-1.2.jar") || ((url.getPath().contains("taglibs-standard-") || url.getPath().contains("taglibs-shade-") && url.getPath().contains(".jar!")))) {
             return SKIP_TAGLIB;
         }
         if (url.getPath().contains("myfaces-impl")) { // we should return SKIP_TAGLIB too
diff --git a/container/openejb-core/src/main/java/org/apache/openejb/config/TldScanner.java b/container/openejb-core/src/main/java/org/apache/openejb/config/TldScanner.java
index 71dafbf..677c21e 100644
--- a/container/openejb-core/src/main/java/org/apache/openejb/config/TldScanner.java
+++ b/container/openejb-core/src/main/java/org/apache/openejb/config/TldScanner.java
@@ -327,7 +327,7 @@
             urlSet = URLs.cullSystemJars(urlSet);
             urlSet = applyBuiltinExcludes(
                     urlSet,
-                    Filters.tokens("taglibs-standard-impl", "taglibs-standard-jstlel", "javax.faces-2.", "jakarta.faces-2", "spring-security-taglibs", "spring-webmvc"),
+                    Filters.tokens("taglibs-shade", "taglibs-standard-impl", "taglibs-standard-jstlel", "javax.faces-2.", "jakarta.faces-2", "spring-security-taglibs", "spring-webmvc"),
                     Filters.prefixes("commons-jcs-", "myfaces-", "tomcat-websocket.jar")); // myfaces is hardcoded in tomee
         } catch (final IOException e) {
             DeploymentLoader.LOGGER.warning("Error scanning class loader for JSP tag libraries", e);
diff --git a/container/openejb-core/src/main/java/org/apache/openejb/core/interceptor/InterceptorStack.java b/container/openejb-core/src/main/java/org/apache/openejb/core/interceptor/InterceptorStack.java
index 4efa91e..21b8605 100644
--- a/container/openejb-core/src/main/java/org/apache/openejb/core/interceptor/InterceptorStack.java
+++ b/container/openejb-core/src/main/java/org/apache/openejb/core/interceptor/InterceptorStack.java
@@ -37,9 +37,9 @@
     private final Method targetMethod;
     private final Operation operation;
 
-    public InterceptorStack(final Object beanInstance, final Method targetMethod, final Operation operation, final List<InterceptorData> interceptorDatas, final Map<String, Object> interceptorInstances) {
-        if (interceptorDatas == null) {
-            throw new NullPointerException("interceptorDatas is null");
+    public InterceptorStack(final Object beanInstance, final Method targetMethod, final Operation operation, final List<InterceptorData> interceptorData, final Map<String, Object> interceptorInstances) {
+        if (interceptorData == null) {
+            throw new NullPointerException("interceptorData is null");
         }
         if (interceptorInstances == null) {
             throw new NullPointerException("interceptorInstances is null");
@@ -48,16 +48,16 @@
         this.targetMethod = targetMethod;
         this.operation = operation;
 
-        interceptors = new ArrayList<>(interceptorDatas.size());
+        interceptors = new ArrayList<>(interceptorData.size());
 
-        for (final InterceptorData interceptorData : interceptorDatas) {
-            final Class interceptorClass = interceptorData.getInterceptorClass();
+        for (final InterceptorData data : interceptorData) {
+            final Class interceptorClass = data.getInterceptorClass();
             final Object interceptorInstance = interceptorInstances.get(interceptorClass.getName());
             if (interceptorInstance == null) {
                 throw new IllegalArgumentException("No interceptor of type " + interceptorClass.getName());
             }
 
-            final Set<Method> methods = interceptorData.getMethods(operation);
+            final Set<Method> methods = data.getMethods(operation);
             for (final Method method : methods) {
                 final Interceptor interceptor;
                 final Object handler = DynamicProxyImplFactory.realHandler(interceptorInstance);
diff --git a/container/openejb-core/src/main/java/org/apache/openejb/core/ivm/naming/IvmContext.java b/container/openejb-core/src/main/java/org/apache/openejb/core/ivm/naming/IvmContext.java
index ead5b3f..4f1e0f5 100644
--- a/container/openejb-core/src/main/java/org/apache/openejb/core/ivm/naming/IvmContext.java
+++ b/container/openejb-core/src/main/java/org/apache/openejb/core/ivm/naming/IvmContext.java
@@ -497,7 +497,16 @@
     }
 
     public void close() throws NamingException {
-        checkReadOnly();
+        /*
+         * 10.4.4. Container Provider Responsibility
+         *
+         * The container must ensure that the enterprise bean instances have only read access to their environment
+         * variables. The container must throw the javax.naming.OperationNotSupportedException from all the methods of
+         * the javax.naming.Context interface that modify the environment naming context and its subcontexts.
+         *
+         * We can question if close() is modifying the context. But from what TCK does, it looks like no.
+         * So no need to check read only here. Tomcat does consider it to be a write operation so it fails
+         */
     }
 
     /*
diff --git a/container/openejb-core/src/main/java/org/apache/openejb/core/timer/CalendarTimerData.java b/container/openejb-core/src/main/java/org/apache/openejb/core/timer/CalendarTimerData.java
index 975b804..8fb3199 100644
--- a/container/openejb-core/src/main/java/org/apache/openejb/core/timer/CalendarTimerData.java
+++ b/container/openejb-core/src/main/java/org/apache/openejb/core/timer/CalendarTimerData.java
@@ -17,6 +17,7 @@
 
 package org.apache.openejb.core.timer;
 
+import org.apache.commons.lang3.builder.ToStringBuilder;
 import org.apache.openejb.core.timer.EJBCronTrigger.ParseException;
 import org.apache.openejb.quartz.impl.triggers.AbstractTrigger;
 
@@ -83,6 +84,6 @@
 
     @Override
     public String toString() {
-        return TimerType.Calendar.name() + " scheduleExpression = [" + scheduleExpression + "]";
+        return TimerType.Calendar.name() + " scheduleExpression = [" + ToStringBuilder.reflectionToString(scheduleExpression) + "]";
     }
 }
diff --git a/container/openejb-core/src/main/java/org/apache/openejb/core/timer/EJBCronTrigger.java b/container/openejb-core/src/main/java/org/apache/openejb/core/timer/EJBCronTrigger.java
index 52b6b16..4b4e9f3 100644
--- a/container/openejb-core/src/main/java/org/apache/openejb/core/timer/EJBCronTrigger.java
+++ b/container/openejb-core/src/main/java/org/apache/openejb/core/timer/EJBCronTrigger.java
@@ -104,6 +104,7 @@
 
     private final TimeZone timezone;
     private final String rawValue;
+    private final boolean isExpired;
 
     public EJBCronTrigger(final ScheduleExpression expr) throws ParseException {
 
@@ -118,7 +119,32 @@
 
         timezone = expr.getTimezone() == null ? TimeZone.getDefault() : TimeZone.getTimeZone(expr.getTimezone());
         setStartTime(expr.getStart() == null ? new Date() : expr.getStart());
-        setEndTime(expr.getEnd());
+
+        /*
+         * @testName: endNeverExpires
+         *
+         * @test_Strategy: create a timer with year="currentYear - currentYear+1", and
+         * end="currentYear-1". The end value is prior to the year values, and this
+         * timer will never expire. Creating this timer will succeed, but any timer
+         * method access in a subsequent business method will result in
+         * NoSuchObjectLocalException.
+         *
+         * EJB32 TCK test tries to create an already expired Timer and it's supposed to not fail.
+         * This may happen whe you restart an application for instance.
+         * On the other hand, Quartz does not allow endTime to be before StartTime so we need to check first so we don't
+         * set the endDate but we flag up this timer as being expired.
+         *
+         * When the first time is computed we will fail and as a consequence TimerData will be flagged up as being expired.
+         * So if endDate is not set or endTime after startTime, then we can consider this timer as not expired.
+         * If endTime is set and it's before startTime, we swallow setEndTime to Quartz and set the expired flag to true
+         */
+        if (expr.getEnd() == null || !isBefore(expr.getEnd(), getStartTime())) {
+            setEndTime(expr.getEnd());
+            isExpired = false;
+
+        } else {
+            isExpired = true;
+        }
 
         // If parsing fails on a field, record the error and move to the next field
         final Map<Integer, ParseException> errors = new HashMap<>();
@@ -143,6 +169,10 @@
             + DELIMITER + expr.getHour() + DELIMITER + expr.getMinute() + DELIMITER + expr.getSecond();
     }
 
+    private boolean isBefore(final Date end, final Date start) {
+        return start != null && end != null && start.after(end);
+    }
+
     /**
      * Computes a set of allowed values for the given field of a calendar based
      * time expression.
@@ -354,7 +384,7 @@
             } else if (currentFieldIndex >= 1) {
                 // No suitable value was found, so move back to the previous field
                 // and decrease the value
-                final int maxAffectedFieldType = upadteCalendar(calendar, expressions[currentFieldIndex - 1].field, -1);
+                final int maxAffectedFieldType = updateCalendar(calendar, expressions[currentFieldIndex - 1].field, -1);
                 currentFieldIndex = CALENDAR_FIELD_TYPE_ORDERED_INDEX_MAP.get(maxAffectedFieldType);
                 resetFields(calendar, maxAffectedFieldType, true);
             } else {
@@ -368,6 +398,16 @@
     }
 
     @Override
+    public Date computeFirstFireTime(final org.apache.openejb.quartz.Calendar calendar) {
+        // timer may be expired up on creation (see constructor comments)
+        if (isExpired) {
+            throw new TimerExpiredException(String.format("Timer %s expired.", this));
+        }
+
+        return super.computeFirstFireTime(calendar);
+    }
+
+    @Override
     public Date getFireTimeAfter(final Date afterTime) {
         log.debug("start to getFireTimeAfter:" + afterTime);
         final Calendar calendar = new GregorianCalendar(timezone);
@@ -447,7 +487,7 @@
                     // When current field is HOUR_OF_DAY, its upper field is DAY_OF_MONTH, so we need to -2 due to
                     // DAY_OF_WEEK.
                     final int parentFieldIndex = currentFieldIndex == 4 ? currentFieldIndex - 2 : currentFieldIndex - 1;
-                    final int maxAffectedFieldType = upadteCalendar(calendar, expressions[parentFieldIndex].field, 1);
+                    final int maxAffectedFieldType = updateCalendar(calendar, expressions[parentFieldIndex].field, 1);
                     currentFieldIndex = CALENDAR_FIELD_TYPE_ORDERED_INDEX_MAP.get(maxAffectedFieldType);
                     resetFields(calendar, maxAffectedFieldType, false);
                 }
@@ -491,7 +531,7 @@
      * @param field
      * @return
      */
-    private int upadteCalendar(final Calendar calendar, final int field, final int amount) {
+    private int updateCalendar(final Calendar calendar, final int field, final int amount) {
         final Calendar old = new GregorianCalendar(timezone);
         old.setTime(calendar.getTime());
         calendar.add(field, amount);
diff --git a/container/openejb-core/src/main/java/org/apache/openejb/core/timer/EjbTimerServiceImpl.java b/container/openejb-core/src/main/java/org/apache/openejb/core/timer/EjbTimerServiceImpl.java
index 518d32b..effee7c 100644
--- a/container/openejb-core/src/main/java/org/apache/openejb/core/timer/EjbTimerServiceImpl.java
+++ b/container/openejb-core/src/main/java/org/apache/openejb/core/timer/EjbTimerServiceImpl.java
@@ -221,9 +221,6 @@
         if (!properties.containsKey(StdSchedulerFactory.PROP_SCHED_INSTANCE_NAME)) {
             properties.put(StdSchedulerFactory.PROP_SCHED_INSTANCE_NAME, "OpenEJB-TimerService-Scheduler");
         }
-        if (!properties.containsKey(StdSchedulerFactory.PROP_SCHED_SKIP_UPDATE_CHECK)) {
-            properties.put(StdSchedulerFactory.PROP_SCHED_SKIP_UPDATE_CHECK, "true");
-        }
         if (!properties.containsKey("org.terracotta.quartz.skipUpdateCheck")) {
             properties.put("org.terracotta.quartz.skipUpdateCheck", "true");
         }
@@ -776,7 +773,7 @@
                     try {
                         transactionManager.begin();
                     } catch (final Exception e) {
-                        log.warning("Exception occured while starting container transaction", e);
+                        log.warning("Exception occurred while starting container transaction", e);
                         return;
                     }
                 }
diff --git a/container/openejb-core/src/main/java/org/apache/openejb/core/timer/TimerData.java b/container/openejb-core/src/main/java/org/apache/openejb/core/timer/TimerData.java
index 0ae1403..6dfc1ff 100644
--- a/container/openejb-core/src/main/java/org/apache/openejb/core/timer/TimerData.java
+++ b/container/openejb-core/src/main/java/org/apache/openejb/core/timer/TimerData.java
@@ -219,13 +219,19 @@
 
     public void newTimer() {
         //Initialize the Quartz Trigger
-        trigger = initializeTrigger();
-        trigger.computeFirstFireTime(null);
-        trigger.setGroup(OPEN_EJB_TIMEOUT_TRIGGER_GROUP_NAME);
-        trigger.setName(OPEN_EJB_TIMEOUT_TRIGGER_NAME_PREFIX + deploymentId + "_" + id);
-        newTimer = true;
         try {
+            trigger = initializeTrigger();
+            trigger.computeFirstFireTime(null);
+            trigger.setGroup(OPEN_EJB_TIMEOUT_TRIGGER_GROUP_NAME);
+            trigger.setName(OPEN_EJB_TIMEOUT_TRIGGER_NAME_PREFIX + deploymentId + "_" + id);
+            newTimer = true;
+
             registerTimerDataSynchronization();
+
+        } catch (final TimerExpiredException e) {
+            setExpired(true);
+            log.warning("Timer " + trigger + " is expired and will never trigger.");
+
         } catch (final TimerStoreException e) {
             throw new EJBException("Failed to register new timer data synchronization", e);
         }
diff --git a/container/openejb-core/src/main/java/org/apache/openejb/core/timer/TimerExpiredException.java b/container/openejb-core/src/main/java/org/apache/openejb/core/timer/TimerExpiredException.java
new file mode 100644
index 0000000..ec8f7e6
--- /dev/null
+++ b/container/openejb-core/src/main/java/org/apache/openejb/core/timer/TimerExpiredException.java
@@ -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.
+ */
+package org.apache.openejb.core.timer;
+
+public class TimerExpiredException extends RuntimeException {
+    public TimerExpiredException(final String message) {
+        super(message);
+    }
+}
diff --git a/container/openejb-core/src/main/java/org/apache/openejb/persistence/PersistenceUnitInfoImpl.java b/container/openejb-core/src/main/java/org/apache/openejb/persistence/PersistenceUnitInfoImpl.java
index b65c4d0..84fbf65 100644
--- a/container/openejb-core/src/main/java/org/apache/openejb/persistence/PersistenceUnitInfoImpl.java
+++ b/container/openejb-core/src/main/java/org/apache/openejb/persistence/PersistenceUnitInfoImpl.java
@@ -382,11 +382,18 @@
     // not the shouldSkip() method from UrlClassLoaderFirst since we skip more here
     // we just need JPA stuff so all the tricks we have for the server part are useless
     @SuppressWarnings("RedundantIfStatement")
-    public static boolean isServerClass(final String name) {
+    public static boolean isServerClass(final String input) {
+
+        String name = input;
+
         if (name == null) {
             return false;
         }
 
+        if (name.startsWith("openejb.shade.")) {
+            name = name.substring("openejb.shade.".length());
+        }
+
         for (final String prefix : URLClassLoaderFirst.FORCED_SKIP) {
             if (name.startsWith(prefix)) {
                 return true;
diff --git a/container/openejb-core/src/main/java/org/apache/openejb/resource/activemq/ActiveMQResourceAdapter.java b/container/openejb-core/src/main/java/org/apache/openejb/resource/activemq/ActiveMQResourceAdapter.java
index f66ef00..bf2daa3 100644
--- a/container/openejb-core/src/main/java/org/apache/openejb/resource/activemq/ActiveMQResourceAdapter.java
+++ b/container/openejb-core/src/main/java/org/apache/openejb/resource/activemq/ActiveMQResourceAdapter.java
@@ -47,6 +47,7 @@
 import javax.resource.ResourceException;
 import javax.resource.spi.BootstrapContext;
 import javax.resource.spi.ResourceAdapterInternalException;
+import javax.resource.spi.TransactionSupport;
 import java.lang.reflect.Field;
 import java.lang.reflect.InvocationHandler;
 import java.lang.reflect.Method;
@@ -327,7 +328,7 @@
             }
         }
 
-        final ActiveMQConnectionFactory factory = new TomEEConnectionFactory();
+        final ActiveMQConnectionFactory factory = new TomEEConnectionFactory(TransactionSupport.TransactionSupportLevel.XATransaction);
         connectionRequestInfo.configure(factory, activationSpec);
         return factory;
     }
diff --git a/container/openejb-core/src/main/java/org/apache/openejb/resource/activemq/jms2/TomEEConnectionFactory.java b/container/openejb-core/src/main/java/org/apache/openejb/resource/activemq/jms2/TomEEConnectionFactory.java
index 9af3d0d..1bbf9ed 100644
--- a/container/openejb-core/src/main/java/org/apache/openejb/resource/activemq/jms2/TomEEConnectionFactory.java
+++ b/container/openejb-core/src/main/java/org/apache/openejb/resource/activemq/jms2/TomEEConnectionFactory.java
@@ -22,11 +22,22 @@
 import org.apache.activemq.transport.Transport;
 
 import javax.jms.JMSContext;
+import javax.resource.spi.TransactionSupport;
 
 public class TomEEConnectionFactory extends ActiveMQXASslConnectionFactory {
+    private final TransactionSupport.TransactionSupportLevel transactionSupportLevel;
+
+    public TomEEConnectionFactory(TransactionSupport.TransactionSupportLevel transactionSupportLevel) {
+        this.transactionSupportLevel = transactionSupportLevel;
+    }
+
     @Override
     protected ActiveMQConnection createActiveMQConnection(final Transport transport, final JMSStatsImpl stats) throws Exception {
-        return new TomEEXAConnection(transport, getClientIdGenerator(), getConnectionIdGenerator(), stats);
+        if (TransactionSupport.TransactionSupportLevel.NoTransaction.equals(transactionSupportLevel)) {
+            return new TomEEConnection(transport, getClientIdGenerator(), getConnectionIdGenerator(), stats);
+        } else {
+            return new TomEEXAConnection(transport, getClientIdGenerator(), getConnectionIdGenerator(), stats);
+        }
     }
 
     @Override
diff --git a/container/openejb-core/src/main/java/org/apache/openejb/resource/activemq/jms2/TomEEManagedConnectionFactory.java b/container/openejb-core/src/main/java/org/apache/openejb/resource/activemq/jms2/TomEEManagedConnectionFactory.java
index 22c44d0..77a84c5 100644
--- a/container/openejb-core/src/main/java/org/apache/openejb/resource/activemq/jms2/TomEEManagedConnectionFactory.java
+++ b/container/openejb-core/src/main/java/org/apache/openejb/resource/activemq/jms2/TomEEManagedConnectionFactory.java
@@ -50,7 +50,7 @@
 
     @Override
     protected ActiveMQConnectionFactory createConnectionFactory(final ActiveMQConnectionRequestInfo connectionRequestInfo, final MessageActivationSpec activationSpec) {
-        final TomEEConnectionFactory connectionFactory = new TomEEConnectionFactory();
+        final TomEEConnectionFactory connectionFactory = new TomEEConnectionFactory(transactionSupportLevel);
         connectionRequestInfo.configure(connectionFactory, activationSpec);
         return connectionFactory;
     }
diff --git a/container/openejb-core/src/main/java/org/apache/openejb/resource/quartz/QuartzResourceAdapter.java b/container/openejb-core/src/main/java/org/apache/openejb/resource/quartz/QuartzResourceAdapter.java
index 8dad12b..e709bf9 100644
--- a/container/openejb-core/src/main/java/org/apache/openejb/resource/quartz/QuartzResourceAdapter.java
+++ b/container/openejb-core/src/main/java/org/apache/openejb/resource/quartz/QuartzResourceAdapter.java
@@ -82,8 +82,6 @@
             , JavaSecurityManagers.getSystemProperty(StdSchedulerFactory.PROP_SCHED_INTERRUPT_JOBS_ON_SHUTDOWN_WITH_WAIT, "true"));
 
         //Let the user enable this if they really want it
-        JavaSecurityManagers.setSystemProperty(StdSchedulerFactory.PROP_SCHED_SKIP_UPDATE_CHECK
-            , JavaSecurityManagers.getSystemProperty(StdSchedulerFactory.PROP_SCHED_SKIP_UPDATE_CHECK, "true"));
         JavaSecurityManagers.setSystemProperty("org.terracotta.quartz.skipUpdateCheck"
             , JavaSecurityManagers.getSystemProperty("org.terracotta.quartz.skipUpdateCheck", "true"));
 
diff --git a/container/openejb-core/src/main/java/org/apache/openejb/util/classloader/URLClassLoaderFirst.java b/container/openejb-core/src/main/java/org/apache/openejb/util/classloader/URLClassLoaderFirst.java
index 938b7e8..ca18330 100644
--- a/container/openejb-core/src/main/java/org/apache/openejb/util/classloader/URLClassLoaderFirst.java
+++ b/container/openejb-core/src/main/java/org/apache/openejb/util/classloader/URLClassLoaderFirst.java
@@ -69,7 +69,9 @@
                 "META-INF/services/javax.ws.rs.client.ClientBuilder," +
                 "META-INF/services/javax.json.spi.JsonProvider," +
                 "META-INF/services/javax.cache.spi.CachingProvider," +
-                "META-INF/javamail.default.providers,META-INF/javamail.default.address.map," +
+                "META-INF/services/javax.persistence.spi.PersistenceProvider," +
+                "META-INF/javamail.default.providers," +
+                "META-INF/javamail.default.address.map," +
                 "META-INF/javamail.charset.map,META-INF/mailcap," +
                 SLF4J_BINDER_CLASS);
     }
@@ -204,7 +206,10 @@
     //
     // /!\ please check org.apache.openejb.persistence.PersistenceUnitInfoImpl.isServerClass() too
     // when updating this method
-    public static boolean shouldSkip(final String name) {
+    public static boolean shouldSkip(final String input) {
+
+        String name = input;
+
         if (name == null) { // can happen with rest servlet definition or errors
             return false;
         }
@@ -220,6 +225,10 @@
             }
         }
 
+        if (name.startsWith("openejb.shade.")) {
+            name = name.substring("openejb.shade.".length());
+        }
+
         if (name.startsWith("java.")) {
             return true;
         }
diff --git a/container/openejb-core/src/main/resources/default.exclusions b/container/openejb-core/src/main/resources/default.exclusions
index d4f0aa9..0cefc89 100644
--- a/container/openejb-core/src/main/resources/default.exclusions
+++ b/container/openejb-core/src/main/resources/default.exclusions
@@ -255,6 +255,7 @@
 swizzle-
 sxc-
 taglibs-standard-
+taglibs-shade-
 testng-
 tomcat-annotations
 tomcat-api
diff --git a/container/openejb-core/src/main/resources/default.openejb.conf b/container/openejb-core/src/main/resources/default.openejb.conf
index fa5f0f9..478eaee 100644
--- a/container/openejb-core/src/main/resources/default.openejb.conf
+++ b/container/openejb-core/src/main/resources/default.openejb.conf
@@ -1,4 +1,20 @@
 <?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.
+-->
 <openejb>
 
 
diff --git a/container/openejb-core/src/test/java/org/apache/openejb/activemq/ConnectionFactoryTxTest.java b/container/openejb-core/src/test/java/org/apache/openejb/activemq/ConnectionFactoryTxTest.java
new file mode 100644
index 0000000..627b435
--- /dev/null
+++ b/container/openejb-core/src/test/java/org/apache/openejb/activemq/ConnectionFactoryTxTest.java
@@ -0,0 +1,353 @@
+/**
+ * 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
+ * <p>
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * <p>
+ * 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.
+ */
+package org.apache.openejb.activemq;
+
+
+import org.apache.activemq.ActiveMQConnectionFactory;
+import org.apache.activemq.broker.BrokerRegistry;
+import org.apache.activemq.broker.BrokerService;
+import org.apache.activemq.command.ActiveMQQueue;
+import org.apache.openejb.assembler.classic.Assembler;
+import org.apache.openejb.assembler.classic.ResourceInfo;
+import org.apache.openejb.assembler.classic.SecurityServiceInfo;
+import org.apache.openejb.assembler.classic.TransactionServiceInfo;
+import org.apache.openejb.config.ConfigurationFactory;
+import org.apache.openejb.jee.ContainerTransaction;
+import org.apache.openejb.jee.EjbJar;
+import org.apache.openejb.jee.SingletonBean;
+import org.apache.openejb.jee.TransAttribute;
+import org.junit.Assert;
+import org.junit.Test;
+
+import javax.annotation.Resource;
+import javax.jms.Connection;
+import javax.jms.ConnectionFactory;
+import javax.jms.MessageConsumer;
+import javax.jms.MessageProducer;
+import javax.jms.Queue;
+import javax.jms.Session;
+import javax.jms.TextMessage;
+import java.util.List;
+import java.util.Properties;
+
+public class ConnectionFactoryTxTest {
+
+    @Test
+    public void testTxSupportNoneBeanTransAttributeMandatoryRequiredNoRollback() throws Exception {
+        runTest("none", TransAttribute.MANDATORY, false);
+        checkQueue(0); // method doesn't run at all
+    }
+
+    @Test
+    public void testTxSupportNoneBeanTransAttributeMandatoryRequiredWithRollback() throws Exception {
+        runTest("none", TransAttribute.MANDATORY, true);
+        checkQueue(0); // method doesn't run at all
+    }
+
+    @Test
+    public void testTxSupportNoneBeanTransAttributeRequiredRequiredNoRollback() throws Exception {
+        runTest("none", TransAttribute.REQUIRED, false);
+        checkQueue(1);
+    }
+
+    @Test
+    public void testTxSupportNoneBeanTransAttributeRequiredRequiredWithRollback() throws Exception {
+        runTest("none", TransAttribute.REQUIRED, true);
+        checkQueue(1);
+    }
+
+    @Test
+    public void testTxSupportNoneBeanTransAttributeRequires_newRequiredNoRollback() throws Exception {
+        runTest("none", TransAttribute.REQUIRES_NEW, false);
+        checkQueue(1);
+    }
+
+    @Test
+    public void testTxSupportNoneBeanTransAttributeRequires_newRequiredWithRollback() throws Exception {
+        runTest("none", TransAttribute.REQUIRES_NEW, true);
+        checkQueue(1);
+    }
+
+    @Test
+    public void testTxSupportNoneBeanTransAttributeSupportsRequiredNoRollback() throws Exception {
+        runTest("none", TransAttribute.SUPPORTS, false);
+        checkQueue(1);
+    }
+
+    @Test
+    public void testTxSupportNoneBeanTransAttributeSupportsRequiredWithRollback() throws Exception {
+        runTest("none", TransAttribute.SUPPORTS, true);
+        checkQueue(1);
+    }
+
+    @Test
+    public void testTxSupportNoneBeanTransAttributeNot_supportedRequiredNoRollback() throws Exception {
+        runTest("none", TransAttribute.NOT_SUPPORTED, false);
+        checkQueue(1);
+    }
+
+    @Test
+    public void testTxSupportNoneBeanTransAttributeNot_supportedRequiredWithRollback() throws Exception {
+        runTest("none", TransAttribute.NOT_SUPPORTED, true);
+        checkQueue(1);
+    }
+
+    @Test
+    public void testTxSupportNoneBeanTransAttributeNeverRequiredNoRollback() throws Exception {
+        runTest("none", TransAttribute.NEVER, false);
+        checkQueue(1);
+    }
+
+    @Test
+    public void testTxSupportNoneBeanTransAttributeNeverRequiredWithRollback() throws Exception {
+        runTest("none", TransAttribute.NEVER, true);
+        checkQueue(1);
+    }
+
+    @Test
+    public void testTxSupportLocalBeanTransAttributeMandatoryRequiredNoRollback() throws Exception {
+        runTest("local", TransAttribute.MANDATORY, false);
+        checkQueue(0); // No tx present, so this this shouldn't process
+    }
+
+    @Test
+    public void testTxSupportLocalBeanTransAttributeMandatoryRequiredWithRollback() throws Exception {
+        runTest("local", TransAttribute.MANDATORY, true);
+        checkQueue(0); // No tx present, so this this shouldn't process
+    }
+
+    @Test
+    public void testTxSupportLocalBeanTransAttributeRequiredRequiredNoRollback() throws Exception {
+        runTest("local", TransAttribute.REQUIRED, false);
+        checkQueue(1);
+    }
+
+    @Test
+    public void testTxSupportLocalBeanTransAttributeRequiredRequiredWithRollback() throws Exception {
+        runTest("local", TransAttribute.REQUIRED, true);
+        checkQueue(0);
+    }
+
+    @Test
+    public void testTxSupportLocalBeanTransAttributeRequires_newRequiredNoRollback() throws Exception {
+        runTest("local", TransAttribute.REQUIRES_NEW, false);
+        checkQueue(1);
+    }
+
+    @Test
+    public void testTxSupportLocalBeanTransAttributeRequires_newRequiredWithRollback() throws Exception {
+        runTest("local", TransAttribute.REQUIRES_NEW, true);
+        checkQueue(0);
+    }
+
+    @Test
+    public void testTxSupportLocalBeanTransAttributeSupportsRequiredNoRollback() throws Exception {
+        runTest("local", TransAttribute.SUPPORTS, false);
+        checkQueue(1);
+    }
+
+    @Test
+    public void testTxSupportLocalBeanTransAttributeSupportsRequiredWithRollback() throws Exception {
+        runTest("local", TransAttribute.SUPPORTS, true);
+        checkQueue(1);
+    }
+
+    @Test
+    public void testTxSupportLocalBeanTransAttributeNot_supportedRequiredNoRollback() throws Exception {
+        runTest("local", TransAttribute.NOT_SUPPORTED, false);
+        checkQueue(1);
+    }
+
+    @Test
+    public void testTxSupportLocalBeanTransAttributeNot_supportedRequiredWithRollback() throws Exception {
+        runTest("local", TransAttribute.NOT_SUPPORTED, true);
+        checkQueue(1);
+    }
+
+    @Test
+    public void testTxSupportLocalBeanTransAttributeNeverRequiredNoRollback() throws Exception {
+        runTest("local", TransAttribute.NEVER, false);
+        checkQueue(1);
+    }
+
+    @Test
+    public void testTxSupportLocalBeanTransAttributeNeverRequiredWithRollback() throws Exception {
+        runTest("local", TransAttribute.NEVER, true);
+        checkQueue(1);
+    }
+
+    @Test
+    public void testTxSupportXaBeanTransAttributeMandatoryRequiredNoRollback() throws Exception {
+        runTest("xa", TransAttribute.MANDATORY, false);
+        checkQueue(0); // No tx present, so this this shouldn't process
+    }
+
+    @Test
+    public void testTxSupportXaBeanTransAttributeMandatoryRequiredWithRollback() throws Exception {
+        runTest("xa", TransAttribute.MANDATORY, true);
+        checkQueue(0); // No tx present, so this this shouldn't process
+    }
+
+    @Test
+    public void testTxSupportXaBeanTransAttributeRequiredRequiredNoRollback() throws Exception {
+        runTest("xa", TransAttribute.REQUIRED, false);
+        checkQueue(1);
+    }
+
+    @Test
+    public void testTxSupportXaBeanTransAttributeRequiredRequiredWithRollback() throws Exception {
+        runTest("xa", TransAttribute.REQUIRED, true);
+        checkQueue(0);
+    }
+
+    @Test
+    public void testTxSupportXaBeanTransAttributeRequires_newRequiredNoRollback() throws Exception {
+        runTest("xa", TransAttribute.REQUIRES_NEW, false);
+        checkQueue(1);
+    }
+
+    @Test
+    public void testTxSupportXaBeanTransAttributeRequires_newRequiredWithRollback() throws Exception {
+        runTest("xa", TransAttribute.REQUIRES_NEW, true);
+        checkQueue(0);
+    }
+
+    @Test
+    public void testTxSupportXaBeanTransAttributeSupportsRequiredNoRollback() throws Exception {
+        runTest("xa", TransAttribute.SUPPORTS, false);
+        checkQueue(1);
+    }
+
+    @Test
+    public void testTxSupportXaBeanTransAttributeSupportsRequiredWithRollback() throws Exception {
+        runTest("xa", TransAttribute.SUPPORTS, true);
+        checkQueue(1);
+    }
+
+    @Test
+    public void testTxSupportXaBeanTransAttributeNot_supportedRequiredNoRollback() throws Exception {
+        runTest("xa", TransAttribute.NOT_SUPPORTED, false);
+        checkQueue(1);
+    }
+
+    @Test
+    public void testTxSupportXaBeanTransAttributeNot_supportedRequiredWithRollback() throws Exception {
+        runTest("xa", TransAttribute.NOT_SUPPORTED, true);
+        checkQueue(1);
+    }
+
+    @Test
+    public void testTxSupportXaBeanTransAttributeNeverRequiredNoRollback() throws Exception {
+        runTest("xa", TransAttribute.NEVER, false);
+        checkQueue(1);
+    }
+
+    @Test
+    public void testTxSupportXaBeanTransAttributeNeverRequiredWithRollback() throws Exception {
+        runTest("xa", TransAttribute.NEVER, true);
+        checkQueue(1);
+    }
+    private void checkQueue(final int expected) throws Exception {
+        final BrokerService broker = BrokerRegistry.getInstance().lookup("localhost");
+        final org.apache.activemq.broker.region.Destination testQueue = broker.getDestination(new ActiveMQQueue("TEST"));
+
+        Assert.assertEquals(expected, testQueue.browse().length);
+    }
+
+    private void runTest(final String transactionSupport, final TransAttribute transactionAttribute, final boolean rollback) throws Exception {
+        final ConfigurationFactory config = new ConfigurationFactory();
+
+        final Assembler assembler = new Assembler();
+
+        assembler.createTransactionManager(config.configureService(TransactionServiceInfo.class));
+        assembler.createSecurityService(config.configureService(SecurityServiceInfo.class));
+
+
+        final Properties raProps = new Properties();
+        raProps.setProperty("BrokerXmlConfig", "broker:(vm://broker)?useJmx=true");
+        raProps.setProperty("ServerUrl", "vm://localhost");
+        assembler.createResource(config.configureService(ResourceInfo.class, "MyJmsResourceAdapter",
+                raProps, "Default JMS Resource Adapter", "ActiveMQResourceAdapter"));
+
+        final Properties cfProps = new Properties();
+        cfProps.setProperty("ResourceAdapter", "MyJmsResourceAdapter");
+        cfProps.setProperty("TransactionSupport", transactionSupport);
+        assembler.createResource(config.configureService(ResourceInfo.class, "MyJmsConnectionFactory",
+                cfProps, "Default JMS Connection Factory", "javax.jms.ConnectionFactory"));
+
+        final EjbJar ejbJar = new EjbJar("tx-singleton");
+        final SingletonBean singletonBean = new SingletonBean(TxSingletonBean.class);
+        ejbJar.addEnterpriseBean(singletonBean);
+
+        final List<ContainerTransaction> declared = ejbJar.getAssemblyDescriptor().getContainerTransaction();
+        declared.add(new ContainerTransaction(transactionAttribute, "*", "*", "*"));
+
+        assembler.createApplication(config.configureApplication(ejbJar));
+
+        // explicitly clear this thing out
+        consumeMessagesFromQueue(BrokerRegistry.getInstance().lookup("localhost").getVmConnectorURI().toString(),"TEST");
+
+        final TxSingletonBean bean = (TxSingletonBean) assembler.getContainerSystem().getJNDIContext().lookup("java:global/tx-singleton/tx-singleton/TxSingletonBean");
+        try {
+            bean.sendMessage(rollback);
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+    }
+
+    protected void consumeMessagesFromQueue(final String brokerUrl, final String queueName) throws Exception {
+        final ConnectionFactory cf = new ActiveMQConnectionFactory(brokerUrl);
+        final Connection conn = cf.createConnection();
+        conn.start();
+
+        final Session session = conn.createSession(false, Session.AUTO_ACKNOWLEDGE);
+
+        final Queue queue = session.createQueue(queueName);
+        final MessageConsumer consumer = session.createConsumer(queue);
+
+        while (consumer.receive(1000) != null) {
+        }
+
+        consumer.close();
+        session.close();
+        conn.close();
+    }
+
+    public static class TxSingletonBean {
+
+        @Resource
+        private ConnectionFactory cf;
+
+        public void sendMessage(final boolean fail) throws Exception {
+            try (final Connection connection = cf.createConnection(); final Session sess = connection.createSession(false, javax.jms.Session.AUTO_ACKNOWLEDGE)) {
+                connection.start();
+
+                final Queue queue = sess.createQueue("TEST");
+                final MessageProducer producer = sess.createProducer(queue);
+                final TextMessage message = sess.createTextMessage("Test Message");
+
+                producer.send(message);
+
+                if (fail) {
+                    throw new RuntimeException("Operation failing");
+                }
+            }
+        }
+
+    }
+}
+
diff --git a/container/openejb-core/src/test/java/org/apache/openejb/core/ivm/naming/IvmContextTest.java b/container/openejb-core/src/test/java/org/apache/openejb/core/ivm/naming/IvmContextTest.java
index ce93e36..6d3be45 100644
--- a/container/openejb-core/src/test/java/org/apache/openejb/core/ivm/naming/IvmContextTest.java
+++ b/container/openejb-core/src/test/java/org/apache/openejb/core/ivm/naming/IvmContextTest.java
@@ -342,14 +342,14 @@
         }
     }
 
-    public void testCloseThrowsExceptionIfReadOnly() throws NamingException {
+    public void testCloseDoesNotThrowExceptionIfReadOnly() throws NamingException {
         final IvmContext context = new IvmContext();
         context.setReadOnly(true);
         try {
             context.close();
-            fail();
-        } catch (OperationNotSupportedException e) {
             //ok
+        } catch (OperationNotSupportedException e) {
+            fail();
         }
     }
     
diff --git a/container/openejb-core/src/test/java/org/apache/openejb/interceptors/EjbModuleOnlyInterceptorsTest.java b/container/openejb-core/src/test/java/org/apache/openejb/interceptors/EjbModuleOnlyInterceptorsTest.java
new file mode 100644
index 0000000..b27d039
--- /dev/null
+++ b/container/openejb-core/src/test/java/org/apache/openejb/interceptors/EjbModuleOnlyInterceptorsTest.java
@@ -0,0 +1,196 @@
+/**
+ * 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
+ * <p>
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * <p>
+ * 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.
+ */
+package org.apache.openejb.interceptors;
+
+import org.apache.openejb.core.OpenEJBInitialContextFactory;
+import org.apache.openejb.junit.ApplicationComposer;
+import org.apache.openejb.testing.Classes;
+import org.apache.openejb.testng.PropertiesBuilder;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+import javax.annotation.PostConstruct;
+import javax.ejb.EJB;
+import javax.ejb.Singleton;
+import javax.ejb.Startup;
+import javax.interceptor.AroundConstruct;
+import javax.interceptor.ExcludeDefaultInterceptors;
+import javax.interceptor.Interceptors;
+import javax.interceptor.InvocationContext;
+import javax.naming.Context;
+import javax.naming.InitialContext;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+
+import static org.junit.Assert.assertNotNull;
+
+@RunWith(ApplicationComposer.class)
+@Classes(innerClassesAsBean = true) // don't activate CDI here because on TCK it won't get activated
+public class EjbModuleOnlyInterceptorsTest {
+
+    @EJB
+    private InterceptorBean interceptorBean;
+
+    @EJB
+    private HistorySingletonBean historySingletonBean;
+
+    @Before
+    public void setUp() throws Exception {
+        final Context ctx = new InitialContext(new PropertiesBuilder()
+                                                   .p(Context.INITIAL_CONTEXT_FACTORY,
+                                                      OpenEJBInitialContextFactory.class.getName())
+                                                   .build());
+        ctx.bind("inject", this);
+    }
+
+    @Test
+    public void allInterceptorsUsed() throws Exception {
+        assertNotNull(interceptorBean);
+        final List<String> postConstructRecordsFor = historySingletonBean.getPostConstructRecordsFor();
+
+        // todo, when we have an idea about the fix, we can add asserts so build does not fail for now
+        // this is a placeholder for people to jump in and help, because I'm getting a bit stuck on this one.
+        System.out.println(postConstructRecordsFor);
+    }
+
+    @Singleton
+    @Startup
+    @ExcludeDefaultInterceptors
+    @Interceptors({
+                      InterceptorColor.class,
+                      InterceptorJuice.class
+                  })
+    public static class InterceptorBean extends InterceptorBeanBase {
+        private static final String simpleName = "InterceptorBean";
+
+        @PostConstruct
+        protected void postConstruct() {
+            this.historySingletonBean.addPostConstructRecordFor(simpleName);
+        }
+
+    }
+
+    public static abstract class InterceptorBeanBase {
+        private static final String simpleName = "InterceptorBeanBase";
+
+        @EJB
+        protected HistorySingletonBean historySingletonBean;
+
+        @PostConstruct
+        protected void postConstructInInterceptorBeanBase() {
+            this.historySingletonBean.addPostConstructRecordFor(simpleName);
+        }
+
+        public HistorySingletonBean getHistorySingletonBean() {
+            return this.historySingletonBean;
+        }
+    }
+
+    public static class InterceptorColor extends InterceptorJuice {
+        private static final String simpleName = "InterceptorColor";
+
+        @AroundConstruct
+        private void aroundConstruct(InvocationContext ic) {
+            Object savedTarget = ic.getTarget();
+            try {
+                ic.proceed();
+
+            } catch (final Exception ex) {
+                this.historySingletonBean.addPostConstructRecordFor(ex.toString());
+                return;
+            }
+            if (savedTarget != null) {
+                this.historySingletonBean.addPostConstructRecordFor("NotNullTargetBeforeProceed");
+                return;
+            }
+            this.historySingletonBean.addPostConstructRecordFor(simpleName);
+        }
+    }
+
+    public static class InterceptorJuice extends InterceptorBase {
+        private static final String simpleName = "InterceptorJuice";
+
+        @AroundConstruct
+        private void aroundConstruct(InvocationContext ic) {
+            Object savedTarget = ic.getTarget();
+            try {
+                ic.proceed();
+
+            } catch (final Exception ex) {
+                this.historySingletonBean.addPostConstructRecordFor(ex.toString());
+                return;
+            }
+            if (savedTarget != null) {
+                this.historySingletonBean.addPostConstructRecordFor("NotNullTargetBeforeProceed");
+                return;
+            }
+            this.historySingletonBean.addPostConstructRecordFor(simpleName);
+        }
+    }
+
+    public static abstract class InterceptorBase extends InterceptorBaseBase {
+        private static final String simpleName = "InterceptorBase";
+
+        @PostConstruct
+        private void postConstruct(InvocationContext inv) {
+            this.historySingletonBean.addPostConstructRecordFor(simpleName);
+            try {
+                inv.proceed();
+
+            } catch (final Exception ex) {
+                this.historySingletonBean.addPostConstructRecordFor(ex.toString());
+            }
+        }
+    }
+
+    public static abstract class InterceptorBaseBase {
+        private static final String simpleName = "InterceptorBaseBase";
+
+        @EJB
+        protected HistorySingletonBean historySingletonBean;
+
+        @PostConstruct
+        protected void postConstructInInterceptorBaseBase(InvocationContext inv) {
+            this.historySingletonBean.addPostConstructRecordFor(simpleName);
+            try {
+                inv.proceed();
+
+            } catch (final Exception ex) {
+                this.historySingletonBean.addPostConstructRecordFor(ex.toString());
+            }
+        }
+
+    }
+
+    @Startup
+    @Singleton
+    @ExcludeDefaultInterceptors
+    public static class HistorySingletonBean {
+        private List<String> postConstructRecordsMap = new ArrayList<>();
+
+        public List<String> getPostConstructRecordsFor() {
+            return Collections.unmodifiableList(postConstructRecordsMap);
+        }
+
+        public void addPostConstructRecordFor(final String aEntry) {
+            postConstructRecordsMap.add(aEntry);
+        }
+
+    }
+}
diff --git a/container/openejb-core/src/test/java/org/apache/openejb/resource/jdbc/driver/AlternateDriverJarTest.java b/container/openejb-core/src/test/java/org/apache/openejb/resource/jdbc/driver/AlternateDriverJarTest.java
index f455bb6..8bb3fb4 100644
--- a/container/openejb-core/src/test/java/org/apache/openejb/resource/jdbc/driver/AlternateDriverJarTest.java
+++ b/container/openejb-core/src/test/java/org/apache/openejb/resource/jdbc/driver/AlternateDriverJarTest.java
@@ -58,7 +58,7 @@
         p.put("JdbcOne.Password", PASSWORD);
         p.put("JdbcOne.JtaManaged", "false");
 
-        final File file = new File(drivers, "derby-10.9.1.0.jar");
+        final File file = new File(drivers, "derby-10.14.2.0.jar");
         Assert.assertTrue("Failed to find: " + file, file.exists());
 
         p.put("JdbcTwo", "new://Resource?type=DataSource&classpath="
@@ -93,7 +93,7 @@
 
         final String twoDriverVersion = two.getDriverVersion();
         System.out.println("twoDriverVersion = " + twoDriverVersion);
-        Assert.assertEquals("Should be using 10.9.1.0 - (1344872)", "10.9.1.0 - (1344872)", twoDriverVersion);
+        Assert.assertEquals("Should be using 10.14.2.0 - (1828579)", "10.14.2.0 - (1828579)", twoDriverVersion);
     }
 
     @LocalBean
diff --git a/container/openejb-core/src/test/java/org/apache/openejb/timer/EJBCronTriggerTest.java b/container/openejb-core/src/test/java/org/apache/openejb/timer/EJBCronTriggerTest.java
index e1fdcb3..0cf244a 100644
--- a/container/openejb-core/src/test/java/org/apache/openejb/timer/EJBCronTriggerTest.java
+++ b/container/openejb-core/src/test/java/org/apache/openejb/timer/EJBCronTriggerTest.java
@@ -19,6 +19,7 @@
 
 import org.apache.openejb.core.timer.EJBCronTrigger;
 import org.apache.openejb.core.timer.EJBCronTrigger.ParseException;
+import org.apache.openejb.core.timer.TimerExpiredException;
 import org.junit.Test;
 
 import javax.ejb.ScheduleExpression;
@@ -27,12 +28,28 @@
 import java.util.GregorianCalendar;
 
 import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
 import static org.junit.Assert.assertNull;
 import static org.junit.Assert.assertTrue;
 
 
 public class EJBCronTriggerTest {
 
+    @Test
+    public void shouldBeAbleToCreateExpiredTrigger() throws ParseException {
+        final ScheduleExpression expr = new ScheduleExpression().year(2008).month(12).dayOfMonth(1).end(new Date(0));
+        final EJBCronTrigger trigger = new EJBCronTrigger(expr);
+        assertNotNull(trigger);
+    }
+
+    @Test(expected = TimerExpiredException.class)
+    public void computeFailsOnExpiredTriggers() throws ParseException {
+        final ScheduleExpression expr = new ScheduleExpression().year(2008).month(12).dayOfMonth(1).end(new Date(0));
+        final EJBCronTrigger trigger = new EJBCronTrigger(expr);
+        assertNotNull(trigger);
+        trigger.computeFirstFireTime(null);
+    }
+
     @Test(timeout = 1000)
     public void testSimpleDate() throws ParseException {
         final ScheduleExpression expr = new ScheduleExpression().year(2008).month(12).dayOfMonth(1).start(new Date(0));
diff --git a/container/openejb-core/src/test/java/org/apache/openejb/timer/InitialIntervalTimerTest.java b/container/openejb-core/src/test/java/org/apache/openejb/timer/InitialIntervalTimerTest.java
index 9f9252a..1390e48 100644
--- a/container/openejb-core/src/test/java/org/apache/openejb/timer/InitialIntervalTimerTest.java
+++ b/container/openejb-core/src/test/java/org/apache/openejb/timer/InitialIntervalTimerTest.java
@@ -16,10 +16,10 @@
  */
 package org.apache.openejb.timer;
 
+import org.apache.commons.lang3.time.DateUtils;
 import org.apache.openejb.jee.EnterpriseBean;
-import org.apache.openejb.jee.SingletonBean;
 import org.apache.openejb.junit.ApplicationComposer;
-import org.apache.openejb.testing.Module;
+import org.apache.openejb.testing.Classes;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 
@@ -29,6 +29,9 @@
 import javax.ejb.EJB;
 import javax.ejb.Lock;
 import javax.ejb.LockType;
+import javax.ejb.NoMoreTimeoutsException;
+import javax.ejb.NoSuchObjectLocalException;
+import javax.ejb.ScheduleExpression;
 import javax.ejb.Singleton;
 import javax.ejb.Startup;
 import javax.ejb.Timeout;
@@ -36,24 +39,71 @@
 import javax.ejb.TimerConfig;
 import javax.ejb.TimerService;
 
+import java.util.Calendar;
+import java.util.Date;
+
 import static org.junit.Assert.assertEquals;
 
 @RunWith(ApplicationComposer.class)
+@Classes(innerClassesAsBean = true)
 public class InitialIntervalTimerTest {
-    @Module
-    public EnterpriseBean bean() {
-        return new SingletonBean(TimerWithDelay.class).localBean();
-    }
 
     @EJB
     private TimerWithDelay bean;
 
+    @EJB
+    private TimerNeverExpires scheduleBean;
+
     @Test
     public void test() throws InterruptedException {
         Thread.sleep(5400);
         assertEquals(3, bean.getOk());
     }
 
+    @Test
+    public void endNeverExpires() {
+        final Calendar cal = Calendar.getInstance();
+        final int currentYear = getForSchedule(Calendar.YEAR, cal);
+        cal.add(Calendar.SECOND, 10);
+        final ScheduleExpression exp = getPreciseScheduleExpression(cal);
+        final Date end = DateUtils.setYears(cal.getTime(), cal.get(Calendar.YEAR) - 1);
+        exp.end(end);
+        exp.year((currentYear) + " - " + (currentYear + 1));
+
+        final Timer timer = scheduleBean.createTimer(exp);
+        scheduleBean.passIfNoMoreTimeouts(timer);
+    }
+
+    public static ScheduleExpression getPreciseScheduleExpression(final Calendar... cals) {
+        Calendar cal = (cals.length == 0) ? Calendar.getInstance() : cals[0];
+        return new ScheduleExpression()
+            .year(cal.get(Calendar.YEAR)).month(getForSchedule(Calendar.MONTH, cal))
+            .dayOfMonth(getForSchedule(Calendar.DAY_OF_MONTH, cal))
+            .hour(getForSchedule(Calendar.HOUR_OF_DAY, cal))
+            .minute(getForSchedule(Calendar.MINUTE, cal))
+            .second(getForSchedule(Calendar.SECOND, cal));
+    }
+
+    public static int getForSchedule(final int field, final Calendar... calendars) {
+        int result = 0;
+        Calendar cal = null;
+        if (calendars.length == 0) {
+            cal = Calendar.getInstance();
+        } else {
+            cal = calendars[0];
+        }
+        result = cal.get(field);
+        if (field == Calendar.DAY_OF_WEEK) {
+            result--; // 0 and 7 are both Sunday
+            if (result == 0) {
+                result = (Math.random() < 0.5) ? 0 : 7;
+            }
+        } else if (field == Calendar.MONTH) {
+            result++;
+        }
+        return result;
+    }
+
     @Singleton
     @Startup
     @Lock(LockType.READ)
@@ -85,4 +135,58 @@
             timer.cancel();
         }
     }
+
+    @Singleton
+    @Startup
+    @Lock(LockType.READ)
+    public static class TimerNeverExpires {
+
+        @Resource
+        private TimerService timerService;
+
+        private int ok = 0;
+
+        @Timeout
+        public void timeout(final Timer timer) {
+            ok++;
+        }
+
+        public Timer createTimer(final ScheduleExpression exp) {
+            return timerService.createCalendarTimer(exp, new TimerConfig("TimerNeverExpires", false));
+        }
+
+        public String passIfNoMoreTimeouts(final Timer t) {
+            String result = "";
+            try {
+                Date nextTimeout = t.getNextTimeout();
+                throw new RuntimeException(
+                    "Expecting NoSuchObjectLocalException or NoMoreTimeoutsException "
+                    + "when accessing getNextTimeout, but actual " + nextTimeout);
+
+            } catch (final NoMoreTimeoutsException e) {
+                result += " Got expected " + e;
+
+            } catch (final NoSuchObjectLocalException e) {
+                result += " Got expected " + e;
+
+            }
+
+            try {
+                long timeRemaining = t.getTimeRemaining();
+                throw new RuntimeException(
+                    "Expecting NoSuchObjectLocalException or NoMoreTimeoutsException "
+                    + "when accessing getTimeRemaining, but actual " + timeRemaining);
+
+            } catch (final NoMoreTimeoutsException e) {
+                result += " Got expected " + e;
+
+            } catch (final NoSuchObjectLocalException e) {
+                result += " Got expected " + e;
+
+            }
+            return result;
+        }
+
+
+    }
 }
diff --git a/container/openejb-javaagent/pom.xml b/container/openejb-javaagent/pom.xml
index a93d710..a2cbe79 100644
--- a/container/openejb-javaagent/pom.xml
+++ b/container/openejb-javaagent/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <artifactId>container</artifactId>
     <groupId>org.apache.tomee</groupId>
-    <version>8.0.6-SNAPSHOT</version>
+    <version>8.0.7-SNAPSHOT</version>
   </parent>
   <modelVersion>4.0.0</modelVersion>
   <artifactId>openejb-javaagent</artifactId>
diff --git a/container/openejb-jee-accessors/pom.xml b/container/openejb-jee-accessors/pom.xml
index 87dfa5a..0bfb023 100644
--- a/container/openejb-jee-accessors/pom.xml
+++ b/container/openejb-jee-accessors/pom.xml
@@ -23,7 +23,7 @@
   <parent>
     <artifactId>container</artifactId>
     <groupId>org.apache.tomee</groupId>
-    <version>8.0.6-SNAPSHOT</version>
+    <version>8.0.7-SNAPSHOT</version>
   </parent>
   <modelVersion>4.0.0</modelVersion>
   <artifactId>openejb-jee-accessors</artifactId>
diff --git a/container/openejb-jee/pom.xml b/container/openejb-jee/pom.xml
index 7574dbe..643a0f5 100644
--- a/container/openejb-jee/pom.xml
+++ b/container/openejb-jee/pom.xml
@@ -23,7 +23,7 @@
   <parent>
     <artifactId>container</artifactId>
     <groupId>org.apache.tomee</groupId>
-    <version>8.0.6-SNAPSHOT</version>
+    <version>8.0.7-SNAPSHOT</version>
   </parent>
   <modelVersion>4.0.0</modelVersion>
   <artifactId>openejb-jee</artifactId>
@@ -39,19 +39,6 @@
     </openejb.osgi.import.pkg>
   </properties>
 
-  <build>
-    <plugins>
-      <plugin>
-        <groupId>org.codehaus.mojo</groupId>
-        <artifactId>rat-maven-plugin</artifactId>
-        <configuration>
-          <excludes>
-            <exclude>src/main/resources/META-INF/schema/xml.xsd</exclude>
-          </excludes>
-        </configuration>
-      </plugin>
-    </plugins>
-  </build>
   <dependencies>
     <dependency>
       <groupId>${project.groupId}</groupId>
diff --git a/container/openejb-jee/src/main/java/org/apache/openejb/jee/jpa/unit/JaxbPersistenceFactory.java b/container/openejb-jee/src/main/java/org/apache/openejb/jee/jpa/unit/JaxbPersistenceFactory.java
index 1ca0617..6caa2dc 100644
--- a/container/openejb-jee/src/main/java/org/apache/openejb/jee/jpa/unit/JaxbPersistenceFactory.java
+++ b/container/openejb-jee/src/main/java/org/apache/openejb/jee/jpa/unit/JaxbPersistenceFactory.java
@@ -80,7 +80,11 @@
 
         @Override
         protected String eeUri(final String uri) {
-            return "http://xmlns.jcp.org/xml/ns/persistence".equals(uri) ? "http://java.sun.com/xml/ns/persistence": uri;
+            // there should not be any other namespace, but let's see if we can match all of them
+            // http://java.sun.com/xml/ns/persistence
+            // http://xmlns.jcp.org/xml/ns/persistence
+            // https://jakarta.ee/xml/ns/persistence
+            return uri != null && uri.contains("/persistence") ? PERSISTENCE_SCHEMA: uri;
         }
 
         @Override
diff --git a/container/openejb-jee/src/test/java/org/apache/openejb/jee/jpa/PersistenceXmlTest.java b/container/openejb-jee/src/test/java/org/apache/openejb/jee/jpa/PersistenceXmlTest.java
index cc0dc4f..2d1d317 100644
--- a/container/openejb-jee/src/test/java/org/apache/openejb/jee/jpa/PersistenceXmlTest.java
+++ b/container/openejb-jee/src/test/java/org/apache/openejb/jee/jpa/PersistenceXmlTest.java
@@ -20,6 +20,7 @@
 
 import junit.framework.TestCase;
 import org.apache.openejb.jee.JAXBContextFactory;
+import org.apache.openejb.jee.jpa.unit.JaxbPersistenceFactory;
 import org.apache.openejb.jee.jpa.unit.Persistence;
 import org.custommonkey.xmlunit.Diff;
 import org.custommonkey.xmlunit.ElementNameAndAttributeQualifier;
@@ -97,6 +98,41 @@
         assertTrue("Files are similar " + myDiff, myDiff.similar());
     }
 
+    public void testPersistenceJakarta() throws Exception {
+
+        // make sure we can still parse previous versions
+        {
+            final URL resource = this.getClass().getClassLoader().getResource("persistence_2.0-example.xml");
+            final InputStream in = resource.openStream();
+
+            final Persistence element = JaxbPersistenceFactory.getPersistence(Persistence.class, in);
+
+            assertNotNull(element);
+            System.out.println("unmarshalled " + element);
+        }
+        {
+            final URL resource = this.getClass().getClassLoader().getResource("persistence-example.xml");
+            final InputStream in = resource.openStream();
+
+            final Persistence element = JaxbPersistenceFactory.getPersistence(Persistence.class, in);
+
+            assertNotNull(element);
+            System.out.println("unmarshalled " + element);
+        }
+
+        // try new jakarta namespace
+        {
+            final URL resource = this.getClass().getClassLoader().getResource("persistence_2.0-jakarta.xml");
+            final InputStream in = resource.openStream();
+
+            final Persistence element = JaxbPersistenceFactory.getPersistence(Persistence.class, in);
+
+            assertNotNull(element);
+            System.out.println("unmarshalled " + element);
+        }
+
+    }
+
     private java.lang.String readContent(InputStream in) throws IOException {
         final StringBuilder sb = new StringBuilder();
         in = new BufferedInputStream(in);
diff --git a/container/openejb-jee/src/test/resources/persistence_2.0-jakarta.xml b/container/openejb-jee/src/test/resources/persistence_2.0-jakarta.xml
new file mode 100644
index 0000000..04f1240
--- /dev/null
+++ b/container/openejb-jee/src/test/resources/persistence_2.0-jakarta.xml
@@ -0,0 +1,63 @@
+<?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.
+-->
+
+<!-- $Rev$ -->
+<persistence xmlns="https://jakarta.ee/xml/ns/persistence"
+             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+             xsi:schemaLocation="https://jakarta.ee/xml/ns/persistence     https://jakarta.ee/xml/ns/persistence/persistence_3_0.xsd" version="3.0">
+
+    <persistence-unit transaction-type="JTA" name="foo">
+        <description>description</description>
+        <provider>org.acme.Provider</provider>
+        <jta-data-source>jtadatasource</jta-data-source>
+        <non-jta-data-source>nonjtadatasource</non-jta-data-source>
+        <mapping-file>mappingfile1</mapping-file>
+        <mapping-file>mappingfile2</mapping-file>
+        <jar-file>jarfile1</jar-file>
+        <jar-file>jarfile2</jar-file>
+        <class>org.acme.Person</class>
+        <class>org.acme.Animal</class>
+        <exclude-unlisted-classes>true</exclude-unlisted-classes>
+        <shared-cache-mode>ALL</shared-cache-mode>
+        <validation-mode>AUTO</validation-mode>
+        <properties>
+            <property value="rab" name="bar"/>
+            <property value="zab" name="baz"/>
+            <property value="oof" name="foo"/>
+        </properties>
+    </persistence-unit>
+    <persistence-unit transaction-type="RESOURCE_LOCAL" name="bar">
+        <description>description2</description>
+        <provider>org.acme.Provider2</provider>
+        <jta-data-source>jtadatasource2</jta-data-source>
+        <non-jta-data-source>nonjtadatasource2</non-jta-data-source>
+        <mapping-file>mappingfile12</mapping-file>
+        <mapping-file>mappingfile22</mapping-file>
+        <jar-file>jarfile12</jar-file>
+        <jar-file>jarfile22</jar-file>
+        <class>org.acme.Person2</class>
+        <class>org.acme.Animal2</class>
+        <exclude-unlisted-classes>true</exclude-unlisted-classes>
+        <properties>
+            <property value="rab2" name="bar2"/>
+            <property value="oof2" name="foo2"/>
+            <property value="zab2" name="baz2"/>
+        </properties>
+    </persistence-unit>
+</persistence>
diff --git a/container/openejb-jpa-integration/pom.xml b/container/openejb-jpa-integration/pom.xml
index 52ba913..0f207ca 100644
--- a/container/openejb-jpa-integration/pom.xml
+++ b/container/openejb-jpa-integration/pom.xml
@@ -21,7 +21,7 @@
   <parent>
     <artifactId>container</artifactId>
     <groupId>org.apache.tomee</groupId>
-    <version>8.0.6-SNAPSHOT</version>
+    <version>8.0.7-SNAPSHOT</version>
   </parent>
   <modelVersion>4.0.0</modelVersion>
 
diff --git a/container/openejb-junit/pom.xml b/container/openejb-junit/pom.xml
index 4b43dea..d9d15d1 100644
--- a/container/openejb-junit/pom.xml
+++ b/container/openejb-junit/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <artifactId>container</artifactId>
     <groupId>org.apache.tomee</groupId>
-    <version>8.0.6-SNAPSHOT</version>
+    <version>8.0.7-SNAPSHOT</version>
   </parent>
 
   <modelVersion>4.0.0</modelVersion>
diff --git a/container/openejb-junit/src/main/java/org/apache/openejb/junit/context/OpenEjbTestContext.java b/container/openejb-junit/src/main/java/org/apache/openejb/junit/context/OpenEjbTestContext.java
index 8242d06..28b5728 100644
--- a/container/openejb-junit/src/main/java/org/apache/openejb/junit/context/OpenEjbTestContext.java
+++ b/container/openejb-junit/src/main/java/org/apache/openejb/junit/context/OpenEjbTestContext.java
@@ -136,7 +136,9 @@
     @Override
     public void close() {
         try {
-            initialContext.close();
+            if(initialContext != null) {
+                initialContext.close();
+            }
         } catch (final NamingException e) {
             // ignored
         }
diff --git a/container/openejb-junit5-backward/LICENSE b/container/openejb-junit5-backward/LICENSE
new file mode 100644
index 0000000..10d7a73
--- /dev/null
+++ b/container/openejb-junit5-backward/LICENSE
@@ -0,0 +1,417 @@
+
+                                 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.
+=================================================================================
+JUnit
+
+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. 
+
diff --git a/container/openejb-junit5-backward/NOTICE b/container/openejb-junit5-backward/NOTICE
new file mode 100644
index 0000000..a9f2f42
--- /dev/null
+++ b/container/openejb-junit5-backward/NOTICE
@@ -0,0 +1,9 @@
+
+Apache OpenEJB
+Copyright 1999-2014 The Apache OpenEJB development community
+
+This product includes software developed at
+The Apache Software Foundation (http://www.apache.org/).
+==========================================================
+junit - JUnit is a simple framework to write repeatable tests (http://junit.org/)
+License: Eclipse Public License - v 1.0
diff --git a/container/openejb-junit5-backward/pom.xml b/container/openejb-junit5-backward/pom.xml
new file mode 100644
index 0000000..bdd326a
--- /dev/null
+++ b/container/openejb-junit5-backward/pom.xml
@@ -0,0 +1,78 @@
+<?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.
+-->
+<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">
+    <parent>
+        <artifactId>container</artifactId>
+        <groupId>org.apache.tomee</groupId>
+        <version>8.0.7-SNAPSHOT</version>
+    </parent>
+    <modelVersion>4.0.0</modelVersion>
+
+    <artifactId>openejb-junit5-backward</artifactId>
+    <packaging>jar</packaging>
+    <name>TomEE :: Container :: JUnit 5 :: Backward Compatibility</name>
+
+    <dependencies>
+        <dependency>
+            <groupId>org.junit.jupiter</groupId>
+            <artifactId>junit-jupiter-api</artifactId>
+            <version>${junit.jupiter.version}</version>
+            <scope>provided</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.junit.jupiter</groupId>
+            <artifactId>junit-jupiter-engine</artifactId>
+            <version>${junit.jupiter.version}</version>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>${project.groupId}</groupId>
+            <artifactId>openejb-core</artifactId>
+            <version>${project.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>${project.groupId}</groupId>
+            <artifactId>openejb-junit</artifactId>
+            <version>${project.version}</version>
+            <exclusions>
+                <!--Important: We do not want to include transient JUnit4 dependency here! -->
+                <exclusion>
+                    <groupId>junit</groupId>
+                    <artifactId>junit</artifactId>
+                </exclusion>
+            </exclusions>
+        </dependency>
+    </dependencies>
+    <properties>
+        <tomee.build.name>${project.groupId}.container.junit5</tomee.build.name>
+        <netbeans.hint.license>openejb</netbeans.hint.license>
+    </properties>
+
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-surefire-plugin</artifactId>
+                <version>${surefire.junit5.version}</version>
+            </plugin>
+        </plugins>
+    </build>
+</project>
\ No newline at end of file
diff --git a/container/openejb-junit5-backward/src/main/java/org/apache/openejb/junit5/OpenEjbExtension.java b/container/openejb-junit5-backward/src/main/java/org/apache/openejb/junit5/OpenEjbExtension.java
new file mode 100644
index 0000000..0cd2efc
--- /dev/null
+++ b/container/openejb-junit5-backward/src/main/java/org/apache/openejb/junit5/OpenEjbExtension.java
@@ -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.
+ */
+package org.apache.openejb.junit5;
+
+import org.apache.openejb.junit.context.OpenEjbTestContext;
+import org.junit.jupiter.api.extension.AfterEachCallback;
+import org.junit.jupiter.api.extension.BeforeEachCallback;
+import org.junit.jupiter.api.extension.ExtensionContext;
+
+public class OpenEjbExtension implements BeforeEachCallback, AfterEachCallback {
+
+    private final String role;
+    private OpenEjbTestContext classTestContext;
+
+    public OpenEjbExtension() {
+        this(null);
+    }
+
+    public OpenEjbExtension(String role) {
+        this.role = role;
+    }
+
+    @Override
+    public void beforeEach(ExtensionContext extensionContext) throws Exception {
+        classTestContext = newTestContext(extensionContext, role);
+        classTestContext.configureTest(extensionContext.getTestInstance().get());
+    }
+
+    public OpenEjbTestContext newTestContext(ExtensionContext extensionContext, final String roleName) {
+        if (!extensionContext.getTestMethod().isPresent()) {
+            if (classTestContext == null) {
+                classTestContext = new OpenEjbTestContext(extensionContext.getTestClass().get());
+            }
+            return classTestContext;
+        } else {
+            return new OpenEjbTestContext(extensionContext.getTestMethod().get(), roleName);
+        }
+    }
+
+
+    @Override
+    public void afterEach(ExtensionContext extensionContext) throws Exception {
+        if (classTestContext != null) {
+            classTestContext.close();
+        }
+    }
+}
diff --git a/container/openejb-junit5-backward/src/main/java/org/apache/openejb/junit5/RunWithEjbContainer.java b/container/openejb-junit5-backward/src/main/java/org/apache/openejb/junit5/RunWithEjbContainer.java
new file mode 100644
index 0000000..0d0c6c9
--- /dev/null
+++ b/container/openejb-junit5-backward/src/main/java/org/apache/openejb/junit5/RunWithEjbContainer.java
@@ -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.
+ */
+package org.apache.openejb.junit5;
+
+import org.apache.openejb.junit5.jee.EjbContainerExtension;
+import org.apache.openejb.junit5.jee.transaction.TransactionExtension;
+import org.junit.jupiter.api.extension.ExtendWith;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+@Retention(RetentionPolicy.RUNTIME)
+@ExtendWith(EjbContainerExtension.class)
+@ExtendWith(TransactionExtension.class)
+@Target(ElementType.TYPE)
+public @interface RunWithEjbContainer  {
+}
diff --git a/container/openejb-junit5-backward/src/main/java/org/apache/openejb/junit5/RunWithOpenEjb.java b/container/openejb-junit5-backward/src/main/java/org/apache/openejb/junit5/RunWithOpenEjb.java
new file mode 100644
index 0000000..d340f62
--- /dev/null
+++ b/container/openejb-junit5-backward/src/main/java/org/apache/openejb/junit5/RunWithOpenEjb.java
@@ -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.
+ */
+package org.apache.openejb.junit5;
+
+import org.junit.jupiter.api.extension.ExtendWith;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+@Retention(RetentionPolicy.RUNTIME)
+@ExtendWith(OpenEjbExtension.class)
+@Target(ElementType.TYPE)
+public @interface RunWithOpenEjb {
+}
diff --git a/container/openejb-junit5-backward/src/main/java/org/apache/openejb/junit5/jee/EjbContainerExtension.java b/container/openejb-junit5-backward/src/main/java/org/apache/openejb/junit5/jee/EjbContainerExtension.java
new file mode 100644
index 0000000..13bd310
--- /dev/null
+++ b/container/openejb-junit5-backward/src/main/java/org/apache/openejb/junit5/jee/EjbContainerExtension.java
@@ -0,0 +1,170 @@
+/**
+ * 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.
+ */
+package org.apache.openejb.junit5.jee;
+
+import org.apache.openejb.Injector;
+import org.apache.openejb.OpenEJBException;
+import org.apache.openejb.OpenEjbContainer;
+import org.apache.openejb.injection.FallbackPropertyInjector;
+import org.apache.openejb.junit.jee.config.Properties;
+import org.apache.openejb.junit.jee.config.Property;
+import org.apache.openejb.junit.jee.config.PropertyFile;
+import org.apache.openejb.junit.jee.resources.TestResource;
+import org.apache.openejb.loader.SystemInstance;
+import org.apache.openejb.osgi.client.LocalInitialContextFactory;
+import org.apache.openejb.testing.TestInstance;
+import org.apache.openejb.util.Classes;
+import org.junit.jupiter.api.extension.*;
+
+import javax.ejb.embeddable.EJBContainer;
+import javax.naming.Context;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.InputStream;
+import java.lang.reflect.Field;
+import java.lang.reflect.Modifier;
+import java.util.Hashtable;
+import java.util.Optional;
+
+public class EjbContainerExtension implements AfterAllCallback, BeforeAllCallback, BeforeEachCallback {
+
+    private java.util.Properties properties;
+    private EJBContainer container;
+
+    @Override
+    public void beforeAll(ExtensionContext extensionContext) throws Exception {
+
+        Optional<Class<?>> oClazz = extensionContext.getTestClass();
+
+        if (!oClazz.isPresent()) {
+            throw new RuntimeException("Could not get class from extension context");
+        }
+        Class<?> clazz = oClazz.get();
+
+        properties = new java.util.Properties();
+
+        { // set caller first to let it be overridable by @Property
+            final StringBuilder b = new StringBuilder();
+            for (final Class<?> c : Classes.ancestors(clazz)) {
+                if (c != Object.class) {
+                    b.append(c.getName()).append(",");
+                }
+            }
+            b.setLength(b.length() - 1);
+            properties.put(OpenEjbContainer.Provider.OPENEJB_ADDITIONNAL_CALLERS_KEY, b.toString());
+        }
+
+        // default implicit config
+        {
+            try (final InputStream is = clazz.getClassLoader().getResourceAsStream("openejb-junit.properties")) {
+                if (is != null) {
+                    properties.load(is);
+                }
+            }
+        }
+
+        final PropertyFile propertyFile = clazz.getAnnotation(PropertyFile.class);
+        if (propertyFile != null) {
+            final String path = propertyFile.value();
+            if (!path.isEmpty()) {
+                InputStream is = null;
+                try {
+                    is = clazz.getClassLoader().getResourceAsStream(path);
+                    if (is == null) {
+                        final File file = new File(path);
+                        if (file.exists()) {
+                            is = new FileInputStream(file);
+                        } else {
+                            throw new OpenEJBException("properties resource '" + path + "' not found");
+                        }
+                    }
+
+                    properties.load(is);
+                } finally {
+                    if (is != null) {
+                        is.close();
+                    }
+                }
+
+            }
+        }
+
+        final Properties annotationConfig = clazz.getAnnotation(Properties.class);
+        if (annotationConfig != null) {
+            for (final Property property : annotationConfig.value()) {
+                properties.put(property.key(), property.value());
+            }
+        }
+
+        if (!properties.containsKey(Context.INITIAL_CONTEXT_FACTORY)) {
+            properties.setProperty(Context.INITIAL_CONTEXT_FACTORY, LocalInitialContextFactory.class.getName());
+        }
+
+        container = EJBContainer.createEJBContainer(properties);
+    }
+
+    @Override
+    public void beforeEach(ExtensionContext extensionContext) throws Exception {
+        Class<?> clazz = extensionContext.getTestClass().isPresent()  ? extensionContext.getTestClass().get() : null;
+        Object test =  extensionContext.getTestInstance().isPresent() ? extensionContext.getTestInstance().get() : null;
+
+        if (clazz != null){
+
+            while (!Object.class.equals(clazz)) {
+                for (final Field field : clazz.getDeclaredFields()) {
+                    final TestResource resource = field.getAnnotation(TestResource.class);
+                    if (resource != null) {
+                        if (Context.class.isAssignableFrom(field.getType())) {
+                            field.setAccessible(true);
+                            field.set(Modifier.isStatic(field.getModifiers()) ? null : test, getContainer().getContext());
+                        } else if (Hashtable.class.isAssignableFrom(field.getType())) {
+                            field.setAccessible(true);
+                            field.set(Modifier.isStatic(field.getModifiers()) ? null : test, getProperties());
+                        } else if (EJBContainer.class.isAssignableFrom(field.getType())) {
+                            field.setAccessible(true);
+                            field.set(Modifier.isStatic(field.getModifiers()) ? null : test, getContainer());
+                        } else {
+                            throw new OpenEJBException("can't inject field '" + field.getName() + "'");
+                        }
+                    }
+                }
+                clazz = clazz.getSuperclass();
+            }
+        }
+
+        if (test != null) {
+            SystemInstance.get().setComponent(TestInstance.class, new TestInstance(test.getClass(), test));
+            SystemInstance.get().getComponent(FallbackPropertyInjector.class); // force eager init (MockitoInjector initialize everything in its constructor)
+            Injector.inject(test);
+        }
+    }
+
+    @Override
+    public void afterAll(ExtensionContext extensionContext) throws Exception {
+        if (container != null) {
+            container.close();
+        }
+    }
+
+    public java.util.Properties getProperties() {
+        return properties;
+    }
+
+    public EJBContainer getContainer() {
+        return container;
+    }
+}
diff --git a/container/openejb-junit5-backward/src/main/java/org/apache/openejb/junit5/jee/transaction/TransactionExtension.java b/container/openejb-junit5-backward/src/main/java/org/apache/openejb/junit5/jee/transaction/TransactionExtension.java
new file mode 100644
index 0000000..369f176
--- /dev/null
+++ b/container/openejb-junit5-backward/src/main/java/org/apache/openejb/junit5/jee/transaction/TransactionExtension.java
@@ -0,0 +1,45 @@
+/**
+ * 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.
+ */
+package org.apache.openejb.junit5.jee.transaction;
+
+import org.apache.openejb.core.transaction.JtaTransactionPolicyFactory;
+import org.apache.openejb.core.transaction.TransactionPolicy;
+import org.apache.openejb.core.transaction.TransactionType;
+import org.apache.openejb.junit.jee.transaction.Transaction;
+import org.apache.openejb.loader.SystemInstance;
+import org.junit.jupiter.api.extension.*;
+
+import javax.transaction.TransactionManager;
+import java.lang.reflect.Method;
+
+public class TransactionExtension implements AfterTestExecutionCallback {
+
+    @Override
+    public void afterTestExecution(ExtensionContext extensionContext) throws Exception {
+        final Method mtd = extensionContext.getTestMethod().get();
+        final Transaction tx = mtd.getAnnotation(Transaction.class);
+        if (tx != null) {
+            final TransactionManager transactionManager = SystemInstance.get().getComponent(TransactionManager.class);
+            final JtaTransactionPolicyFactory factory = new JtaTransactionPolicyFactory(transactionManager);
+            final TransactionPolicy policy = factory.createTransactionPolicy(TransactionType.RequiresNew);
+            if (tx.rollback()) {
+                policy.setRollbackOnly();
+            }
+            policy.commit();
+        }
+    }
+}
diff --git a/container/openejb-junit5-backward/src/main/java/org/apache/openejb/junit5/security/RunWithOpenEjbTestSecurity.java b/container/openejb-junit5-backward/src/main/java/org/apache/openejb/junit5/security/RunWithOpenEjbTestSecurity.java
new file mode 100644
index 0000000..2d1efb4
--- /dev/null
+++ b/container/openejb-junit5-backward/src/main/java/org/apache/openejb/junit5/security/RunWithOpenEjbTestSecurity.java
@@ -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.
+ */
+package org.apache.openejb.junit5.security;
+
+import org.junit.jupiter.api.extension.ExtendWith;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+@Retention(RetentionPolicy.RUNTIME)
+@ExtendWith(TestSecurityTemplateInvocationContextProvider.class)
+@Target(ElementType.TYPE)
+public @interface RunWithOpenEjbTestSecurity {
+}
diff --git a/container/openejb-junit5-backward/src/main/java/org/apache/openejb/junit5/security/TestSecurityTemplateInvocationContextProvider.java b/container/openejb-junit5-backward/src/main/java/org/apache/openejb/junit5/security/TestSecurityTemplateInvocationContextProvider.java
new file mode 100644
index 0000000..66ba44e
--- /dev/null
+++ b/container/openejb-junit5-backward/src/main/java/org/apache/openejb/junit5/security/TestSecurityTemplateInvocationContextProvider.java
@@ -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.
+ */
+package org.apache.openejb.junit5.security;
+
+import org.apache.openejb.junit.TestSecurity;
+import org.apache.openejb.junit5.OpenEjbExtension;
+import org.junit.jupiter.api.extension.*;
+
+import javax.ejb.EJBAccessException;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+import java.util.stream.Stream;
+
+public class TestSecurityTemplateInvocationContextProvider implements TestTemplateInvocationContextProvider {
+    @Override
+    public boolean supportsTestTemplate(ExtensionContext extensionContext) {
+        return true;
+    }
+
+    @Override
+    public Stream<TestTemplateInvocationContext> provideTestTemplateInvocationContexts(ExtensionContext extensionContext) {
+
+        TestSecurity testSecurity = null;
+        if (extensionContext.getTestMethod().isPresent() && extensionContext.getTestMethod().get().isAnnotationPresent(TestSecurity.class)) {
+            testSecurity = extensionContext.getTestMethod().get().getAnnotation(TestSecurity.class);
+        } else if (extensionContext.getTestClass().isPresent() && extensionContext.getTestClass().get().isAnnotationPresent(TestSecurity.class)) {
+            testSecurity = extensionContext.getTestClass().get().getAnnotation(TestSecurity.class);
+        }
+
+        if (testSecurity != null) {
+            String[] authorized = testSecurity.authorized();
+            String[] unauthorized = testSecurity.unauthorized();
+
+            List<TestTemplateInvocationContext> contexts = new ArrayList<>();
+
+            for (String role : authorized) {
+                contexts.add(invocationContext(role, true));
+            }
+            for (String role : unauthorized) {
+                contexts.add(invocationContext(role, false));
+            }
+
+            return contexts.stream();
+        } else {
+            //no security annotations present, go with the default invocation context
+
+
+           return Stream.of(new TestTemplateInvocationContext() {
+               @Override
+               public List<Extension> getAdditionalExtensions() {
+                   return Collections.singletonList(new OpenEjbExtension());
+               }
+           });
+        }
+
+    }
+
+
+    private TestTemplateInvocationContext invocationContext(String role, boolean authorized) {
+        return new TestTemplateInvocationContext() {
+
+            private boolean ejbAccessThrown = false;
+
+            @Override
+            public String getDisplayName(int invocationIndex) {
+                if(role.equals(TestSecurity.UNAUTHENTICATED)) {
+                    return "unauthenticated";
+                }
+                return role;
+            }
+
+            @Override
+            public List<Extension> getAdditionalExtensions() {
+                List<Extension> extensions = new ArrayList<>();
+
+                extensions.add(new TestExecutionExceptionHandler() {
+                    @Override
+                    public void handleTestExecutionException(ExtensionContext extensionContext, Throwable throwable) throws Throwable {
+                        if (!authorized) {
+                            if (throwable instanceof EJBAccessException) {
+                                //ok - this would be expected here, do not fail the test!
+                                ejbAccessThrown = true;
+                                return;
+                            } else {
+                                throw throwable;
+                            }
+                        }
+                        throw throwable;
+                    }
+                });
+
+                extensions.add(new AfterEachCallback() {
+                    @Override
+                    public void afterEach(ExtensionContext extensionContext) throws Exception {
+                        if (!authorized) {
+                            if (!ejbAccessThrown) {
+                                throw new RuntimeException("Expected 'EJBAccessException' but caught none.");
+                            }
+                        }
+                    }
+                });
+
+                extensions.add(new OpenEjbExtension(role));
+
+                return extensions;
+
+
+
+            }
+        };
+    }
+}
\ No newline at end of file
diff --git a/container/openejb-junit5-backward/src/main/resources/META-INF/default-openejb-test-config.properties b/container/openejb-junit5-backward/src/main/resources/META-INF/default-openejb-test-config.properties
new file mode 100644
index 0000000..d5afb6a
--- /dev/null
+++ b/container/openejb-junit5-backward/src/main/resources/META-INF/default-openejb-test-config.properties
@@ -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.
+#
+java.naming.factory.initial=org.apache.openejb.core.LocalInitialContextFactory
+org.apache.openejb.junit.default-config=true
\ No newline at end of file
diff --git a/container/openejb-junit5-backward/src/main/resources/META-INF/openejb-test-login.config b/container/openejb-junit5-backward/src/main/resources/META-INF/openejb-test-login.config
new file mode 100644
index 0000000..e8624b0
--- /dev/null
+++ b/container/openejb-junit5-backward/src/main/resources/META-INF/openejb-test-login.config
@@ -0,0 +1,3 @@
+OpenEjbJunitSecurityRealm {
+    org.apache.openejb.junit.security.TestLoginModule required;
+};
diff --git a/container/openejb-junit5-backward/src/test/java/org/apache/openejb/junit5/TestClassConfigFile.java b/container/openejb-junit5-backward/src/test/java/org/apache/openejb/junit5/TestClassConfigFile.java
new file mode 100644
index 0000000..7df2c1a
--- /dev/null
+++ b/container/openejb-junit5-backward/src/test/java/org/apache/openejb/junit5/TestClassConfigFile.java
@@ -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.
+ */
+
+package org.apache.openejb.junit5;
+
+import org.apache.openejb.junit.ContextConfig;
+import org.apache.openejb.junit.TestResource;
+import org.apache.openejb.junit.TestResourceTypes;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.ExtendWith;
+
+import java.util.Hashtable;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertNotNull;
+
+
+@RunWithOpenEjb
+@ContextConfig(
+    configFile = "/META-INF/test-config.properties"
+)
+public class TestClassConfigFile {
+    @TestResource(TestResourceTypes.CONTEXT_CONFIG)
+    private Hashtable<String, String> contextConfig;
+
+    public TestClassConfigFile() {
+    }
+
+    @Test
+    public void testConfig() {
+        assertNotNull(contextConfig);
+
+        checkProperty("junit.test-property", "Test String");
+    }
+
+    private void checkProperty(final String key, final String expected) {
+        final String value = contextConfig.get(key);
+        assertEquals(expected, value);
+    }
+}
diff --git a/container/openejb-junit5-backward/src/test/java/org/apache/openejb/junit5/TestClassConfigFileAndProperties.java b/container/openejb-junit5-backward/src/test/java/org/apache/openejb/junit5/TestClassConfigFileAndProperties.java
new file mode 100644
index 0000000..5f168bb
--- /dev/null
+++ b/container/openejb-junit5-backward/src/test/java/org/apache/openejb/junit5/TestClassConfigFileAndProperties.java
@@ -0,0 +1,62 @@
+/**
+ * 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.
+ */
+
+package org.apache.openejb.junit5;
+
+import org.apache.openejb.junit.ContextConfig;
+import org.apache.openejb.junit.Property;
+import org.apache.openejb.junit.TestResource;
+import org.apache.openejb.junit.TestResourceTypes;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.ExtendWith;
+
+import java.util.Hashtable;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertNotNull;
+
+@RunWithOpenEjb
+@ContextConfig(
+    configFile = "/META-INF/test-config.properties",
+    properties = {
+        @Property("junit.test-property-override=New Value"),
+        @Property("junit.test-property-file-untrimmed=New Trimmed Value"),
+        @Property(" junit.test-property-file-trimmed = New Untrimmed Value ")
+    }
+)
+public class TestClassConfigFileAndProperties {
+    @TestResource(TestResourceTypes.CONTEXT_CONFIG)
+    private Hashtable<String, String> contextConfig;
+
+    public TestClassConfigFileAndProperties() {
+    }
+
+    @Test
+    public void testConfig() {
+        assertNotNull(contextConfig);
+
+        checkProperty("junit.test-property", "Test String");
+        checkProperty("junit.test-property-override", "New Value");
+        checkProperty("junit.test-property-file-untrimmed", "New Trimmed Value");
+        checkProperty("junit.test-property-file-trimmed", "New Untrimmed Value");
+    }
+
+    private void checkProperty(final String key, final String expected) {
+        final String value = contextConfig.get(key);
+        assertEquals(expected, value);
+    }
+}
diff --git a/container/openejb-junit5-backward/src/test/java/org/apache/openejb/junit5/TestClassConfigProperties.java b/container/openejb-junit5-backward/src/test/java/org/apache/openejb/junit5/TestClassConfigProperties.java
new file mode 100644
index 0000000..dbf469e
--- /dev/null
+++ b/container/openejb-junit5-backward/src/test/java/org/apache/openejb/junit5/TestClassConfigProperties.java
@@ -0,0 +1,67 @@
+/**
+ * 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.
+ */
+
+package org.apache.openejb.junit5;
+
+import org.apache.openejb.junit.ContextConfig;
+import org.apache.openejb.junit.Property;
+import org.apache.openejb.junit.TestResource;
+import org.apache.openejb.junit.TestResourceTypes;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.ExtendWith;
+
+import java.util.Hashtable;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertNotNull;
+
+@RunWithOpenEjb
+@ContextConfig(
+    properties = {
+        @Property("java.naming.factory.initial=org.apache.openejb.core.LocalInitialContextFactory"),
+        @Property("junit.test-property=Test String from Properties"),
+        @Property("junit.test-empty-property="),
+        @Property("junit.test-null-property"),
+        @Property(" junit.test-trim-empty-property-key = "),
+        @Property(" junit.test-trim-null-property-key "),
+        @Property(" junit.test-trim-property-key-and-value = trimmed value ")
+    }
+)
+public class TestClassConfigProperties {
+    @TestResource(TestResourceTypes.CONTEXT_CONFIG)
+    private Hashtable<String, String> contextConfig;
+
+    public TestClassConfigProperties() {
+    }
+
+    @Test
+    public void testConfig() {
+        assertNotNull(contextConfig);
+
+        checkProperty("junit.test-property", "Test String from Properties");
+        checkProperty("junit.test-empty-property", "");
+        checkProperty("junit.test-null-property", "");
+        checkProperty("junit.test-trim-empty-property-key", "");
+        checkProperty("junit.test-trim-null-property-key", "");
+        checkProperty("junit.test-trim-property-key-and-value", "trimmed value");
+    }
+
+    private void checkProperty(final String key, final String expected) {
+        final String value = contextConfig.get(key);
+        assertEquals(expected, value);
+    }
+}
diff --git a/container/openejb-junit5-backward/src/test/java/org/apache/openejb/junit5/TestDualConfigOverride.java b/container/openejb-junit5-backward/src/test/java/org/apache/openejb/junit5/TestDualConfigOverride.java
new file mode 100644
index 0000000..fe3de35
--- /dev/null
+++ b/container/openejb-junit5-backward/src/test/java/org/apache/openejb/junit5/TestDualConfigOverride.java
@@ -0,0 +1,119 @@
+/**
+ * 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.
+ */
+
+package org.apache.openejb.junit5;
+
+import org.apache.openejb.junit.ContextConfig;
+import org.apache.openejb.junit.Property;
+import org.apache.openejb.junit.TestResource;
+import org.apache.openejb.junit.TestResourceTypes;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.ExtendWith;
+
+import java.util.Hashtable;
+
+import static org.junit.jupiter.api.Assertions.*;
+
+
+/**
+ * Here we test class level dual config, with method level overrides. We check some
+ * properties in all tests (even when not in it's config), to ensure overrides work
+ * properly, and also that context sharing doesn't happen.
+ */
+@RunWithOpenEjb
+@ContextConfig(
+    configFile = "/META-INF/test-config.properties",
+    properties = {
+        @Property("junit.test-property-override=New Class Property Value")
+    }
+)
+public class TestDualConfigOverride {
+    @TestResource(TestResourceTypes.CONTEXT_CONFIG)
+    private Hashtable<String, String> contextConfig;
+
+    public TestDualConfigOverride() {
+    }
+
+    @Test
+    public void testClassConfig() {
+        assertNotNull(contextConfig);
+
+        checkProperty("junit.test-property", "Test String");
+        checkProperty("junit.test-property-override", "New Class Property Value");
+        checkProperty("junit.test-property-override2", "Original Value 2");
+        checkProperty("junit.test-property-override3", "Original Value 3");
+        assertNull(contextConfig.get("junit.test-new-method-file-property"));
+        assertNull(contextConfig.get("junit.test-new-method-property"));
+    }
+
+    @Test
+    @ContextConfig(
+        configFile = "/META-INF/test-config-method.properties"
+    )
+    public void testMethodFileOverride() {
+        assertNotNull(contextConfig);
+
+        checkProperty("junit.test-property", "Test String");
+        checkProperty("junit.test-property-override", "New Class Property Value");
+        checkProperty("junit.test-property-override2", "New Method File Value 2");
+        checkProperty("junit.test-property-override3", "Original Value 3");
+        checkProperty("junit.test-new-method-file-property", "New Method Value");
+        assertNull(contextConfig.get("junit.test-new-method-property"));
+    }
+
+    @Test
+    @ContextConfig(
+        properties = {
+            @Property("junit.test-property-override3=New Method Property Value 3"),
+            @Property("junit.test-new-method-property=New Method Property Value")
+        }
+    )
+    public void testMethodPropertiesOverride() {
+        assertNotNull(contextConfig);
+
+        checkProperty("junit.test-property", "Test String");
+        checkProperty("junit.test-property-override", "New Class Property Value");
+        checkProperty("junit.test-property-override2", "Original Value 2");
+        checkProperty("junit.test-property-override3", "New Method Property Value 3");
+        checkProperty("junit.test-new-method-property", "New Method Property Value");
+        assertNull(contextConfig.get("junit.test-new-method-file-property"));
+    }
+
+    @Test
+    @ContextConfig(
+        configFile = "/META-INF/test-config-method.properties",
+        properties = {
+            @Property("junit.test-property-override2=New Method Property Value 2"),
+            @Property("junit.test-new-method-property=New Method Property Value")
+        }
+    )
+    public void testMethodDualOverride() {
+        assertNotNull(contextConfig);
+
+        checkProperty("junit.test-property", "Test String");
+        checkProperty("junit.test-property-override", "New Class Property Value");
+        checkProperty("junit.test-property-override2", "New Method Property Value 2");
+        checkProperty("junit.test-property-override3", "Original Value 3");
+        checkProperty("junit.test-new-method-file-property", "New Method Value");
+        checkProperty("junit.test-new-method-property", "New Method Property Value");
+    }
+
+    private void checkProperty(final String key, final String expected) {
+        final String value = contextConfig.get(key);
+        assertEquals(expected, value);
+    }
+}
diff --git a/container/openejb-junit5-backward/src/test/java/org/apache/openejb/junit5/TestEJBContainerExtensionDefaultConfig.java b/container/openejb-junit5-backward/src/test/java/org/apache/openejb/junit5/TestEJBContainerExtensionDefaultConfig.java
new file mode 100644
index 0000000..fb2b31b
--- /dev/null
+++ b/container/openejb-junit5-backward/src/test/java/org/apache/openejb/junit5/TestEJBContainerExtensionDefaultConfig.java
@@ -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.
+ */
+package org.apache.openejb.junit5;
+
+import org.apache.openejb.config.DeploymentFilterable;
+import org.apache.openejb.junit.jee.config.Properties;
+import org.apache.openejb.junit.jee.config.Property;
+import org.junit.jupiter.api.Test;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
+
+@Properties({
+    @Property(key = DeploymentFilterable.CLASSPATH_EXCLUDE, value = "jar:.*"),
+    @Property(key = DeploymentFilterable.CLASSPATH_INCLUDE, value = ".*openejb-junit5-backward.*")
+})
+@RunWithEjbContainer
+public class TestEJBContainerExtensionDefaultConfig {
+
+    @org.apache.openejb.junit.jee.resources.TestResource
+    private java.util.Properties props;
+
+    @Test
+    public void configIsHere() {
+        assertEquals("true", props.getProperty("implicit-config"));
+    }
+}
diff --git a/container/openejb-junit5-backward/src/test/java/org/apache/openejb/junit5/TestEJBContainerExtensionResources.java b/container/openejb-junit5-backward/src/test/java/org/apache/openejb/junit5/TestEJBContainerExtensionResources.java
new file mode 100644
index 0000000..d5f6ea1
--- /dev/null
+++ b/container/openejb-junit5-backward/src/test/java/org/apache/openejb/junit5/TestEJBContainerExtensionResources.java
@@ -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.
+ */
+package org.apache.openejb.junit5;
+
+import org.apache.openejb.config.DeploymentFilterable;
+import org.apache.openejb.junit.jee.config.Properties;
+import org.apache.openejb.junit.jee.config.Property;
+import org.junit.jupiter.api.Test;
+
+import javax.ejb.embeddable.EJBContainer;
+import javax.naming.Context;
+
+import static org.junit.jupiter.api.Assertions.assertNotNull;
+
+@Properties({ // just a small conf to go faster
+    @Property(key = DeploymentFilterable.CLASSPATH_EXCLUDE, value = "jar:.*"),
+    @Property(key = DeploymentFilterable.CLASSPATH_INCLUDE, value = ".*openejb-junit5-backward.*")
+})
+@RunWithEjbContainer
+public class TestEJBContainerExtensionResources {
+    @org.apache.openejb.junit.jee.resources.TestResource
+    private Context ctx;
+
+    @org.apache.openejb.junit.jee.resources.TestResource
+    private java.util.Properties props;
+
+    @org.apache.openejb.junit.jee.resources.TestResource
+    private EJBContainer container;
+
+    @Test
+    public void checkCtx() {
+        assertNotNull(ctx);
+    }
+
+    @Test
+    public void checkProps() {
+        assertNotNull(props);
+    }
+
+    @Test
+    public void checkContainer() {
+        assertNotNull(container);
+    }
+}
diff --git a/container/openejb-junit5-backward/src/test/java/org/apache/openejb/junit5/TestEJBContainerExtensionWithLocalEJB.java b/container/openejb-junit5-backward/src/test/java/org/apache/openejb/junit5/TestEJBContainerExtensionWithLocalEJB.java
new file mode 100644
index 0000000..1662976
--- /dev/null
+++ b/container/openejb-junit5-backward/src/test/java/org/apache/openejb/junit5/TestEJBContainerExtensionWithLocalEJB.java
@@ -0,0 +1,69 @@
+/**
+ * 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.
+ */
+package org.apache.openejb.junit5;
+
+import org.apache.openejb.config.DeploymentFilterable;
+import org.apache.openejb.junit.jee.config.Properties;
+import org.apache.openejb.junit.jee.config.Property;
+import org.apache.openejb.junit5.ejbs.BasicEjbLocal;
+import org.junit.jupiter.api.Test;
+
+import javax.ejb.embeddable.EJBContainer;
+import javax.inject.Inject;
+import javax.naming.Context;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertNotNull;
+
+
+@Properties({
+    @Property(key = DeploymentFilterable.CLASSPATH_EXCLUDE, value = "jar:.*"),
+    @Property(key = DeploymentFilterable.CLASSPATH_INCLUDE, value = ".*openejb-junit5-backward.*")
+})
+@RunWithEjbContainer
+public class TestEJBContainerExtensionWithLocalEJB {
+
+    @org.apache.openejb.junit.jee.resources.TestResource
+    private Context ctx;
+
+    @org.apache.openejb.junit.jee.resources.TestResource
+    private java.util.Properties props;
+
+    @org.apache.openejb.junit.jee.resources.TestResource
+    private EJBContainer container;
+
+    @Inject
+    private BasicEjbLocal ejb;
+
+    private void doChecks() {
+        assertNotNull(ctx);
+        assertNotNull(props);
+        assertNotNull(container);
+        assertNotNull(ejb);
+        assertEquals("a b", ejb.concat("a", "b"));
+    }
+
+    @Test
+    public void checkAllIsFine() {
+        doChecks();
+    }
+
+    @Test
+    public void checkAllIsStillFine() {
+        doChecks();
+    }
+}
diff --git a/container/openejb-junit5-backward/src/test/java/org/apache/openejb/junit5/TestEjbBasic.java b/container/openejb-junit5-backward/src/test/java/org/apache/openejb/junit5/TestEjbBasic.java
new file mode 100644
index 0000000..6e934fe
--- /dev/null
+++ b/container/openejb-junit5-backward/src/test/java/org/apache/openejb/junit5/TestEjbBasic.java
@@ -0,0 +1,73 @@
+/**
+ * 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.
+ */
+
+package org.apache.openejb.junit5;
+
+import org.apache.openejb.api.LocalClient;
+import org.apache.openejb.junit.ContextConfig;
+import org.apache.openejb.junit.Property;
+import org.apache.openejb.junit5.ejbs.BasicEjbLocal;
+import org.apache.openejb.junit5.jee.EjbContainerExtension;
+import org.apache.openejb.junit5.jee.transaction.TransactionExtension;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.ExtendWith;
+
+import javax.ejb.EJB;
+
+import static org.junit.jupiter.api.Assertions.*;
+
+
+@ContextConfig(properties = {
+    @Property("openejb.deployments.classpath.include=.*openejb-junit5-backward.*"),
+    @Property("java.naming.factory.initial=org.apache.openejb.core.LocalInitialContextFactory")
+})
+@RunWithOpenEjb
+@LocalClient
+public class TestEjbBasic {
+    @EJB
+    private BasicEjbLocal sampleEjb;
+
+    public TestEjbBasic() {
+    }
+
+    @Test
+    public void testEjbInjection() {
+        assertNotNull(sampleEjb);
+    }
+
+    @Test
+    public void testEjbInvocation() {
+        assertNotNull(sampleEjb);
+
+        final String object = sampleEjb.concat("Hello", "World");
+        assertEquals("Hello World", object);
+
+        final double root = sampleEjb.squareroot(81);
+        assertEquals(9, root, 0.0);
+    }
+
+    @Test
+    public void testEjbException() {
+        assertNotNull(sampleEjb);
+
+        try {
+            sampleEjb.squareroot(-1);
+            fail("Call must fail with exception.");
+        } catch (final Exception e) {
+        }
+    }
+}
diff --git a/container/openejb-junit5-backward/src/test/java/org/apache/openejb/junit5/TestEjbSecurity.java b/container/openejb-junit5-backward/src/test/java/org/apache/openejb/junit5/TestEjbSecurity.java
new file mode 100644
index 0000000..76fd7f6
--- /dev/null
+++ b/container/openejb-junit5-backward/src/test/java/org/apache/openejb/junit5/TestEjbSecurity.java
@@ -0,0 +1,198 @@
+/**
+ * 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
+ * <p>
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * <p>
+ * 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.
+ */
+
+package org.apache.openejb.junit5;
+
+import org.apache.openejb.api.LocalClient;
+import org.apache.openejb.junit.ContextConfig;
+import org.apache.openejb.junit.Property;
+import org.apache.openejb.junit.TestSecurity;
+import org.apache.openejb.junit5.ejbs.BasicEjbLocal;
+import org.apache.openejb.junit5.ejbs.SecuredEjbLocal;
+import org.apache.openejb.junit5.security.RunWithOpenEjbTestSecurity;
+import org.apache.openejb.junit5.security.TestSecurityTemplateInvocationContextProvider;
+import org.junit.jupiter.api.Disabled;
+import org.junit.jupiter.api.TestTemplate;
+import org.junit.jupiter.api.extension.ExtendWith;
+
+import javax.ejb.EJB;
+import javax.ejb.EJBAccessException;
+
+import static org.junit.jupiter.api.Assertions.*;
+
+@ContextConfig(properties = {
+        @Property("openejb.deployments.classpath.include=.*openejb-junit5-backward.*"),
+        @Property("java.naming.factory.initial=org.apache.openejb.core.LocalInitialContextFactory")
+})
+@RunWithOpenEjbTestSecurity
+@TestSecurity(
+        authorized = {"RoleA"}
+)
+@LocalClient
+public class TestEjbSecurity {
+    @EJB
+    private BasicEjbLocal basicEjb;
+
+    @EJB
+    private SecuredEjbLocal securedEjb;
+
+    public TestEjbSecurity() {
+    }
+
+    @TestTemplate
+    public void testEjbInjection() {
+        assertNotNull(basicEjb);
+        assertNotNull(securedEjb);
+    }
+
+    @TestTemplate
+    public void testClassLevelSecurity() {
+        assertNotNull(securedEjb);
+
+        assertEquals("Unsecured Works", basicEjb.concat("Unsecured", "Works"));
+        assertEquals("Dual Role Works", securedEjb.dualRole());
+        assertEquals("RoleA Works", securedEjb.roleA());
+    }
+
+    @TestTemplate
+    public void testClassLevelSecurityUnauthorized() {
+        assertThrows(EJBAccessException.class, () -> {
+            assertNotNull(securedEjb);
+            securedEjb.roleB();
+        });
+    }
+
+    @TestTemplate
+    @TestSecurity(
+            authorized = {"RoleB"}
+    )
+    public void testMethodLevelSecurity() {
+        assertNotNull(securedEjb);
+
+        assertEquals("Unsecured Works", basicEjb.concat("Unsecured", "Works"));
+        assertEquals("Dual Role Works", securedEjb.dualRole());
+        assertEquals("RoleB Works", securedEjb.roleB());
+    }
+
+    @TestTemplate
+    @TestSecurity(
+            authorized = {"RoleB"}
+    )
+    public void testMethodLevelSecurityUnauthorized() {
+        assertThrows(EJBAccessException.class, () -> {
+            assertNotNull(securedEjb);
+            securedEjb.roleA();
+        });
+    }
+
+    @TestTemplate
+    @TestSecurity(
+            authorized = {"RoleA"},
+            unauthorized = {"RoleB"}
+    )
+    public void testMultipleSecurityRoles_RoleA() {
+        assertNotNull(securedEjb);
+        securedEjb.roleA();
+    }
+
+    @TestTemplate
+    @TestSecurity(
+            authorized = {"RoleB"},
+            unauthorized = {"RoleA"}
+    )
+    public void testMultipleSecurityRoles_RoleB() {
+        assertNotNull(securedEjb);
+        securedEjb.roleB();
+    }
+
+    /**
+     * This test was created to ensure that the statements are created correctly.
+     * They are constructed in such a way as to "incorrectly" specify the annotation
+     * options, and should fail with an access exception
+     */
+    @TestTemplate
+    @TestSecurity(
+            authorized = {"RoleB"}
+    )
+    public void testRoleAFailAuthorized() {
+        assertThrows(EJBAccessException.class, () -> {
+            assertNotNull(securedEjb);
+            securedEjb.roleA();
+        });
+    }
+
+    /**
+     * This test was created to ensure that the statements are created correctly.
+     * They are constructed in such a way as to "incorrectly" specify the annotation
+     * options, and should fail with an access exception
+     */
+    @TestTemplate
+    @TestSecurity(
+            authorized = {"RoleA"}
+    )
+    public void testRoleBFailAuthorized() {
+        assertThrows(EJBAccessException.class, () -> {
+            assertNotNull(securedEjb);
+            securedEjb.roleB();
+        });
+    }
+
+    /**
+     * This test was created to ensure that the statements are created correctly.
+     * They are constructed in such a way as to "incorrectly" specify the annotation
+     * options, and should fail with an access exception
+     */
+    @Disabled(value = "TODO: How to fix this in JUnit5?")
+    @TestTemplate
+    @TestSecurity(
+            unauthorized = {"RoleA"}
+    )
+    public void testRoleAFailUnauthorized() {
+        assertThrows(AssertionError.class, () -> {
+            securedEjb.roleA();
+        });
+    }
+
+    /**
+     * This test was created to ensure that the statements are created correctly.
+     * They are constructed in such a way as to "incorrectly" specify the annotation
+     * options, and should fail with an access exception
+     */
+    @Disabled(value = "TODO: How to fix this in JUnit5?")
+    @TestTemplate
+    @TestSecurity(
+            unauthorized = {"RoleB"}
+    )
+    public void testRoleBFailUnauthorized() {
+        assertThrows(AssertionError.class, () -> {
+            securedEjb.roleB();
+        });
+    }
+
+    /**
+     * This test was created to ensure that the statements are created correctly.
+     * They are constructed in such a way as to "incorrectly" specify the annotation
+     * options, and should fail with an access exception
+     */
+    @TestTemplate
+    @TestSecurity(
+            unauthorized = {TestSecurity.UNAUTHENTICATED}
+    )
+    public void testUnauthenticated() {
+        securedEjb.roleA();
+    }
+}
diff --git a/container/openejb-junit5-backward/src/test/java/org/apache/openejb/junit5/TestEjbSecurityRunTestAs.java b/container/openejb-junit5-backward/src/test/java/org/apache/openejb/junit5/TestEjbSecurityRunTestAs.java
new file mode 100644
index 0000000..cf5b417
--- /dev/null
+++ b/container/openejb-junit5-backward/src/test/java/org/apache/openejb/junit5/TestEjbSecurityRunTestAs.java
@@ -0,0 +1,87 @@
+/*
+ * 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.
+ */
+package org.apache.openejb.junit5;
+
+import org.apache.openejb.api.LocalClient;
+import org.apache.openejb.junit.ContextConfig;
+import org.apache.openejb.junit.Property;
+import org.apache.openejb.junit.RunTestAs;
+import org.apache.openejb.junit5.ejbs.BasicEjbLocal;
+import org.apache.openejb.junit5.ejbs.SecuredEjbLocal;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.ExtendWith;
+
+import javax.ejb.EJB;
+import javax.ejb.EJBAccessException;
+
+import static org.junit.jupiter.api.Assertions.*;
+
+
+@ContextConfig(properties = {
+    @Property("openejb.deployments.classpath.include=.*openejb-junit5-backward.*"),
+    @Property("java.naming.factory.initial=org.apache.openejb.core.LocalInitialContextFactory")
+})
+@RunWithOpenEjb
+@RunTestAs("RoleA")
+@LocalClient
+public class TestEjbSecurityRunTestAs {
+    @EJB
+    private BasicEjbLocal basicEjb;
+
+    @EJB
+    private SecuredEjbLocal securedEjb;
+
+    public TestEjbSecurityRunTestAs() {
+    }
+
+    @Test
+    public void testEjbInjection() {
+        assertNotNull(basicEjb);
+        assertNotNull(securedEjb);
+    }
+
+    @Test
+    public void testClassLevelSecurity() {
+        assertNotNull(securedEjb);
+
+        assertEquals("Unsecured Works", basicEjb.concat("Unsecured", "Works"));
+        assertEquals("Dual Role Works", securedEjb.dualRole());
+        assertEquals("RoleA Works", securedEjb.roleA());
+
+        try {
+            securedEjb.roleB();
+            fail("Able to execute a method for which we shouldn't have access.");
+        } catch (final EJBAccessException e) {
+        }
+    }
+
+    @Test
+    @RunTestAs("RoleB")
+    public void testMethodLevelSecurity() {
+        assertNotNull(securedEjb);
+
+        assertEquals("Unsecured Works", basicEjb.concat("Unsecured", "Works"));
+        assertEquals("Dual Role Works", securedEjb.dualRole());
+        assertEquals("RoleB Works", securedEjb.roleB());
+
+        try {
+            securedEjb.roleA();
+            fail("Able to execute a method for which we shouldn't have access.");
+        } catch (final EJBAccessException e) {
+        }
+    }
+}
diff --git a/container/openejb-junit5-backward/src/test/java/org/apache/openejb/junit5/TestMethodConfigFile.java b/container/openejb-junit5-backward/src/test/java/org/apache/openejb/junit5/TestMethodConfigFile.java
new file mode 100644
index 0000000..ea573c3
--- /dev/null
+++ b/container/openejb-junit5-backward/src/test/java/org/apache/openejb/junit5/TestMethodConfigFile.java
@@ -0,0 +1,65 @@
+/**
+ * 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.
+ */
+
+package org.apache.openejb.junit5;
+
+import org.apache.openejb.junit.ContextConfig;
+import org.apache.openejb.junit.TestResource;
+import org.apache.openejb.junit.TestResourceTypes;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.ExtendWith;
+
+import java.util.Hashtable;
+
+import static org.junit.jupiter.api.Assertions.*;
+
+@RunWithOpenEjb
+public class TestMethodConfigFile {
+    @TestResource(TestResourceTypes.CONTEXT_CONFIG)
+    private Hashtable<String, String> contextConfig;
+
+    /**
+     * We store it in a field to be sure that we check the same key in the 2 separate
+     * tests.
+     */
+    private static final String CHECK_PROPERTY = "junit.test-property";
+
+    public TestMethodConfigFile() {
+    }
+
+    @Test
+    @ContextConfig(
+        configFile = "/META-INF/test-config.properties"
+    )
+    public void testConfig() {
+        assertNotNull(contextConfig);
+
+        checkProperty(CHECK_PROPERTY, "Test String");
+    }
+
+    @Test
+    public void testConfigNotPresent() {
+        assertNotNull(contextConfig);
+
+        assertNull(contextConfig.get(CHECK_PROPERTY));
+    }
+
+    private void checkProperty(final String key, final String expected) {
+        final String value = contextConfig.get(key);
+        assertEquals(expected, value);
+    }
+}
diff --git a/container/openejb-junit5-backward/src/test/java/org/apache/openejb/junit5/TestMethodConfigProperties.java b/container/openejb-junit5-backward/src/test/java/org/apache/openejb/junit5/TestMethodConfigProperties.java
new file mode 100644
index 0000000..0010d1f
--- /dev/null
+++ b/container/openejb-junit5-backward/src/test/java/org/apache/openejb/junit5/TestMethodConfigProperties.java
@@ -0,0 +1,69 @@
+/**
+ * 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.
+ */
+
+package org.apache.openejb.junit5;
+
+import org.apache.openejb.junit.ContextConfig;
+import org.apache.openejb.junit.Property;
+import org.apache.openejb.junit.TestResource;
+import org.apache.openejb.junit.TestResourceTypes;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.ExtendWith;
+
+import java.util.Hashtable;
+
+import static org.junit.jupiter.api.Assertions.*;
+
+@RunWithOpenEjb
+public class TestMethodConfigProperties {
+    @TestResource(TestResourceTypes.CONTEXT_CONFIG)
+    private Hashtable<String, String> contextConfig;
+
+    /**
+     * We store it in a field to be sure that we check the same key in the 2 separate
+     * tests.
+     */
+    private static final String CHECK_PROPERTY = "junit.test-property";
+
+    public TestMethodConfigProperties() {
+    }
+
+    @Test
+    @ContextConfig(
+        properties = {
+            @Property("java.naming.factory.initial=org.apache.openejb.core.LocalInitialContextFactory"),
+            @Property(CHECK_PROPERTY + "=Test String from Properties")
+        }
+    )
+    public void testConfig() {
+        assertNotNull(contextConfig);
+
+        checkProperty(CHECK_PROPERTY, "Test String from Properties");
+    }
+
+    @Test
+    public void testConfigNotPresent() {
+        assertNotNull(contextConfig);
+
+        assertNull(contextConfig.get(CHECK_PROPERTY));
+    }
+
+    private void checkProperty(final String key, final String expected) {
+        final String value = contextConfig.get(key);
+        assertEquals(expected, value);
+    }
+}
diff --git a/container/openejb-junit5-backward/src/test/java/org/apache/openejb/junit5/TestResourceEJBContainerExtension.java b/container/openejb-junit5-backward/src/test/java/org/apache/openejb/junit5/TestResourceEJBContainerExtension.java
new file mode 100644
index 0000000..8585d88
--- /dev/null
+++ b/container/openejb-junit5-backward/src/test/java/org/apache/openejb/junit5/TestResourceEJBContainerExtension.java
@@ -0,0 +1,49 @@
+/**
+ * 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.
+ */
+package org.apache.openejb.junit5;
+
+import org.apache.openejb.assembler.classic.Assembler;
+import org.apache.openejb.config.DeploymentFilterable;
+import org.apache.openejb.junit.jee.config.Properties;
+import org.apache.openejb.loader.SystemInstance;
+import org.apache.openejb.spi.ContainerSystem;
+import org.junit.jupiter.api.Test;
+
+import javax.annotation.Resource;
+import javax.naming.NamingException;
+import javax.sql.DataSource;
+
+import static org.junit.jupiter.api.Assertions.*;
+
+
+@Properties({
+    @org.apache.openejb.junit.jee.config.Property(key = DeploymentFilterable.CLASSPATH_EXCLUDE, value = "jar:.*"),
+    @org.apache.openejb.junit.jee.config.Property(key = DeploymentFilterable.CLASSPATH_INCLUDE, value = ".*openejb-junit5-backward.*"),
+    @org.apache.openejb.junit.jee.config.Property(key = "r", value = "new://Resource?type=DataSource")
+})
+@RunWithEjbContainer
+public class TestResourceEJBContainerExtension {
+
+    @Resource(name = "r")
+    private DataSource ds;
+
+    @Test
+    public void checkResource() throws NamingException {
+        assertEquals(ds,   SystemInstance.get().getComponent(ContainerSystem.class)
+                .getJNDIContext().lookup("java:" + Assembler.OPENEJB_RESOURCE_JNDI_PREFIX + "r"));
+    }
+}
diff --git a/container/openejb-junit5-backward/src/test/java/org/apache/openejb/junit5/TestWithCdiBean.java b/container/openejb-junit5-backward/src/test/java/org/apache/openejb/junit5/TestWithCdiBean.java
new file mode 100644
index 0000000..aa43a24
--- /dev/null
+++ b/container/openejb-junit5-backward/src/test/java/org/apache/openejb/junit5/TestWithCdiBean.java
@@ -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.
+ */
+package org.apache.openejb.junit5;
+
+import org.apache.openejb.config.DeploymentFilterable;
+import org.apache.openejb.junit.jee.config.Properties;
+import org.apache.openejb.junit.jee.config.Property;
+import org.junit.jupiter.api.Test;
+
+import javax.ejb.EJB;
+import javax.ejb.Stateless;
+import javax.inject.Inject;
+
+import static org.junit.jupiter.api.Assertions.assertNotNull;
+
+
+@Properties({ // just a small conf to go faster
+    @Property(key = DeploymentFilterable.CLASSPATH_EXCLUDE, value = "jar:.*"),
+    @Property(key = DeploymentFilterable.CLASSPATH_INCLUDE, value = ".*openejb-junit5-backward.*")
+})
+@RunWithEjbContainer
+public class TestWithCdiBean {
+    @Inject
+    private CdiBean cdi;
+
+    @Inject
+    private EjbBean ejb;
+
+    @EJB
+    private EjbBean ejb2;
+
+    @Test
+    public void checkCDIInjections() {
+        assertNotNull(cdi);
+        assertNotNull(ejb);
+    }
+
+    @Test
+    public void checkEJBInjection() {
+        assertNotNull(ejb2);
+    }
+
+    public static class CdiBean {
+    }
+
+    @Stateless
+    public static class EjbBean {
+    }
+}
diff --git a/container/openejb-junit5-backward/src/test/java/org/apache/openejb/junit5/ejbs/BasicEjb.java b/container/openejb-junit5-backward/src/test/java/org/apache/openejb/junit5/ejbs/BasicEjb.java
new file mode 100644
index 0000000..067b7f8
--- /dev/null
+++ b/container/openejb-junit5-backward/src/test/java/org/apache/openejb/junit5/ejbs/BasicEjb.java
@@ -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.
+ */
+
+package org.apache.openejb.junit5.ejbs;
+
+import javax.ejb.Stateless;
+
+@Stateless
+public class BasicEjb implements BasicEjbLocal {
+    public String concat(final String s1, final String s2) {
+        return s1 + " " + s2;
+    }
+
+    public double squareroot(final double n) {
+        if (n < 0) {
+            throw new IllegalArgumentException("Number cannot be negative");
+        }
+
+        return Math.sqrt(n);
+    }
+}
diff --git a/container/openejb-junit5-backward/src/test/java/org/apache/openejb/junit5/ejbs/BasicEjbLocal.java b/container/openejb-junit5-backward/src/test/java/org/apache/openejb/junit5/ejbs/BasicEjbLocal.java
new file mode 100644
index 0000000..d752f27
--- /dev/null
+++ b/container/openejb-junit5-backward/src/test/java/org/apache/openejb/junit5/ejbs/BasicEjbLocal.java
@@ -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.
+ */
+
+package org.apache.openejb.junit5.ejbs;
+
+import javax.ejb.Local;
+
+@Local
+public interface BasicEjbLocal {
+    String concat(String s1, String s2);
+
+    double squareroot(double n);
+}
diff --git a/container/openejb-junit5-backward/src/test/java/org/apache/openejb/junit5/ejbs/SecuredEjb.java b/container/openejb-junit5-backward/src/test/java/org/apache/openejb/junit5/ejbs/SecuredEjb.java
new file mode 100644
index 0000000..b3c92bc
--- /dev/null
+++ b/container/openejb-junit5-backward/src/test/java/org/apache/openejb/junit5/ejbs/SecuredEjb.java
@@ -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.
+ */
+
+package org.apache.openejb.junit5.ejbs;
+
+import javax.annotation.security.RolesAllowed;
+import javax.ejb.Stateless;
+
+@Stateless
+@RolesAllowed({"RoleA", "RoleB"})
+public class SecuredEjb implements SecuredEjbLocal {
+    public String dualRole() {
+        return "Dual Role Works";
+    }
+
+    @RolesAllowed({"RoleA"})
+    public String roleA() {
+        return "RoleA Works";
+    }
+
+    @RolesAllowed({"RoleB"})
+    public String roleB() {
+        return "RoleB Works";
+    }
+}
diff --git a/container/openejb-junit5-backward/src/test/java/org/apache/openejb/junit5/ejbs/SecuredEjbLocal.java b/container/openejb-junit5-backward/src/test/java/org/apache/openejb/junit5/ejbs/SecuredEjbLocal.java
new file mode 100644
index 0000000..bc3fbb6
--- /dev/null
+++ b/container/openejb-junit5-backward/src/test/java/org/apache/openejb/junit5/ejbs/SecuredEjbLocal.java
@@ -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.
+ */
+
+package org.apache.openejb.junit5.ejbs;
+
+import javax.ejb.Local;
+
+@Local
+public interface SecuredEjbLocal {
+    String dualRole();
+
+    String roleA();
+
+    String roleB();
+}
diff --git a/container/openejb-junit5-backward/src/test/resources/META-INF/beans.xml b/container/openejb-junit5-backward/src/test/resources/META-INF/beans.xml
new file mode 100644
index 0000000..5ce485a
--- /dev/null
+++ b/container/openejb-junit5-backward/src/test/resources/META-INF/beans.xml
@@ -0,0 +1,22 @@
+<?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.
+-->
+<beans xmlns="http://java.sun.com/xml/ns/javaee"
+       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+       xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/beans_1_0.xsd" />
diff --git a/container/openejb-junit5-backward/src/test/resources/META-INF/ejb-jar.xml b/container/openejb-junit5-backward/src/test/resources/META-INF/ejb-jar.xml
new file mode 100644
index 0000000..3c3de1c
--- /dev/null
+++ b/container/openejb-junit5-backward/src/test/resources/META-INF/ejb-jar.xml
@@ -0,0 +1,19 @@
+<?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.
+-->
+<ejb-jar/>
\ No newline at end of file
diff --git a/container/openejb-junit5-backward/src/test/resources/META-INF/test-config-method.properties b/container/openejb-junit5-backward/src/test/resources/META-INF/test-config-method.properties
new file mode 100644
index 0000000..a7c32b9
--- /dev/null
+++ b/container/openejb-junit5-backward/src/test/resources/META-INF/test-config-method.properties
@@ -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.
+#
+junit.test-new-method-file-property=New Method Value
+junit.test-property-override2=New Method File Value 2
diff --git a/container/openejb-junit5-backward/src/test/resources/META-INF/test-config.properties b/container/openejb-junit5-backward/src/test/resources/META-INF/test-config.properties
new file mode 100644
index 0000000..fd0a9f7
--- /dev/null
+++ b/container/openejb-junit5-backward/src/test/resources/META-INF/test-config.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.
+#
+java.naming.factory.initial=org.apache.openejb.core.LocalInitialContextFactory
+junit.test-property=Test String
+junit.test-property-override=Original Value
+junit.test-property-override2=Original Value 2
+junit.test-property-override3=Original Value 3
+junit.test-property-file-untrimmed = Original Untrimmed Value
+junit.test-property-file-trimmed=Original Trimmed Value
diff --git a/container/openejb-junit5-backward/src/test/resources/openejb-junit.properties b/container/openejb-junit5-backward/src/test/resources/openejb-junit.properties
new file mode 100644
index 0000000..9eab334
--- /dev/null
+++ b/container/openejb-junit5-backward/src/test/resources/openejb-junit.properties
@@ -0,0 +1,17 @@
+#
+# 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.
+#
+implicit-config = true
diff --git a/container/openejb-loader/pom.xml b/container/openejb-loader/pom.xml
index efb08d2..8daa00b 100644
--- a/container/openejb-loader/pom.xml
+++ b/container/openejb-loader/pom.xml
@@ -23,7 +23,7 @@
   <parent>
     <artifactId>container</artifactId>
     <groupId>org.apache.tomee</groupId>
-    <version>8.0.6-SNAPSHOT</version>
+    <version>8.0.7-SNAPSHOT</version>
   </parent>
   <modelVersion>4.0.0</modelVersion>
   <artifactId>openejb-loader</artifactId>
diff --git a/container/pom.xml b/container/pom.xml
index be9346e..9508572 100644
--- a/container/pom.xml
+++ b/container/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <artifactId>tomee-project</artifactId>
     <groupId>org.apache.tomee</groupId>
-    <version>8.0.6-SNAPSHOT</version>
+    <version>8.0.7-SNAPSHOT</version>
   </parent>
 
   <modelVersion>4.0.0</modelVersion>
@@ -36,7 +36,8 @@
     <module>openejb-javaagent</module>
     <module>openejb-jee</module>
     <module>openejb-jee-accessors</module>
-    <module>openejb-junit</module>
     <module>openejb-jpa-integration</module>
+    <module>openejb-junit</module>
+    <module>openejb-junit5-backward</module>
   </modules>
 </project>
diff --git a/deps/pom.xml b/deps/pom.xml
new file mode 100644
index 0000000..831ac9b
--- /dev/null
+++ b/deps/pom.xml
@@ -0,0 +1,33 @@
+<?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.
+-->
+<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/maven-v4_0_0.xsd">
+  <parent>
+    <artifactId>tomee-project</artifactId>
+    <groupId>org.apache.tomee</groupId>
+    <version>8.0.7-SNAPSHOT</version>
+  </parent>
+  <modelVersion>4.0.0</modelVersion>
+  <artifactId>deps</artifactId>
+  <packaging>pom</packaging>
+  <name>TomEE :: Deps</name>
+
+  <modules>
+    <module>taglibs-shade</module>
+  </modules>
+</project>
diff --git a/deps/taglibs-shade/pom.xml b/deps/taglibs-shade/pom.xml
new file mode 100644
index 0000000..ef5a408
--- /dev/null
+++ b/deps/taglibs-shade/pom.xml
@@ -0,0 +1,148 @@
+<?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.
+-->
+<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">
+  <parent>
+    <artifactId>deps</artifactId>
+    <groupId>org.apache.tomee</groupId>
+    <version>8.0.7-SNAPSHOT</version>
+  </parent>
+  <modelVersion>4.0.0</modelVersion>
+
+  <groupId>org.apache.tomee</groupId>
+  <artifactId>taglibs-shade</artifactId>
+  <name>TomEE :: Deps :: Taglibs Shade</name>
+
+  <dependencies>
+    <dependency>
+      <groupId>org.apache.taglibs</groupId>
+      <artifactId>taglibs-standard-impl</artifactId>
+      <version>1.2.5</version>
+      <exclusions>
+        <exclusion>
+          <artifactId>*</artifactId>
+          <groupId>*</groupId>
+        </exclusion>
+      </exclusions>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.taglibs</groupId>
+      <artifactId>taglibs-standard-jstlel</artifactId>
+      <version>1.2.5</version>
+      <exclusions>
+        <exclusion>
+          <artifactId>*</artifactId>
+          <groupId>*</groupId>
+        </exclusion>
+      </exclusions>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.taglibs</groupId>
+      <artifactId>taglibs-standard-spec</artifactId>
+      <version>1.2.5</version>
+      <exclusions>
+        <exclusion>
+          <artifactId>*</artifactId>
+          <groupId>*</groupId>
+        </exclusion>
+      </exclusions>
+    </dependency>
+    <dependency>
+      <groupId>xalan</groupId>
+      <artifactId>xalan</artifactId>
+      <version>2.7.2</version>
+      <exclusions>
+        <exclusion>
+          <artifactId>*</artifactId>
+          <groupId>*</groupId>
+        </exclusion>
+      </exclusions>
+    </dependency>
+    <dependency>
+      <groupId>xalan</groupId>
+      <artifactId>serializer</artifactId>
+      <version>2.7.2</version>
+      <exclusions>
+        <exclusion>
+          <artifactId>*</artifactId>
+          <groupId>*</groupId>
+        </exclusion>
+      </exclusions>
+    </dependency>
+  </dependencies>
+
+  <build>
+    <plugins>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-shade-plugin</artifactId>
+        <version>2.3</version>
+        <executions>
+          <execution>
+            <phase>package</phase>
+            <goals>
+              <goal>shade</goal>
+            </goals>
+            <configuration>
+              <createSourcesJar>true</createSourcesJar>
+              <useBaseVersion>true</useBaseVersion>
+              <createDependencyReducedPom>false</createDependencyReducedPom>
+              <relocations>
+                <relocation>
+                  <pattern>org.apache.bcel</pattern>
+                  <shadedPattern>openejb.shade.org.apache.bcel</shadedPattern>
+                </relocation>
+                <relocation>
+                  <pattern>org.apache.regexp</pattern>
+                  <shadedPattern>openejb.shade.org.apache.regexp</shadedPattern>
+                </relocation>
+                <relocation>
+                  <pattern>org.apache.xalan</pattern>
+                  <shadedPattern>openejb.shade.org.apache.xalan</shadedPattern>
+                </relocation>
+                <relocation>
+                  <pattern>org.apache.xml</pattern>
+                  <shadedPattern>openejb.shade.org.apache.xml</shadedPattern>
+                </relocation>
+                <relocation>
+                  <pattern>org.apache.xpath</pattern>
+                  <shadedPattern>openejb.shade.org.apache.xpath</shadedPattern>
+                </relocation>
+                <relocation>
+                  <pattern>trac</pattern>
+                  <shadedPattern>openejb.shade.trax</shadedPattern>
+                </relocation>
+              </relocations>
+              <filters>
+                <filter>
+                  <artifact>xalan:xalan</artifact>
+                  <includes>
+                    <include>*/**</include>
+                  </includes>
+                  <excludes>
+                    <exclude>META-INF/services/javax*</exclude>
+                  </excludes>
+                </filter>
+              </filters>
+            </configuration>
+          </execution>
+        </executions>
+      </plugin>
+    </plugins>
+  </build>
+</project>
diff --git a/examples/access-timeout-meta/pom.xml b/examples/access-timeout-meta/pom.xml
index 1098edf..4b98335 100644
--- a/examples/access-timeout-meta/pom.xml
+++ b/examples/access-timeout-meta/pom.xml
@@ -22,7 +22,7 @@
   <groupId>org.superbiz</groupId>
   <artifactId>access-timeout-meta</artifactId>
   <packaging>jar</packaging>
-  <version>8.0.6-SNAPSHOT</version>
+  <version>8.0.7-SNAPSHOT</version>
   <name>TomEE :: Examples :: @AccessTimeout (Meta)</name>
   <properties>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
@@ -84,7 +84,7 @@
     <dependency>
       <groupId>org.apache.tomee</groupId>
       <artifactId>openejb-core</artifactId>
-      <version>8.0.6-SNAPSHOT</version>
+      <version>8.0.7-SNAPSHOT</version>
       <scope>test</scope>
     </dependency>
   </dependencies>
diff --git a/examples/access-timeout/pom.xml b/examples/access-timeout/pom.xml
index e5cc8c9..0b65a35 100644
--- a/examples/access-timeout/pom.xml
+++ b/examples/access-timeout/pom.xml
@@ -22,7 +22,7 @@
   <groupId>org.superbiz</groupId>
   <artifactId>access-timeout</artifactId>
   <packaging>jar</packaging>
-  <version>8.0.6-SNAPSHOT</version>
+  <version>8.0.7-SNAPSHOT</version>
   <name>TomEE :: Examples :: @AccessTimeout</name>
   <properties>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
@@ -84,7 +84,7 @@
     <dependency>
       <groupId>org.apache.tomee</groupId>
       <artifactId>openejb-core</artifactId>
-      <version>8.0.6-SNAPSHOT</version>
+      <version>8.0.7-SNAPSHOT</version>
       <scope>test</scope>
     </dependency>
   </dependencies>
diff --git a/examples/alternate-descriptors/pom.xml b/examples/alternate-descriptors/pom.xml
index acac699..a8df9ee 100644
--- a/examples/alternate-descriptors/pom.xml
+++ b/examples/alternate-descriptors/pom.xml
@@ -22,7 +22,7 @@
   <groupId>org.superbiz</groupId>
   <artifactId>alternate-descriptors</artifactId>
   <packaging>jar</packaging>
-  <version>8.0.6-SNAPSHOT</version>
+  <version>8.0.7-SNAPSHOT</version>
   <name>TomEE :: Examples :: Alternate Descriptors</name>
   <properties>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
@@ -108,7 +108,7 @@
     <dependency>
       <groupId>org.apache.tomee</groupId>
       <artifactId>openejb-core</artifactId>
-      <version>8.0.6-SNAPSHOT</version>
+      <version>8.0.7-SNAPSHOT</version>
       <scope>test</scope>
       <exclusions>
         <exclusion>
diff --git a/examples/applet/pom.xml b/examples/applet/pom.xml
index 90383ea..a63e9db 100644
--- a/examples/applet/pom.xml
+++ b/examples/applet/pom.xml
@@ -22,7 +22,7 @@
   <groupId>org.superbiz.applet</groupId>
   <artifactId>applet</artifactId>
   <packaging>war</packaging>
-  <version>8.0.6-SNAPSHOT</version>
+  <version>8.0.7-SNAPSHOT</version>
   <name>TomEE :: Web Examples :: Signed Applet EJB Client</name>
   <url>http://tomee.apache.org</url>
   <properties>
@@ -44,7 +44,7 @@
     <dependency>
       <groupId>org.apache.tomee</groupId>
       <artifactId>openejb-client</artifactId>
-      <version>8.0.6-SNAPSHOT</version>
+      <version>8.0.7-SNAPSHOT</version>
       <scope>test</scope>
     </dependency>
   </dependencies>
@@ -112,7 +112,7 @@
                 <artifactItem>
                   <groupId>org.apache.tomee</groupId>
                   <artifactId>openejb-client</artifactId>
-                  <version>8.0.6-SNAPSHOT</version>
+                  <version>8.0.7-SNAPSHOT</version>
                   <outputDirectory>${project.build.directory}/${project.build.finalName}</outputDirectory>
                   <destFileName>openejb-client.jar</destFileName>
                 </artifactItem>
diff --git a/examples/application-composer/pom.xml b/examples/application-composer/pom.xml
index 68c62f5..f97a418 100644
--- a/examples/application-composer/pom.xml
+++ b/examples/application-composer/pom.xml
@@ -22,7 +22,7 @@
   <groupId>org.superbiz</groupId>
   <artifactId>application-composer</artifactId>
   <packaging>jar</packaging>
-  <version>8.0.6-SNAPSHOT</version>
+  <version>8.0.7-SNAPSHOT</version>
   <name>TomEE :: Examples :: Application Composer</name>
   <properties>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
@@ -92,7 +92,7 @@
     <dependency>
       <groupId>org.apache.tomee</groupId>
       <artifactId>openejb-core</artifactId>
-      <version>8.0.6-SNAPSHOT</version>
+      <version>8.0.7-SNAPSHOT</version>
       <scope>test</scope>
     </dependency>
   </dependencies>
diff --git a/examples/applicationcomposer-jaxws-cdi/pom.xml b/examples/applicationcomposer-jaxws-cdi/pom.xml
index 68df946..9503d71 100644
--- a/examples/applicationcomposer-jaxws-cdi/pom.xml
+++ b/examples/applicationcomposer-jaxws-cdi/pom.xml
@@ -20,7 +20,7 @@
   <modelVersion>4.0.0</modelVersion>
   <groupId>org.superbiz</groupId>
   <artifactId>applicationcomposer-jaxws-cdi</artifactId>
-  <version>8.0.6-SNAPSHOT</version>
+  <version>8.0.7-SNAPSHOT</version>
   <name>TomEE :: Examples :: Application Composer, JAX-WS and CDI are in a boat</name>
   <properties>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
@@ -80,13 +80,13 @@
     <dependency>
       <groupId>org.apache.tomee</groupId>
       <artifactId>openejb-cxf</artifactId>
-      <version>8.0.6-SNAPSHOT</version>
+      <version>8.0.7-SNAPSHOT</version>
       <scope>test</scope>
     </dependency>
     <dependency>
       <groupId>org.apache.tomee</groupId>
       <artifactId>ziplock</artifactId>
-      <version>8.0.6-SNAPSHOT</version>
+      <version>8.0.7-SNAPSHOT</version>
       <scope>test</scope>
     </dependency>
   </dependencies>
diff --git a/examples/applicationexception/pom.xml b/examples/applicationexception/pom.xml
index 75535a6..3701805 100644
--- a/examples/applicationexception/pom.xml
+++ b/examples/applicationexception/pom.xml
@@ -22,7 +22,7 @@
   <groupId>org.superbiz</groupId>
   <artifactId>applicationexception</artifactId>
   <packaging>jar</packaging>
-  <version>8.0.6-SNAPSHOT</version>
+  <version>8.0.7-SNAPSHOT</version>
   <name>TomEE :: Examples :: @ApplicationException inheritance</name>
   <properties>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
@@ -94,7 +94,7 @@
     <dependency>
       <groupId>org.apache.tomee</groupId>
       <artifactId>openejb-core</artifactId>
-      <version>8.0.6-SNAPSHOT</version>
+      <version>8.0.7-SNAPSHOT</version>
       <scope>test</scope>
     </dependency>
   </dependencies>
diff --git a/examples/arquillian-jpa/pom.xml b/examples/arquillian-jpa/pom.xml
index 0b5cfa7..3479b94 100644
--- a/examples/arquillian-jpa/pom.xml
+++ b/examples/arquillian-jpa/pom.xml
@@ -14,10 +14,10 @@
   <groupId>org.superbiz</groupId>
   <artifactId>arquillian-jpa</artifactId>
   <name>TomEE :: Examples :: Arquillian Persistence Extension Sample</name>
-  <version>8.0.6-SNAPSHOT</version>
+  <version>8.0.7-SNAPSHOT</version>
   <properties>
     <arquillian_universe.version>1.2.0.1</arquillian_universe.version>
-    <tomee.version>8.0.6-SNAPSHOT</tomee.version>
+    <tomee.version>8.0.7-SNAPSHOT</tomee.version>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
   </properties>
   <build>
@@ -73,7 +73,7 @@
     <dependency>
       <groupId>org.apache.tomee</groupId>
       <artifactId>openejb-core</artifactId>
-      <version>8.0.6-SNAPSHOT</version>
+      <version>8.0.7-SNAPSHOT</version>
     </dependency>
     <dependency>
       <groupId>org.apache.tomee</groupId>
diff --git a/examples/async-methods/pom.xml b/examples/async-methods/pom.xml
index ebc4c28..16abf5c 100644
--- a/examples/async-methods/pom.xml
+++ b/examples/async-methods/pom.xml
@@ -22,7 +22,7 @@
   <groupId>org.superbiz</groupId>
   <artifactId>async-methods</artifactId>
   <packaging>jar</packaging>
-  <version>8.0.6-SNAPSHOT</version>
+  <version>8.0.7-SNAPSHOT</version>
   <name>TomEE :: Examples :: @Asynchronous Methods</name>
   <properties>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
@@ -84,7 +84,7 @@
     <dependency>
       <groupId>org.apache.tomee</groupId>
       <artifactId>openejb-core</artifactId>
-      <version>8.0.6-SNAPSHOT</version>
+      <version>8.0.7-SNAPSHOT</version>
       <scope>test</scope>
     </dependency>
   </dependencies>
diff --git a/examples/async-postconstruct/pom.xml b/examples/async-postconstruct/pom.xml
index 3d2131d..619be13 100644
--- a/examples/async-postconstruct/pom.xml
+++ b/examples/async-postconstruct/pom.xml
@@ -22,7 +22,7 @@
   <groupId>org.superbiz</groupId>
   <artifactId>async-postconstruct</artifactId>
   <packaging>jar</packaging>
-  <version>8.0.6-SNAPSHOT</version>
+  <version>8.0.7-SNAPSHOT</version>
   <name>TomEE :: Examples :: @Asynchronous @PostConstrct</name>
   <properties>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
@@ -84,7 +84,7 @@
     <dependency>
       <groupId>org.apache.tomee</groupId>
       <artifactId>openejb-core</artifactId>
-      <version>8.0.6-SNAPSHOT</version>
+      <version>8.0.7-SNAPSHOT</version>
       <scope>test</scope>
     </dependency>
   </dependencies>
diff --git a/examples/async-servlet/pom.xml b/examples/async-servlet/pom.xml
index 399143e..ae43178 100644
--- a/examples/async-servlet/pom.xml
+++ b/examples/async-servlet/pom.xml
@@ -20,7 +20,7 @@
   <groupId>org.superbiz</groupId>
   <artifactId>async-servlet</artifactId>
   <packaging>war</packaging>
-  <version>8.0.6-SNAPSHOT</version>
+  <version>8.0.7-SNAPSHOT</version>
   <name>OpenEJB :: Examples :: Async Servlet</name>
   <url>http://maven.apache.org</url>
   <properties>
@@ -28,7 +28,7 @@
     <maven.compiler.target>1.8</maven.compiler.target>
     <version.arquillian>1.1.13.Final</version.arquillian>
     <version.graphene.webdriver>2.3.1</version.graphene.webdriver>
-    <tomee.version>8.0.6-SNAPSHOT</tomee.version>
+    <tomee.version>8.0.7-SNAPSHOT</tomee.version>
   </properties>
   <dependencies>
     <dependency>
@@ -59,7 +59,7 @@
     <dependency>
       <groupId>org.apache.tomee</groupId>
       <artifactId>ziplock</artifactId>
-      <version>8.0.6-SNAPSHOT</version>
+      <version>8.0.7-SNAPSHOT</version>
       <scope>test</scope>
     </dependency>
     <dependency>
@@ -95,7 +95,7 @@
       <plugin>
         <groupId>org.apache.tomee.maven</groupId>
         <artifactId>tomee-maven-plugin</artifactId>
-        <version>8.0.6-SNAPSHOT</version>
+        <version>8.0.7-SNAPSHOT</version>
         <configuration>
           <args>-Xmx512m -XX:PermSize=256m</args>
         </configuration>
diff --git a/examples/bean-validation-design-by-contract/pom.xml b/examples/bean-validation-design-by-contract/pom.xml
index 67744c5..8cb3fb9 100644
--- a/examples/bean-validation-design-by-contract/pom.xml
+++ b/examples/bean-validation-design-by-contract/pom.xml
@@ -20,11 +20,11 @@
   <groupId>org.superbiz</groupId>
   <artifactId>bean-validation-design-by-contract</artifactId>
   <packaging>jar</packaging>
-  <version>8.0.6-SNAPSHOT</version>
+  <version>8.0.7-SNAPSHOT</version>
   <name>TomEE :: Examples :: Bean Validation Design By Contract</name>
   <properties>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
-    <tomee.version>8.0.6-SNAPSHOT</tomee.version>
+    <tomee.version>8.0.7-SNAPSHOT</tomee.version>
   </properties>
   <build>
     <defaultGoal>install</defaultGoal>
@@ -82,7 +82,7 @@
     <dependency>
       <groupId>org.apache.tomee</groupId>
       <artifactId>openejb-core</artifactId>
-      <version>8.0.6-SNAPSHOT</version>
+      <version>8.0.7-SNAPSHOT</version>
       <scope>test</scope>
     </dependency>
   </dependencies>
diff --git a/examples/bval-evaluation-redeployment/WebApp1/pom.xml b/examples/bval-evaluation-redeployment/WebApp1/pom.xml
index 222b164..59650f7 100644
--- a/examples/bval-evaluation-redeployment/WebApp1/pom.xml
+++ b/examples/bval-evaluation-redeployment/WebApp1/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.superbiz</groupId>
     <artifactId>bval-evaluation-redeployment</artifactId>
-    <version>8.0.6-SNAPSHOT</version>
+    <version>8.0.7-SNAPSHOT</version>
   </parent>
   <artifactId>WebApp1</artifactId>
   <packaging>war</packaging>
diff --git a/examples/bval-evaluation-redeployment/WebApp2/pom.xml b/examples/bval-evaluation-redeployment/WebApp2/pom.xml
index 9d80ab0..0cd376b 100644
--- a/examples/bval-evaluation-redeployment/WebApp2/pom.xml
+++ b/examples/bval-evaluation-redeployment/WebApp2/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.superbiz</groupId>
     <artifactId>bval-evaluation-redeployment</artifactId>
-    <version>8.0.6-SNAPSHOT</version>
+    <version>8.0.7-SNAPSHOT</version>
   </parent>
   <artifactId>WebApp2</artifactId>
   <packaging>war</packaging>
diff --git a/examples/bval-evaluation-redeployment/pom.xml b/examples/bval-evaluation-redeployment/pom.xml
index 4d497db..9203198 100644
--- a/examples/bval-evaluation-redeployment/pom.xml
+++ b/examples/bval-evaluation-redeployment/pom.xml
@@ -20,13 +20,13 @@
 
   <groupId>org.superbiz</groupId>
   <artifactId>bval-evaluation-redeployment</artifactId>
-  <version>8.0.6-SNAPSHOT</version>
+  <version>8.0.7-SNAPSHOT</version>
   <packaging>pom</packaging>
 
   <properties>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
-    <tomee.test.version>8.0.6-SNAPSHOT</tomee.test.version>
-    <openejb.test.version>8.0.6-SNAPSHOT</openejb.test.version>
+    <tomee.test.version>8.0.7-SNAPSHOT</tomee.test.version>
+    <openejb.test.version>8.0.7-SNAPSHOT</openejb.test.version>
   </properties>
 
   <modules>
@@ -106,7 +106,7 @@
       <dependency>
         <groupId>org.apache.tomee</groupId>
         <artifactId>arquillian-tomee-remote</artifactId>
-        <version>8.0.6-SNAPSHOT</version>
+        <version>8.0.7-SNAPSHOT</version>
         <scope>test</scope>
       </dependency>
       <dependency>
diff --git a/examples/bval-evaluation-redeployment/runner/pom.xml b/examples/bval-evaluation-redeployment/runner/pom.xml
index 6762c55..7702f3d 100644
--- a/examples/bval-evaluation-redeployment/runner/pom.xml
+++ b/examples/bval-evaluation-redeployment/runner/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.superbiz</groupId>
     <artifactId>bval-evaluation-redeployment</artifactId>
-    <version>8.0.6-SNAPSHOT</version>
+    <version>8.0.7-SNAPSHOT</version>
   </parent>
   <artifactId>runner</artifactId>
   <packaging>jar</packaging>
@@ -61,7 +61,7 @@
     <dependency>
       <groupId>org.apache.tomee</groupId>
       <artifactId>apache-tomee</artifactId>
-      <version>8.0.6-SNAPSHOT</version>
+      <version>8.0.7-SNAPSHOT</version>
       <type>zip</type>
       <classifier>webprofile</classifier>
       <scope>test</scope>
diff --git a/examples/cdi-alternative-and-stereotypes/pom.xml b/examples/cdi-alternative-and-stereotypes/pom.xml
index 6be2a72..b6e7a42 100644
--- a/examples/cdi-alternative-and-stereotypes/pom.xml
+++ b/examples/cdi-alternative-and-stereotypes/pom.xml
@@ -22,7 +22,7 @@
   <groupId>org.superbiz</groupId>
   <artifactId>cdi-alternative-and-stereotypes</artifactId>
   <packaging>jar</packaging>
-  <version>8.0.6-SNAPSHOT</version>
+  <version>8.0.7-SNAPSHOT</version>
   <name>TomEE :: Examples :: CDI Stereotypes</name>
   <properties>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
@@ -84,7 +84,7 @@
     <dependency>
       <groupId>org.apache.tomee</groupId>
       <artifactId>openejb-core</artifactId>
-      <version>8.0.6-SNAPSHOT</version>
+      <version>8.0.7-SNAPSHOT</version>
       <scope>test</scope>
     </dependency>
   </dependencies>
diff --git a/examples/cdi-application-scope/pom.xml b/examples/cdi-application-scope/pom.xml
index 5df22a2..b6c979e 100644
--- a/examples/cdi-application-scope/pom.xml
+++ b/examples/cdi-application-scope/pom.xml
@@ -14,7 +14,7 @@
   <groupId>org.superbiz</groupId>
   <artifactId>cdi-application-scope</artifactId>
   <name>TomEE :: Examples :: CDI Application Scope</name>
-  <version>8.0.6-SNAPSHOT</version>
+  <version>8.0.7-SNAPSHOT</version>
   <build>
     <defaultGoal>install</defaultGoal>
     <plugins>
@@ -68,7 +68,7 @@
     <dependency>
       <groupId>org.apache.tomee</groupId>
       <artifactId>openejb-core</artifactId>
-      <version>8.0.6-SNAPSHOT</version>
+      <version>8.0.7-SNAPSHOT</version>
       <scope>test</scope>
     </dependency>
   </dependencies>
diff --git a/examples/cdi-basic/pom.xml b/examples/cdi-basic/pom.xml
index 6dd6bdd..438f2e0 100644
--- a/examples/cdi-basic/pom.xml
+++ b/examples/cdi-basic/pom.xml
@@ -21,7 +21,7 @@
   <groupId>org.superbiz</groupId>
   <artifactId>cdi-basic</artifactId>
   <packaging>jar</packaging>
-  <version>8.0.6-SNAPSHOT</version>
+  <version>8.0.7-SNAPSHOT</version>
   <name>TomEE :: Examples :: Basic CDI</name>
   <properties>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
@@ -81,7 +81,7 @@
     <dependency>
       <groupId>org.apache.tomee</groupId>
       <artifactId>openejb-core</artifactId>
-      <version>8.0.6-SNAPSHOT</version>
+      <version>8.0.7-SNAPSHOT</version>
       <scope>test</scope>
     </dependency>
   </dependencies>
diff --git a/examples/cdi-dynamic-inject/pom.xml b/examples/cdi-dynamic-inject/pom.xml
index b77ff5f..1468a16 100644
--- a/examples/cdi-dynamic-inject/pom.xml
+++ b/examples/cdi-dynamic-inject/pom.xml
@@ -21,7 +21,7 @@
   <groupId>org.superbiz</groupId>
   <artifactId>cdi-dynamic-inject</artifactId>
   <packaging>jar</packaging>
-  <version>8.0.6-SNAPSHOT</version>
+  <version>8.0.7-SNAPSHOT</version>
   <name>TomEE :: Examples :: Dynamic Inject</name>
   <properties>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
@@ -81,7 +81,7 @@
     <dependency>
       <groupId>org.apache.tomee</groupId>
       <artifactId>openejb-core</artifactId>
-      <version>8.0.6-SNAPSHOT</version>
+      <version>8.0.7-SNAPSHOT</version>
       <scope>test</scope>
     </dependency>
   </dependencies>
diff --git a/examples/cdi-ejbcontext-jaas/pom.xml b/examples/cdi-ejbcontext-jaas/pom.xml
index c9cd6cd..842441e 100644
--- a/examples/cdi-ejbcontext-jaas/pom.xml
+++ b/examples/cdi-ejbcontext-jaas/pom.xml
@@ -20,14 +20,14 @@
   <modelVersion>4.0.0</modelVersion>
   <groupId>org.superbiz</groupId>
   <artifactId>cdi-ejbcontext-jaas</artifactId>
-  <version>8.0.6-SNAPSHOT</version>
+  <version>8.0.7-SNAPSHOT</version>
   <packaging>war</packaging>
   <name>TomEE :: Examples :: CDI, EJBContext and JAAS</name>
   <dependencies>
     <dependency>
       <groupId>org.apache.tomee</groupId>
       <artifactId>openejb-core</artifactId>
-      <version>8.0.6-SNAPSHOT</version>
+      <version>8.0.7-SNAPSHOT</version>
       <scope>provided</scope>
     </dependency>
     <dependency>
@@ -53,7 +53,7 @@
       <plugin>
         <groupId>org.apache.tomee.maven</groupId>
         <artifactId>tomee-maven-plugin</artifactId>
-        <version>8.0.6-SNAPSHOT</version>
+        <version>8.0.7-SNAPSHOT</version>
         <configuration>
           <systemVariables>
             <java.security.auth.login.config>${project.build.directory}/apache-tomee/conf/login.config</java.security.auth.login.config>
diff --git a/examples/cdi-events/pom.xml b/examples/cdi-events/pom.xml
index 23f8d22..43268a0 100644
--- a/examples/cdi-events/pom.xml
+++ b/examples/cdi-events/pom.xml
@@ -22,7 +22,7 @@
   <groupId>org.superbiz</groupId>
   <artifactId>cdi-events</artifactId>
   <packaging>jar</packaging>
-  <version>8.0.6-SNAPSHOT</version>
+  <version>8.0.7-SNAPSHOT</version>
   <name>TomEE :: Examples :: CDI Events</name>
   <properties>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
@@ -84,7 +84,7 @@
     <dependency>
       <groupId>org.apache.tomee</groupId>
       <artifactId>openejb-core</artifactId>
-      <version>8.0.6-SNAPSHOT</version>
+      <version>8.0.7-SNAPSHOT</version>
       <scope>test</scope>
     </dependency>
     <!-- to show events we log them in the test -->
diff --git a/examples/cdi-interceptors/pom.xml b/examples/cdi-interceptors/pom.xml
index 5b862dd..8a14102 100644
--- a/examples/cdi-interceptors/pom.xml
+++ b/examples/cdi-interceptors/pom.xml
@@ -16,7 +16,7 @@
   <groupId>org.superbiz</groupId>
   <artifactId>cdi-interceptors</artifactId>
   <packaging>jar</packaging>
-  <version>8.0.6-SNAPSHOT</version>
+  <version>8.0.7-SNAPSHOT</version>
   <name>TomEE :: Examples :: CDI Interceptors</name>
   <properties>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
@@ -76,7 +76,7 @@
     <dependency>
       <groupId>org.apache.tomee</groupId>
       <artifactId>openejb-core</artifactId>
-      <version>8.0.6-SNAPSHOT</version>
+      <version>8.0.7-SNAPSHOT</version>
       <scope>test</scope>
     </dependency>
   </dependencies>
diff --git a/examples/cdi-produces-disposes/pom.xml b/examples/cdi-produces-disposes/pom.xml
index 044454d..ec31900 100644
--- a/examples/cdi-produces-disposes/pom.xml
+++ b/examples/cdi-produces-disposes/pom.xml
@@ -22,7 +22,7 @@
   <groupId>org.superbiz</groupId>
   <artifactId>cdi-produces-disposes</artifactId>
   <packaging>jar</packaging>
-  <version>8.0.6-SNAPSHOT</version>
+  <version>8.0.7-SNAPSHOT</version>
   <name>TomEE :: Examples :: CDI-Disposes</name>
   <properties>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
@@ -84,7 +84,7 @@
     <dependency>
       <groupId>org.apache.tomee</groupId>
       <artifactId>openejb-core</artifactId>
-      <version>8.0.6-SNAPSHOT</version>
+      <version>8.0.7-SNAPSHOT</version>
       <scope>test</scope>
     </dependency>
   </dependencies>
diff --git a/examples/cdi-produces-field/pom.xml b/examples/cdi-produces-field/pom.xml
index 4c40f7f..083f309 100644
--- a/examples/cdi-produces-field/pom.xml
+++ b/examples/cdi-produces-field/pom.xml
@@ -22,7 +22,7 @@
   <groupId>org.superbiz</groupId>
   <artifactId>cdi-produces-field</artifactId>
   <packaging>jar</packaging>
-  <version>8.0.6-SNAPSHOT</version>
+  <version>8.0.7-SNAPSHOT</version>
   <name>TomEE :: Examples :: CDI-Field Producer</name>
   <properties>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
@@ -84,7 +84,7 @@
     <dependency>
       <groupId>org.apache.tomee</groupId>
       <artifactId>openejb-core</artifactId>
-      <version>8.0.6-SNAPSHOT</version>
+      <version>8.0.7-SNAPSHOT</version>
       <scope>test</scope>
     </dependency>
   </dependencies>
diff --git a/examples/cdi-qualifier/pom.xml b/examples/cdi-qualifier/pom.xml
index 477ef16..73a8384 100644
--- a/examples/cdi-qualifier/pom.xml
+++ b/examples/cdi-qualifier/pom.xml
@@ -21,7 +21,7 @@
   <groupId>org.superbiz</groupId>
   <artifactId>cdi-qualifier</artifactId>
   <packaging>jar</packaging>
-  <version>8.0.6-SNAPSHOT</version>
+  <version>8.0.7-SNAPSHOT</version>
   <name>TomEE :: Examples :: Basic Qualifier</name>
   <properties>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
@@ -81,7 +81,7 @@
     <dependency>
       <groupId>org.apache.tomee</groupId>
       <artifactId>openejb-core</artifactId>
-      <version>8.0.6-SNAPSHOT</version>
+      <version>8.0.7-SNAPSHOT</version>
       <scope>test</scope>
     </dependency>
   </dependencies>
diff --git a/examples/cdi-realm/pom.xml b/examples/cdi-realm/pom.xml
index bdf3f95..777b192 100644
--- a/examples/cdi-realm/pom.xml
+++ b/examples/cdi-realm/pom.xml
@@ -21,11 +21,11 @@
   <groupId>org.superbiz</groupId>
   <artifactId>cdi-realm</artifactId>
   <packaging>war</packaging>
-  <version>8.0.6-SNAPSHOT</version>
+  <version>8.0.7-SNAPSHOT</version>
   <name>TomEE :: Examples :: CDI Realm</name>
   <properties>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
-    <tomee.version>8.0.6-SNAPSHOT</tomee.version>
+    <tomee.version>8.0.7-SNAPSHOT</tomee.version>
   </properties>
   <build>
     <defaultGoal>install</defaultGoal>
diff --git a/examples/cdi-request-scope/pom.xml b/examples/cdi-request-scope/pom.xml
index c987064..19fb26c 100644
--- a/examples/cdi-request-scope/pom.xml
+++ b/examples/cdi-request-scope/pom.xml
@@ -14,7 +14,7 @@
   <groupId>org.superbiz</groupId>
   <artifactId>cdi-request-scope</artifactId>
   <name>TomEE :: Examples :: CDI Request Scope</name>
-  <version>8.0.6-SNAPSHOT</version>
+  <version>8.0.7-SNAPSHOT</version>
   <build>
     <defaultGoal>install</defaultGoal>
     <plugins>
@@ -68,7 +68,7 @@
     <dependency>
       <groupId>org.apache.tomee</groupId>
       <artifactId>openejb-core</artifactId>
-      <version>8.0.6-SNAPSHOT</version>
+      <version>8.0.7-SNAPSHOT</version>
       <scope>test</scope>
     </dependency>
   </dependencies>
diff --git a/examples/cdi-session-scope/pom.xml b/examples/cdi-session-scope/pom.xml
index 769f9cc..16f6b99 100644
--- a/examples/cdi-session-scope/pom.xml
+++ b/examples/cdi-session-scope/pom.xml
@@ -15,7 +15,7 @@
   <groupId>org.superbiz</groupId>
   <artifactId>cdi-session-scope</artifactId>
   <name>TomEE :: Examples :: CDI Session Scope</name>
-  <version>8.0.6-SNAPSHOT</version>
+  <version>8.0.7-SNAPSHOT</version>
   <packaging>war</packaging>
   <properties>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
@@ -43,7 +43,7 @@
       <plugin>
         <groupId>org.apache.tomee.maven</groupId>
         <artifactId>tomee-maven-plugin</artifactId>
-        <version>8.0.6-SNAPSHOT</version>
+        <version>8.0.7-SNAPSHOT</version>
         <configuration>
           <context>${project.artifactId}</context>
         </configuration>
diff --git a/examples/change-jaxws-url/pom.xml b/examples/change-jaxws-url/pom.xml
index 042695e..930b4c9 100644
--- a/examples/change-jaxws-url/pom.xml
+++ b/examples/change-jaxws-url/pom.xml
@@ -21,11 +21,11 @@
   <groupId>org.superbiz</groupId>
   <artifactId>change-jaxws-url</artifactId>
   <packaging>war</packaging>
-  <version>8.0.6-SNAPSHOT</version>
+  <version>8.0.7-SNAPSHOT</version>
   <name>TomEE :: Web Examples :: Change JAXWS URL</name>
   <properties>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
-    <tomee.version>8.0.6-SNAPSHOT</tomee.version>
+    <tomee.version>8.0.7-SNAPSHOT</tomee.version>
   </properties>
   <repositories>
     <repository>
diff --git a/examples/client-resource-lookup-preview/pom.xml b/examples/client-resource-lookup-preview/pom.xml
index e0848f4..a3b5a34 100644
--- a/examples/client-resource-lookup-preview/pom.xml
+++ b/examples/client-resource-lookup-preview/pom.xml
@@ -20,7 +20,7 @@
   <groupId>org.superbiz</groupId>
   <artifactId>client-resource-lookup-preview</artifactId>
   <packaging>jar</packaging>
-  <version>8.0.6-SNAPSHOT</version>
+  <version>8.0.7-SNAPSHOT</version>
   <name>TomEE :: Examples :: Client Resource Lookup</name>
   <properties>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
@@ -73,13 +73,13 @@
     <dependency>
       <groupId>org.apache.tomee</groupId>
       <artifactId>openejb-client</artifactId>
-      <version>8.0.6-SNAPSHOT</version>
+      <version>8.0.7-SNAPSHOT</version>
       <scope>runtime</scope>
     </dependency>
     <dependency>
       <groupId>org.apache.tomee</groupId>
       <artifactId>openejb-ejbd</artifactId>
-      <version>8.0.6-SNAPSHOT</version>
+      <version>8.0.7-SNAPSHOT</version>
     </dependency>
     <dependency>
       <groupId>org.apache.activemq</groupId>
@@ -97,7 +97,7 @@
     <dependency>
       <groupId>org.apache.tomee</groupId>
       <artifactId>ziplock</artifactId>
-      <version>8.0.6-SNAPSHOT</version>
+      <version>8.0.7-SNAPSHOT</version>
       <scope>test</scope>
     </dependency>
   </dependencies>
diff --git a/examples/cloud-tomee-azure/pom.xml b/examples/cloud-tomee-azure/pom.xml
index 30cce8d..64e2779 100644
--- a/examples/cloud-tomee-azure/pom.xml
+++ b/examples/cloud-tomee-azure/pom.xml
@@ -21,7 +21,7 @@
   <modelVersion>4.0.0</modelVersion>
   <groupId>org.superbiz</groupId>
   <artifactId>cloud-tomee-azure</artifactId>
-  <version>8.0.6-SNAPSHOT</version>
+  <version>8.0.7-SNAPSHOT</version>
   <packaging>war</packaging>
   <name>TomEE :: Examples :: Azure deployment example</name>
   <properties>
diff --git a/examples/component-interfaces/pom.xml b/examples/component-interfaces/pom.xml
index 248f30e..b81b94c 100644
--- a/examples/component-interfaces/pom.xml
+++ b/examples/component-interfaces/pom.xml
@@ -22,7 +22,7 @@
   <groupId>org.superbiz</groupId>
   <artifactId>component-interfaces</artifactId>
   <packaging>jar</packaging>
-  <version>8.0.6-SNAPSHOT</version>
+  <version>8.0.7-SNAPSHOT</version>
   <name>TomEE :: Examples :: EJB 2.1 Component Interfaces</name>
   <properties>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
@@ -92,7 +92,7 @@
     <dependency>
       <groupId>org.apache.tomee</groupId>
       <artifactId>openejb-core</artifactId>
-      <version>8.0.6-SNAPSHOT</version>
+      <version>8.0.7-SNAPSHOT</version>
       <scope>test</scope>
     </dependency>
   </dependencies>
diff --git a/examples/concurrency-utils/pom.xml b/examples/concurrency-utils/pom.xml
index 7ea103b..0e6019b 100644
--- a/examples/concurrency-utils/pom.xml
+++ b/examples/concurrency-utils/pom.xml
@@ -19,7 +19,7 @@
   <modelVersion>4.0.0</modelVersion>
   <groupId>org.superbiz</groupId>
   <artifactId>concurrency-utils</artifactId>
-  <version>8.0.6-SNAPSHOT</version>
+  <version>8.0.7-SNAPSHOT</version>
   <packaging>jar</packaging>
   <name>TomEE :: Examples :: Concurrency utilities example</name>
   <properties>
diff --git a/examples/connector-ear/connector-sample-api/pom.xml b/examples/connector-ear/connector-sample-api/pom.xml
index 0f7b0d9..f209ed5 100644
--- a/examples/connector-ear/connector-sample-api/pom.xml
+++ b/examples/connector-ear/connector-sample-api/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.superbiz</groupId>
     <artifactId>connector-ear</artifactId>
-    <version>8.0.6-SNAPSHOT</version>
+    <version>8.0.7-SNAPSHOT</version>
   </parent>
   <artifactId>connector-sample-api</artifactId>
   <packaging>jar</packaging>
diff --git a/examples/connector-ear/connector-sample-ear/pom.xml b/examples/connector-ear/connector-sample-ear/pom.xml
index 5a31f83..0bae272 100644
--- a/examples/connector-ear/connector-sample-ear/pom.xml
+++ b/examples/connector-ear/connector-sample-ear/pom.xml
@@ -19,7 +19,7 @@
   <parent>
     <groupId>org.superbiz</groupId>
     <artifactId>connector-ear</artifactId>
-    <version>8.0.6-SNAPSHOT</version>
+    <version>8.0.7-SNAPSHOT</version>
   </parent>
   <modelVersion>4.0.0</modelVersion>
   <artifactId>connector-sample-ear</artifactId>
diff --git a/examples/connector-ear/connector-sample-functional-tests/pom.xml b/examples/connector-ear/connector-sample-functional-tests/pom.xml
index 9dac40f..9abd034 100644
--- a/examples/connector-ear/connector-sample-functional-tests/pom.xml
+++ b/examples/connector-ear/connector-sample-functional-tests/pom.xml
@@ -21,7 +21,7 @@
   <parent>
     <groupId>org.superbiz</groupId>
     <artifactId>connector-ear</artifactId>
-    <version>8.0.6-SNAPSHOT</version>
+    <version>8.0.7-SNAPSHOT</version>
   </parent>
   <modelVersion>4.0.0</modelVersion>
   <artifactId>connector-sample-functional-test</artifactId>
diff --git a/examples/connector-ear/connector-sample-impl/pom.xml b/examples/connector-ear/connector-sample-impl/pom.xml
index 29d291f..d4ff1d8 100644
--- a/examples/connector-ear/connector-sample-impl/pom.xml
+++ b/examples/connector-ear/connector-sample-impl/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.superbiz</groupId>
     <artifactId>connector-ear</artifactId>
-    <version>8.0.6-SNAPSHOT</version>
+    <version>8.0.7-SNAPSHOT</version>
   </parent>
   <artifactId>connector-sample-impl</artifactId>
   <packaging>jar</packaging>
diff --git a/examples/connector-ear/connector-sample-rar/pom.xml b/examples/connector-ear/connector-sample-rar/pom.xml
index e30b6b3..d4d568f 100644
--- a/examples/connector-ear/connector-sample-rar/pom.xml
+++ b/examples/connector-ear/connector-sample-rar/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.superbiz</groupId>
     <artifactId>connector-ear</artifactId>
-    <version>8.0.6-SNAPSHOT</version>
+    <version>8.0.7-SNAPSHOT</version>
   </parent>
   <artifactId>connector-sample-rar</artifactId>
   <packaging>rar</packaging>
diff --git a/examples/connector-ear/connector-sample-war/pom.xml b/examples/connector-ear/connector-sample-war/pom.xml
index a73c330..1f11ce5 100644
--- a/examples/connector-ear/connector-sample-war/pom.xml
+++ b/examples/connector-ear/connector-sample-war/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.superbiz</groupId>
     <artifactId>connector-ear</artifactId>
-    <version>8.0.6-SNAPSHOT</version>
+    <version>8.0.7-SNAPSHOT</version>
   </parent>
   <artifactId>connector-sample-war</artifactId>
   <packaging>war</packaging>
diff --git a/examples/connector-ear/pom.xml b/examples/connector-ear/pom.xml
index 7293c3d..f210724 100644
--- a/examples/connector-ear/pom.xml
+++ b/examples/connector-ear/pom.xml
@@ -16,11 +16,11 @@
   <groupId>org.superbiz</groupId>
   <artifactId>connector-ear</artifactId>
   <packaging>pom</packaging>
-  <version>8.0.6-SNAPSHOT</version>
+  <version>8.0.7-SNAPSHOT</version>
   <name>TomEE :: Connector Examples :: Connector in EAR</name>
   <properties>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
-    <tomee.version>8.0.6-SNAPSHOT</tomee.version>
+    <tomee.version>8.0.7-SNAPSHOT</tomee.version>
     <version.shrinkwrap.resolver>2.1.0</version.shrinkwrap.resolver>
     <surefire.version>2.21.0</surefire.version>
   </properties>
diff --git a/examples/connector-war/pom.xml b/examples/connector-war/pom.xml
index 054ff47..d114f5d 100644
--- a/examples/connector-war/pom.xml
+++ b/examples/connector-war/pom.xml
@@ -15,11 +15,11 @@
   <groupId>org.superbiz</groupId>
   <artifactId>connector-war</artifactId>
   <packaging>war</packaging>
-  <version>8.0.6-SNAPSHOT</version>
+  <version>8.0.7-SNAPSHOT</version>
   <name>TomEE :: Connector Examples :: Connector in WAR</name>
   <properties>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
-    <tomee.version>8.0.6-SNAPSHOT</tomee.version>
+    <tomee.version>8.0.7-SNAPSHOT</tomee.version>
     <version.shrinkwrap.resolver>2.1.0</version.shrinkwrap.resolver>
   </properties>
   <repositories>
diff --git a/examples/cucumber-jvm/pom.xml b/examples/cucumber-jvm/pom.xml
index 29cccd2..c08b49b 100644
--- a/examples/cucumber-jvm/pom.xml
+++ b/examples/cucumber-jvm/pom.xml
@@ -21,7 +21,7 @@
   <groupId>org.superbiz</groupId>
   <artifactId>cucumber-jvm</artifactId>
   <packaging>jar</packaging>
-  <version>8.0.6-SNAPSHOT</version>
+  <version>8.0.7-SNAPSHOT</version>
   <name>TomEE :: Examples :: Cucumber JVM</name>
   <properties>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
@@ -81,7 +81,7 @@
     <dependency>
       <groupId>org.apache.tomee</groupId>
       <artifactId>openejb-core</artifactId>
-      <version>8.0.6-SNAPSHOT</version>
+      <version>8.0.7-SNAPSHOT</version>
       <scope>test</scope>
     </dependency>
     <dependency>
diff --git a/examples/custom-injection/pom.xml b/examples/custom-injection/pom.xml
index 25908e3..52c0d9f 100644
--- a/examples/custom-injection/pom.xml
+++ b/examples/custom-injection/pom.xml
@@ -22,7 +22,7 @@
   <groupId>org.superbiz</groupId>
   <artifactId>custom-injection</artifactId>
   <packaging>jar</packaging>
-  <version>8.0.6-SNAPSHOT</version>
+  <version>8.0.7-SNAPSHOT</version>
   <name>TomEE :: Examples :: Expanded support for Env Entries</name>
   <properties>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
@@ -84,7 +84,7 @@
     <dependency>
       <groupId>org.apache.tomee</groupId>
       <artifactId>openejb-core</artifactId>
-      <version>8.0.6-SNAPSHOT</version>
+      <version>8.0.7-SNAPSHOT</version>
       <scope>test</scope>
     </dependency>
   </dependencies>
diff --git a/examples/datasource-ciphered-password/pom.xml b/examples/datasource-ciphered-password/pom.xml
index d615a2b..6f69a62 100644
--- a/examples/datasource-ciphered-password/pom.xml
+++ b/examples/datasource-ciphered-password/pom.xml
@@ -20,11 +20,11 @@
   <groupId>org.superbiz</groupId>
   <artifactId>datasource-ciphered-password</artifactId>
   <packaging>jar</packaging>
-  <version>8.0.6-SNAPSHOT</version>
+  <version>8.0.7-SNAPSHOT</version>
   <name>TomEE :: Examples :: Datasource Ciphered Password</name>
   <properties>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
-    <tomee.version>8.0.6-SNAPSHOT</tomee.version>
+    <tomee.version>8.0.7-SNAPSHOT</tomee.version>
   </properties>
   <build>
     <defaultGoal>install</defaultGoal>
diff --git a/examples/datasource-definition/pom.xml b/examples/datasource-definition/pom.xml
index d852272..724d19a 100644
--- a/examples/datasource-definition/pom.xml
+++ b/examples/datasource-definition/pom.xml
@@ -20,11 +20,11 @@
   <groupId>org.superbiz</groupId>
   <artifactId>datasource-definition</artifactId>
   <packaging>jar</packaging>
-  <version>8.0.6-SNAPSHOT</version>
+  <version>8.0.7-SNAPSHOT</version>
   <name>TomEE :: Examples :: Datasource Definition</name>
   <properties>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
-    <tomee.version>8.0.6-SNAPSHOT</tomee.version>
+    <tomee.version>8.0.7-SNAPSHOT</tomee.version>
   </properties>
   <build>
     <defaultGoal>install</defaultGoal>
diff --git a/examples/datasource-versioning/pom.xml b/examples/datasource-versioning/pom.xml
index e63b36d2..31dd29e 100644
--- a/examples/datasource-versioning/pom.xml
+++ b/examples/datasource-versioning/pom.xml
@@ -21,12 +21,12 @@
   <groupId>org.superbiz</groupId>
   <artifactId>datasource-versioning</artifactId>
   <packaging>jar</packaging>
-  <version>8.0.6-SNAPSHOT</version>
+  <version>8.0.7-SNAPSHOT</version>
   <name>TomEE :: Examples :: Datasource Versioning</name>
 
   <properties>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
-    <tomee.version>8.0.6-SNAPSHOT</tomee.version>
+    <tomee.version>8.0.7-SNAPSHOT</tomee.version>
   </properties>
 
   <build>
@@ -164,7 +164,7 @@
     <dependency>
       <groupId>org.apache.tomee</groupId>
       <artifactId>openejb-core</artifactId>
-      <version>8.0.6-SNAPSHOT</version>
+      <version>8.0.7-SNAPSHOT</version>
       <scope>test</scope>
     </dependency>
     <dependency>
@@ -176,7 +176,7 @@
     <dependency>
       <groupId>org.apache.tomee</groupId>
       <artifactId>tomee-jdbc</artifactId>
-      <version>8.0.6-SNAPSHOT</version>
+      <version>8.0.7-SNAPSHOT</version>
       <scope>test</scope>
     </dependency>
   </dependencies>
diff --git a/examples/decorators/pom.xml b/examples/decorators/pom.xml
index 8be249a..a16c322 100644
--- a/examples/decorators/pom.xml
+++ b/examples/decorators/pom.xml
@@ -22,7 +22,7 @@
   <groupId>org.superbiz</groupId>
   <artifactId>decorators</artifactId>
   <packaging>jar</packaging>
-  <version>8.0.6-SNAPSHOT</version>
+  <version>8.0.7-SNAPSHOT</version>
   <name>TomEE :: Examples :: Decorators</name>
   <properties>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
@@ -84,7 +84,7 @@
     <dependency>
       <groupId>org.apache.tomee</groupId>
       <artifactId>openejb-core</artifactId>
-      <version>8.0.6-SNAPSHOT</version>
+      <version>8.0.7-SNAPSHOT</version>
       <scope>test</scope>
     </dependency>
   </dependencies>
diff --git a/examples/deltaspike-configproperty/pom.xml b/examples/deltaspike-configproperty/pom.xml
index d660de5..2955da7 100644
--- a/examples/deltaspike-configproperty/pom.xml
+++ b/examples/deltaspike-configproperty/pom.xml
@@ -21,7 +21,7 @@
   <groupId>org.superbiz</groupId>
   <artifactId>deltaspike-configproperty</artifactId>
   <packaging>jar</packaging>
-  <version>8.0.6-SNAPSHOT</version>
+  <version>8.0.7-SNAPSHOT</version>
   <name>TomEE :: Examples :: DeltaSpike @ConfigProperty</name>
   <properties>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
@@ -92,13 +92,13 @@
     <dependency>
       <groupId>org.apache.tomee</groupId>
       <artifactId>arquillian-openejb-embedded</artifactId>
-      <version>8.0.6-SNAPSHOT</version>
+      <version>8.0.7-SNAPSHOT</version>
       <scope>test</scope>
     </dependency>
     <dependency>
       <groupId>org.apache.tomee</groupId>
       <artifactId>ziplock</artifactId>
-      <version>8.0.6-SNAPSHOT</version>
+      <version>8.0.7-SNAPSHOT</version>
       <scope>test</scope>
     </dependency>
   </dependencies>
diff --git a/examples/deltaspike-exception-handling/pom.xml b/examples/deltaspike-exception-handling/pom.xml
index 869c8dc..b3266cb 100644
--- a/examples/deltaspike-exception-handling/pom.xml
+++ b/examples/deltaspike-exception-handling/pom.xml
@@ -21,7 +21,7 @@
   <groupId>org.superbiz</groupId>
   <artifactId>deltaspike-exception-handling</artifactId>
   <packaging>jar</packaging>
-  <version>8.0.6-SNAPSHOT</version>
+  <version>8.0.7-SNAPSHOT</version>
   <name>TomEE :: Examples :: DeltaSpike Exception Handling</name>
   <properties>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
@@ -92,13 +92,13 @@
     <dependency>
       <groupId>org.apache.tomee</groupId>
       <artifactId>arquillian-openejb-embedded</artifactId>
-      <version>8.0.6-SNAPSHOT</version>
+      <version>8.0.7-SNAPSHOT</version>
       <scope>test</scope>
     </dependency>
     <dependency>
       <groupId>org.apache.tomee</groupId>
       <artifactId>ziplock</artifactId>
-      <version>8.0.6-SNAPSHOT</version>
+      <version>8.0.7-SNAPSHOT</version>
       <scope>test</scope>
     </dependency>
   </dependencies>
diff --git a/examples/deltaspike-fullstack/pom.xml b/examples/deltaspike-fullstack/pom.xml
index c52d0f8..84a0410 100644
--- a/examples/deltaspike-fullstack/pom.xml
+++ b/examples/deltaspike-fullstack/pom.xml
@@ -14,14 +14,14 @@
   <groupId>org.superbiz</groupId>
   <artifactId>deltaspike-fullstack</artifactId>
   <name>TomEE :: Examples :: JSF2/CDI/BV/JPA/DeltaSpike</name>
-  <version>8.0.6-SNAPSHOT</version>
+  <version>8.0.7-SNAPSHOT</version>
   <packaging>war</packaging>
   <properties>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
     <version.myfaces2>2.3.0</version.myfaces2>
     <version.deltaspike>1.9.3</version.deltaspike>
     <version.extval>2.0.8</version.extval>
-    <tomee.version>8.0.6-SNAPSHOT</tomee.version>
+    <tomee.version>8.0.7-SNAPSHOT</tomee.version>
   </properties>
   <build>
     <defaultGoal>install</defaultGoal>
diff --git a/examples/deltaspike-i18n/pom.xml b/examples/deltaspike-i18n/pom.xml
index c07e687..e64ecd0 100644
--- a/examples/deltaspike-i18n/pom.xml
+++ b/examples/deltaspike-i18n/pom.xml
@@ -21,7 +21,7 @@
   <groupId>org.superbiz</groupId>
   <artifactId>deltaspike-i18n</artifactId>
   <packaging>jar</packaging>
-  <version>8.0.6-SNAPSHOT</version>
+  <version>8.0.7-SNAPSHOT</version>
   <name>TomEE :: Examples :: DeltaSpike I18n</name>
   <properties>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
@@ -92,13 +92,13 @@
     <dependency>
       <groupId>org.apache.tomee</groupId>
       <artifactId>arquillian-openejb-embedded</artifactId>
-      <version>8.0.6-SNAPSHOT</version>
+      <version>8.0.7-SNAPSHOT</version>
       <scope>test</scope>
     </dependency>
     <dependency>
       <groupId>org.apache.tomee</groupId>
       <artifactId>ziplock</artifactId>
-      <version>8.0.6-SNAPSHOT</version>
+      <version>8.0.7-SNAPSHOT</version>
       <scope>test</scope>
     </dependency>
   </dependencies>
diff --git a/examples/dynamic-dao-implementation/pom.xml b/examples/dynamic-dao-implementation/pom.xml
index 11838aa..9ea9992 100644
--- a/examples/dynamic-dao-implementation/pom.xml
+++ b/examples/dynamic-dao-implementation/pom.xml
@@ -21,7 +21,7 @@
   <groupId>org.superbiz</groupId>
   <artifactId>dynamic-dao-implementation</artifactId>
   <packaging>jar</packaging>
-  <version>8.0.6-SNAPSHOT</version>
+  <version>8.0.7-SNAPSHOT</version>
   <name>TomEE :: Examples :: Dynamic DAO Implementation</name>
   <properties>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
@@ -91,7 +91,7 @@
     <dependency>
       <groupId>org.apache.tomee</groupId>
       <artifactId>openejb-core</artifactId>
-      <version>8.0.6-SNAPSHOT</version>
+      <version>8.0.7-SNAPSHOT</version>
       <scope>test</scope>
     </dependency>
   </dependencies>
diff --git a/examples/dynamic-datasource-routing/pom.xml b/examples/dynamic-datasource-routing/pom.xml
index eea3de3..036588a 100644
--- a/examples/dynamic-datasource-routing/pom.xml
+++ b/examples/dynamic-datasource-routing/pom.xml
@@ -20,11 +20,11 @@
   <groupId>org.superbiz</groupId>
   <artifactId>dynamic-datasource-routing</artifactId>
   <packaging>jar</packaging>
-  <version>8.0.6-SNAPSHOT</version>
+  <version>8.0.7-SNAPSHOT</version>
   <name>TomEE :: Examples :: Dynamic Datasource Routing</name>
   <properties>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
-    <tomee.version>8.0.6-SNAPSHOT</tomee.version>
+    <tomee.version>8.0.7-SNAPSHOT</tomee.version>
   </properties>
   <build>
     <defaultGoal>install</defaultGoal>
diff --git a/examples/dynamic-implementation/pom.xml b/examples/dynamic-implementation/pom.xml
index b058f59..11a2cc1 100644
--- a/examples/dynamic-implementation/pom.xml
+++ b/examples/dynamic-implementation/pom.xml
@@ -20,7 +20,7 @@
   <groupId>org.superbiz</groupId>
   <artifactId>dynamic-implementation</artifactId>
   <packaging>jar</packaging>
-  <version>8.0.6-SNAPSHOT</version>
+  <version>8.0.7-SNAPSHOT</version>
   <name>TomEE :: Examples :: Dynamic Implementation</name>
   <properties>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
@@ -72,7 +72,7 @@
     <dependency>
       <groupId>org.apache.tomee</groupId>
       <artifactId>openejb-api</artifactId>
-      <version>8.0.6-SNAPSHOT</version>
+      <version>8.0.7-SNAPSHOT</version>
     </dependency>
     <dependency>
       <groupId>junit</groupId>
@@ -87,7 +87,7 @@
     <dependency>
       <groupId>org.apache.tomee</groupId>
       <artifactId>openejb-core</artifactId>
-      <version>8.0.6-SNAPSHOT</version>
+      <version>8.0.7-SNAPSHOT</version>
       <scope>test</scope>
     </dependency>
   </dependencies>
diff --git a/examples/dynamic-proxy-to-access-mbean/pom.xml b/examples/dynamic-proxy-to-access-mbean/pom.xml
index fd5e029..6a1292c 100644
--- a/examples/dynamic-proxy-to-access-mbean/pom.xml
+++ b/examples/dynamic-proxy-to-access-mbean/pom.xml
@@ -20,7 +20,7 @@
   <groupId>org.superbiz</groupId>
   <artifactId>dynamic-proxy-to-access-mbean</artifactId>
   <packaging>jar</packaging>
-  <version>8.0.6-SNAPSHOT</version>
+  <version>8.0.7-SNAPSHOT</version>
   <name>TomEE :: Examples :: Dynamic MBean Proxy</name>
   <properties>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
@@ -80,7 +80,7 @@
     <dependency>
       <groupId>org.apache.tomee</groupId>
       <artifactId>openejb-api</artifactId>
-      <version>8.0.6-SNAPSHOT</version>
+      <version>8.0.7-SNAPSHOT</version>
       <scope>provided</scope>
     </dependency>
     <dependency>
@@ -96,7 +96,7 @@
     <dependency>
       <groupId>org.apache.tomee</groupId>
       <artifactId>openejb-core</artifactId>
-      <version>8.0.6-SNAPSHOT</version>
+      <version>8.0.7-SNAPSHOT</version>
       <scope>test</scope>
     </dependency>
   </dependencies>
diff --git a/examples/ear-testing/business-logic/pom.xml b/examples/ear-testing/business-logic/pom.xml
index 1d2dcae..7051267 100644
--- a/examples/ear-testing/business-logic/pom.xml
+++ b/examples/ear-testing/business-logic/pom.xml
@@ -21,7 +21,7 @@
   <parent>
     <groupId>org.superbiz</groupId>
     <artifactId>ear-testing</artifactId>
-    <version>8.0.6-SNAPSHOT</version>
+    <version>8.0.7-SNAPSHOT</version>
   </parent>
   <modelVersion>4.0.0</modelVersion>
   <artifactId>business-logic</artifactId>
@@ -91,7 +91,7 @@
     <dependency>
       <groupId>org.apache.tomee</groupId>
       <artifactId>openejb-core</artifactId>
-      <version>8.0.6-SNAPSHOT</version>
+      <version>8.0.7-SNAPSHOT</version>
       <scope>test</scope>
     </dependency>
   </dependencies>
diff --git a/examples/ear-testing/business-model/pom.xml b/examples/ear-testing/business-model/pom.xml
index ea98dd6..ee73582 100644
--- a/examples/ear-testing/business-model/pom.xml
+++ b/examples/ear-testing/business-model/pom.xml
@@ -21,7 +21,7 @@
   <parent>
     <groupId>org.superbiz</groupId>
     <artifactId>ear-testing</artifactId>
-    <version>8.0.6-SNAPSHOT</version>
+    <version>8.0.7-SNAPSHOT</version>
   </parent>
   <modelVersion>4.0.0</modelVersion>
   <artifactId>business-model</artifactId>
diff --git a/examples/ear-testing/pom.xml b/examples/ear-testing/pom.xml
index 5b78cf3..c041aec 100644
--- a/examples/ear-testing/pom.xml
+++ b/examples/ear-testing/pom.xml
@@ -21,7 +21,7 @@
   <modelVersion>4.0.0</modelVersion>
   <groupId>org.superbiz</groupId>
   <artifactId>ear-testing</artifactId>
-  <version>8.0.6-SNAPSHOT</version>
+  <version>8.0.7-SNAPSHOT</version>
   <packaging>pom</packaging>
   <name>TomEE :: Examples :: Ear Testing</name>
   <modules>
diff --git a/examples/ejb-examples/pom.xml b/examples/ejb-examples/pom.xml
index aab861a..a61ba32 100644
--- a/examples/ejb-examples/pom.xml
+++ b/examples/ejb-examples/pom.xml
@@ -22,7 +22,7 @@
   <groupId>org.superbiz</groupId>
   <artifactId>ejb-examples</artifactId>
   <packaging>war</packaging>
-  <version>8.0.6-SNAPSHOT</version>
+  <version>8.0.7-SNAPSHOT</version>
   <name>TomEE :: Web Examples :: EJB Examples War</name>
   <properties>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
@@ -59,7 +59,7 @@
       <plugin>
         <groupId>org.apache.tomee.maven</groupId>
         <artifactId>tomee-maven-plugin</artifactId>
-        <version>8.0.6-SNAPSHOT</version>
+        <version>8.0.7-SNAPSHOT</version>
         <configuration>
           <context>/ejb-examples</context>
           <tomeeClassifier>plus</tomeeClassifier>
diff --git a/examples/ejb-remote-call-2/pom.xml b/examples/ejb-remote-call-2/pom.xml
index b827817..c290342 100644
--- a/examples/ejb-remote-call-2/pom.xml
+++ b/examples/ejb-remote-call-2/pom.xml
@@ -22,7 +22,7 @@
   <groupId>org.superbiz</groupId>
   <artifactId>ejb-remote-call-2</artifactId>
   <packaging>war</packaging>
-  <version>8.0.6-SNAPSHOT</version>
+  <version>8.0.7-SNAPSHOT</version>
   <name>TomEE :: Web Examples :: EJB Remote Call</name>
   <properties>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
@@ -59,7 +59,7 @@
       <plugin>
         <groupId>org.apache.tomee.maven</groupId>
         <artifactId>tomee-maven-plugin</artifactId>
-        <version>8.0.6-SNAPSHOT</version>
+        <version>8.0.7-SNAPSHOT</version>
         <configuration>
           <args>-Xmx512m -XX:PermSize=256m</args>
           <config>${project.basedir}/src/test/conf</config>
diff --git a/examples/ejb-remote-call/pom.xml b/examples/ejb-remote-call/pom.xml
index c0817b5..3496eff 100644
--- a/examples/ejb-remote-call/pom.xml
+++ b/examples/ejb-remote-call/pom.xml
@@ -22,7 +22,7 @@
   <groupId>org.superbiz</groupId>
   <artifactId>ejb-remote-call</artifactId>
   <packaging>war</packaging>
-  <version>8.0.6-SNAPSHOT</version>
+  <version>8.0.7-SNAPSHOT</version>
   <name>TomEE :: Web Examples :: EJB Remote Call</name>
   <properties>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
@@ -59,7 +59,7 @@
       <plugin>
         <groupId>org.apache.tomee.maven</groupId>
         <artifactId>tomee-maven-plugin</artifactId>
-        <version>8.0.6-SNAPSHOT</version>
+        <version>8.0.7-SNAPSHOT</version>
         <configuration>
           <args>-Xmx512m -XX:PermSize=256m</args>
           <config>${project.basedir}/src/test/conf</config>
diff --git a/examples/ejb-webservice/pom.xml b/examples/ejb-webservice/pom.xml
index 893019b..207f00a 100644
--- a/examples/ejb-webservice/pom.xml
+++ b/examples/ejb-webservice/pom.xml
@@ -22,7 +22,7 @@
   <groupId>org.superbiz</groupId>
   <artifactId>ejb-webservice</artifactId>
   <packaging>war</packaging>
-  <version>8.0.6-SNAPSHOT</version>
+  <version>8.0.7-SNAPSHOT</version>
   <name>TomEE :: Web Examples :: EJB WebService</name>
   <properties>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
diff --git a/examples/groovy-cdi/pom.xml b/examples/groovy-cdi/pom.xml
index cd06fae..7324035 100644
--- a/examples/groovy-cdi/pom.xml
+++ b/examples/groovy-cdi/pom.xml
@@ -21,7 +21,7 @@
   <groupId>org.superbiz</groupId>
   <artifactId>groovy-cdi</artifactId>
   <packaging>jar</packaging>
-  <version>8.0.6-SNAPSHOT</version>
+  <version>8.0.7-SNAPSHOT</version>
   <name>TomEE :: Examples :: Groovy CDI</name>
   <properties>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
@@ -92,7 +92,7 @@
     <dependency>
       <groupId>org.apache.tomee.bom</groupId>
       <artifactId>jaxb-runtime</artifactId>
-      <version>8.0.6-SNAPSHOT</version>
+      <version>8.0.7-SNAPSHOT</version>
       <type>pom</type>
     </dependency>
     <dependency>
@@ -104,13 +104,13 @@
     <dependency>
       <groupId>org.apache.tomee</groupId>
       <artifactId>arquillian-openejb-embedded</artifactId>
-      <version>8.0.6-SNAPSHOT</version>
+      <version>8.0.7-SNAPSHOT</version>
       <scope>test</scope>
     </dependency>
     <dependency>
       <groupId>org.apache.tomee</groupId>
       <artifactId>ziplock</artifactId>
-      <version>8.0.6-SNAPSHOT</version>
+      <version>8.0.7-SNAPSHOT</version>
       <scope>test</scope>
     </dependency>
   </dependencies>
diff --git a/examples/groovy-jpa/pom.xml b/examples/groovy-jpa/pom.xml
index 5781a75..01d26a1 100644
--- a/examples/groovy-jpa/pom.xml
+++ b/examples/groovy-jpa/pom.xml
@@ -23,7 +23,7 @@
   <groupId>org.superbiz</groupId>
   <artifactId>groovy-jpa</artifactId>
   <packaging>jar</packaging>
-  <version>8.0.6-SNAPSHOT</version>
+  <version>8.0.7-SNAPSHOT</version>
   <name>TomEE :: Examples :: Groovy JPA</name>
 
   <properties>
@@ -91,7 +91,7 @@
     <dependency>
       <groupId>org.apache.tomee.bom</groupId>
       <artifactId>jaxb-runtime</artifactId>
-      <version>8.0.6-SNAPSHOT</version>
+      <version>8.0.7-SNAPSHOT</version>
       <type>pom</type>
     </dependency>
     <dependency>
@@ -103,13 +103,13 @@
     <dependency>
       <groupId>org.apache.tomee</groupId>
       <artifactId>arquillian-openejb-embedded</artifactId>
-      <version>8.0.6-SNAPSHOT</version>
+      <version>8.0.7-SNAPSHOT</version>
       <scope>test</scope>
     </dependency>
     <dependency>
       <groupId>org.apache.tomee</groupId>
       <artifactId>ziplock</artifactId>
-      <version>8.0.6-SNAPSHOT</version>
+      <version>8.0.7-SNAPSHOT</version>
       <scope>test</scope>
     </dependency>
   </dependencies>
diff --git a/examples/groovy-spock/pom.xml b/examples/groovy-spock/pom.xml
index cfad506..87bbaa9 100644
--- a/examples/groovy-spock/pom.xml
+++ b/examples/groovy-spock/pom.xml
@@ -21,7 +21,7 @@
   <groupId>org.superbiz</groupId>
   <artifactId>groovy-spock</artifactId>
   <packaging>jar</packaging>
-  <version>8.0.6-SNAPSHOT</version>
+  <version>8.0.7-SNAPSHOT</version>
   <name>TomEE :: Examples :: Groovy Spock</name>
   <properties>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
@@ -103,7 +103,7 @@
     <dependency>
       <groupId>org.apache.tomee.bom</groupId>
       <artifactId>jaxb-runtime</artifactId>
-      <version>8.0.6-SNAPSHOT</version>
+      <version>8.0.7-SNAPSHOT</version>
       <type>pom</type>
     </dependency>
     <dependency>
@@ -115,7 +115,7 @@
     <dependency>
       <groupId>org.apache.tomee</groupId>
       <artifactId>arquillian-openejb-embedded</artifactId>
-      <version>8.0.6-SNAPSHOT</version>
+      <version>8.0.7-SNAPSHOT</version>
       <scope>test</scope>
     </dependency>
     <dependency>
@@ -127,7 +127,7 @@
     <dependency>
       <groupId>org.apache.tomee</groupId>
       <artifactId>ziplock</artifactId>
-      <version>8.0.6-SNAPSHOT</version>
+      <version>8.0.7-SNAPSHOT</version>
       <scope>test</scope>
     </dependency>
     <dependency>
diff --git a/examples/helloworld-weblogic/pom.xml b/examples/helloworld-weblogic/pom.xml
index 9505641..57cf40d 100644
--- a/examples/helloworld-weblogic/pom.xml
+++ b/examples/helloworld-weblogic/pom.xml
@@ -22,7 +22,7 @@
   <groupId>org.superbiz</groupId>
   <artifactId>helloworld-weblogic</artifactId>
   <packaging>jar</packaging>
-  <version>8.0.6-SNAPSHOT</version>
+  <version>8.0.7-SNAPSHOT</version>
   <name>TomEE :: Examples :: Hello World - Weblogic</name>
   <properties>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
@@ -84,7 +84,7 @@
     <dependency>
       <groupId>org.apache.tomee</groupId>
       <artifactId>openejb-core</artifactId>
-      <version>8.0.6-SNAPSHOT</version>
+      <version>8.0.7-SNAPSHOT</version>
       <scope>test</scope>
     </dependency>
   </dependencies>
diff --git a/examples/injection-of-connectionfactory/pom.xml b/examples/injection-of-connectionfactory/pom.xml
index 268ed3c..8d7d77c 100644
--- a/examples/injection-of-connectionfactory/pom.xml
+++ b/examples/injection-of-connectionfactory/pom.xml
@@ -22,7 +22,7 @@
   <groupId>org.superbiz</groupId>
   <artifactId>injection-of-connectionfactory</artifactId>
   <packaging>jar</packaging>
-  <version>8.0.6-SNAPSHOT</version>
+  <version>8.0.7-SNAPSHOT</version>
   <name>TomEE :: Examples :: @Resource javax.jms.ConnectionFactory</name>
   <properties>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
@@ -84,7 +84,7 @@
     <dependency>
       <groupId>org.apache.tomee</groupId>
       <artifactId>openejb-core</artifactId>
-      <version>8.0.6-SNAPSHOT</version>
+      <version>8.0.7-SNAPSHOT</version>
       <scope>test</scope>
     </dependency>
   </dependencies>
diff --git a/examples/injection-of-datasource/pom.xml b/examples/injection-of-datasource/pom.xml
index cb4a230..ae47c7b 100644
--- a/examples/injection-of-datasource/pom.xml
+++ b/examples/injection-of-datasource/pom.xml
@@ -24,7 +24,7 @@
   <groupId>org.superbiz</groupId>
   <artifactId>injection-of-datasource</artifactId>
   <packaging>jar</packaging>
-  <version>8.0.6-SNAPSHOT</version>
+  <version>8.0.7-SNAPSHOT</version>
   <name>TomEE :: Examples :: @Resource DataSource Injection</name>
   <properties>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
@@ -71,7 +71,7 @@
     <dependency>
       <groupId>org.apache.tomee</groupId>
       <artifactId>openejb-core</artifactId>
-      <version>8.0.6-SNAPSHOT</version>
+      <version>8.0.7-SNAPSHOT</version>
       <scope>test</scope>
     </dependency>
 
diff --git a/examples/injection-of-ejbs/pom.xml b/examples/injection-of-ejbs/pom.xml
index 414fff5..5727e26 100644
--- a/examples/injection-of-ejbs/pom.xml
+++ b/examples/injection-of-ejbs/pom.xml
@@ -22,7 +22,7 @@
   <groupId>org.superbiz</groupId>
   <artifactId>injection-of-ejbs</artifactId>
   <packaging>jar</packaging>
-  <version>8.0.6-SNAPSHOT</version>
+  <version>8.0.7-SNAPSHOT</version>
   <name>TomEE :: Examples :: @EJB Injection</name>
   <properties>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
@@ -84,7 +84,7 @@
     <dependency>
       <groupId>org.apache.tomee</groupId>
       <artifactId>openejb-core</artifactId>
-      <version>8.0.6-SNAPSHOT</version>
+      <version>8.0.7-SNAPSHOT</version>
       <scope>test</scope>
     </dependency>
   </dependencies>
diff --git a/examples/injection-of-entitymanager/pom.xml b/examples/injection-of-entitymanager/pom.xml
index a78953a..bc0af71 100644
--- a/examples/injection-of-entitymanager/pom.xml
+++ b/examples/injection-of-entitymanager/pom.xml
@@ -24,7 +24,7 @@
   <groupId>org.superbiz</groupId>
   <artifactId>injection-of-entitymanager</artifactId>
   <packaging>jar</packaging>
-  <version>8.0.6-SNAPSHOT</version>
+  <version>8.0.7-SNAPSHOT</version>
   <name>TomEE :: Examples :: @PersistenceContext EntityManager Injection</name>
   <properties>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
@@ -78,7 +78,7 @@
     <dependency>
       <groupId>org.apache.tomee</groupId>
       <artifactId>openejb-core</artifactId>
-      <version>8.0.6-SNAPSHOT</version>
+      <version>8.0.7-SNAPSHOT</version>
       <scope>test</scope>
     </dependency>
   </dependencies>
diff --git a/examples/injection-of-env-entry/pom.xml b/examples/injection-of-env-entry/pom.xml
index e13cf32..241af98 100644
--- a/examples/injection-of-env-entry/pom.xml
+++ b/examples/injection-of-env-entry/pom.xml
@@ -22,7 +22,7 @@
   <groupId>org.superbiz</groupId>
   <artifactId>injection-of-env-entry</artifactId>
   <packaging>jar</packaging>
-  <version>8.0.6-SNAPSHOT</version>
+  <version>8.0.7-SNAPSHOT</version>
   <name>TomEE :: Examples :: @Resource env-entry Injection</name>
   <properties>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
@@ -84,7 +84,7 @@
     <dependency>
       <groupId>org.apache.tomee</groupId>
       <artifactId>openejb-core</artifactId>
-      <version>8.0.6-SNAPSHOT</version>
+      <version>8.0.7-SNAPSHOT</version>
       <scope>test</scope>
     </dependency>
   </dependencies>
diff --git a/examples/interceptors/pom.xml b/examples/interceptors/pom.xml
index f0f7469..9367627 100644
--- a/examples/interceptors/pom.xml
+++ b/examples/interceptors/pom.xml
@@ -22,7 +22,7 @@
   <groupId>org.superbiz</groupId>
   <artifactId>interceptors</artifactId>
   <packaging>jar</packaging>
-  <version>8.0.6-SNAPSHOT</version>
+  <version>8.0.7-SNAPSHOT</version>
   <name>TomEE :: Examples :: Interceptors</name>
   <properties>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
@@ -84,7 +84,7 @@
     <dependency>
       <groupId>org.apache.tomee</groupId>
       <artifactId>openejb-core</artifactId>
-      <version>8.0.6-SNAPSHOT</version>
+      <version>8.0.7-SNAPSHOT</version>
       <scope>test</scope>
     </dependency>
   </dependencies>
diff --git a/examples/java-modules/pom.xml b/examples/java-modules/pom.xml
index c7b3025..436e267 100644
--- a/examples/java-modules/pom.xml
+++ b/examples/java-modules/pom.xml
@@ -21,11 +21,11 @@
   <groupId>org.superbiz</groupId>
   <artifactId>java-modules</artifactId>
   <packaging>war</packaging>
-  <version>8.0.6-SNAPSHOT</version>
+  <version>8.0.7-SNAPSHOT</version>
   <name>TomEE :: Web Examples :: Java Modules (Simple REST resource)</name>
   <properties>
     <arquillian.version>1.1.10.Final</arquillian.version>
-    <tomee.version>8.0.6-SNAPSHOT</tomee.version>
+    <tomee.version>8.0.7-SNAPSHOT</tomee.version>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
   </properties>
   <repositories>
diff --git a/examples/javamail/pom.xml b/examples/javamail/pom.xml
index 56e2ad7..0bbcc48 100644
--- a/examples/javamail/pom.xml
+++ b/examples/javamail/pom.xml
@@ -20,7 +20,7 @@
   <modelVersion>4.0.0</modelVersion>
   <groupId>org.superbiz</groupId>
   <artifactId>javamail</artifactId>
-  <version>8.0.6-SNAPSHOT</version>
+  <version>8.0.7-SNAPSHOT</version>
   <name>TomEE :: Examples :: JavaMail API</name>
   <properties>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
@@ -88,7 +88,7 @@
     <dependency>
       <groupId>org.apache.tomee</groupId>
       <artifactId>openejb-cxf-rs</artifactId>
-      <version>8.0.6-SNAPSHOT</version>
+      <version>8.0.7-SNAPSHOT</version>
       <scope>test</scope>
     </dependency>
   </dependencies>
diff --git a/examples/jaxrs-filter/pom.xml b/examples/jaxrs-filter/pom.xml
index 0f07afd..15694b0 100644
--- a/examples/jaxrs-filter/pom.xml
+++ b/examples/jaxrs-filter/pom.xml
@@ -20,7 +20,7 @@
   <groupId>org.superbiz</groupId>
   <artifactId>jaxrs-filter</artifactId>
   <packaging>war</packaging>
-  <version>8.0.6-SNAPSHOT</version>
+  <version>8.0.7-SNAPSHOT</version>
   <name>TomEE :: Examples :: JAXRS Filter</name>
   <url>http://maven.apache.org</url>
   <dependencies>
diff --git a/examples/jaxrs-json-provider-jettison/pom.xml b/examples/jaxrs-json-provider-jettison/pom.xml
index 21af352..88021b6 100755
--- a/examples/jaxrs-json-provider-jettison/pom.xml
+++ b/examples/jaxrs-json-provider-jettison/pom.xml
@@ -20,7 +20,7 @@
   <modelVersion>4.0.0</modelVersion>
   <groupId>org.superbiz</groupId>
   <artifactId>jaxrs-json-provider-jettison</artifactId>
-  <version>8.0.6-SNAPSHOT</version>
+  <version>8.0.7-SNAPSHOT</version>
   <packaging>war</packaging>
   <name>TomEE :: Examples :: JAXRS JSON Provider with Jettison </name>
   <properties>
@@ -38,7 +38,7 @@
     <dependency>
       <groupId>org.apache.tomee.bom</groupId>
       <artifactId>jaxb-runtime</artifactId>
-      <version>8.0.6-SNAPSHOT</version>
+      <version>8.0.7-SNAPSHOT</version>
       <type>pom</type>
       <scope>provided</scope>
     </dependency>
diff --git a/examples/jpa-eclipselink/pom.xml b/examples/jpa-eclipselink/pom.xml
index fb308b7..0386e9c 100644
--- a/examples/jpa-eclipselink/pom.xml
+++ b/examples/jpa-eclipselink/pom.xml
@@ -22,7 +22,7 @@
   <groupId>org.superbiz</groupId>
   <artifactId>jpa-eclipselink</artifactId>
   <packaging>jar</packaging>
-  <version>8.0.6-SNAPSHOT</version>
+  <version>8.0.7-SNAPSHOT</version>
   <name>TomEE :: Examples :: JPA with EclipseLink</name>
   <properties>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
@@ -96,14 +96,14 @@
     <dependency>
       <groupId>org.apache.tomee</groupId>
       <artifactId>openejb-core</artifactId>
-      <version>8.0.6-SNAPSHOT</version>
+      <version>8.0.7-SNAPSHOT</version>
       <scope>test</scope>
     </dependency>
     <!-- EclipseLink dependencies -->
     <dependency>
       <groupId>org.eclipse.persistence</groupId>
       <artifactId>eclipselink</artifactId>
-      <version>2.7.4</version>
+      <version>2.7.7</version>
       <scope>test</scope>
     </dependency>
   </dependencies>
diff --git a/examples/jpa-enumerated/pom.xml b/examples/jpa-enumerated/pom.xml
index b972246..97359c0 100644
--- a/examples/jpa-enumerated/pom.xml
+++ b/examples/jpa-enumerated/pom.xml
@@ -22,7 +22,7 @@
   <groupId>org.superbiz</groupId>
   <artifactId>jpa-enumerated</artifactId>
   <packaging>jar</packaging>
-  <version>8.0.6-SNAPSHOT</version>
+  <version>8.0.7-SNAPSHOT</version>
   <name>TomEE :: Examples :: JPA @Enumerated</name>
   <properties>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
@@ -92,7 +92,7 @@
     <dependency>
       <groupId>org.apache.tomee</groupId>
       <artifactId>openejb-core</artifactId>
-      <version>8.0.6-SNAPSHOT</version>
+      <version>8.0.7-SNAPSHOT</version>
       <scope>test</scope>
     </dependency>
   </dependencies>
diff --git a/examples/jpa-hibernate/pom.xml b/examples/jpa-hibernate/pom.xml
index e717428..9905690 100644
--- a/examples/jpa-hibernate/pom.xml
+++ b/examples/jpa-hibernate/pom.xml
@@ -22,7 +22,7 @@
   <groupId>org.superbiz</groupId>
   <artifactId>jpa-hibernate</artifactId>
   <packaging>jar</packaging>
-  <version>8.0.6-SNAPSHOT</version>
+  <version>8.0.7-SNAPSHOT</version>
   <name>TomEE :: Examples :: JPA with Hibernate</name>
   <properties>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
@@ -95,7 +95,7 @@
     <dependency>
       <groupId>org.apache.tomee</groupId>
       <artifactId>openejb-core-hibernate</artifactId>
-      <version>8.0.6-SNAPSHOT</version>
+      <version>8.0.7-SNAPSHOT</version>
       <type>pom</type>
       <scope>test</scope>
     </dependency>
diff --git a/examples/jsf-cdi-and-ejb/pom.xml b/examples/jsf-cdi-and-ejb/pom.xml
index 9c23d00..705b19f 100644
--- a/examples/jsf-cdi-and-ejb/pom.xml
+++ b/examples/jsf-cdi-and-ejb/pom.xml
@@ -23,7 +23,7 @@
   <artifactId>jsf-cdi-and-ejb</artifactId>
   <packaging>war</packaging>
   <name>TomEE :: Web Examples :: JSF - CDI and EJB</name>
-  <version>8.0.6-SNAPSHOT</version>
+  <version>8.0.7-SNAPSHOT</version>
   <url>http://tomee.apache.org</url>
   <properties>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
diff --git a/examples/jsf-managedBean-and-ejb/pom.xml b/examples/jsf-managedBean-and-ejb/pom.xml
index 8f44354..2c02198 100644
--- a/examples/jsf-managedBean-and-ejb/pom.xml
+++ b/examples/jsf-managedBean-and-ejb/pom.xml
@@ -23,7 +23,7 @@
   <artifactId>jsf-managedBean-and-ejb</artifactId>
   <packaging>war</packaging>
   <name>TomEE :: Web Examples :: JSF - ManangedBean and EJB</name>
-  <version>8.0.6-SNAPSHOT</version>
+  <version>8.0.7-SNAPSHOT</version>
   <url>http://tomee.apache.org</url>
   <properties>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
@@ -49,7 +49,7 @@
       <plugin>
         <groupId>org.apache.tomee.maven</groupId>
         <artifactId>tomee-maven-plugin</artifactId>
-        <version>8.0.6-SNAPSHOT</version>
+        <version>8.0.7-SNAPSHOT</version>
       </plugin>
       <plugin>
         <groupId>org.tomitribe.transformer</groupId>
diff --git a/examples/jsonb-configuration/pom.xml b/examples/jsonb-configuration/pom.xml
index c119810..817b172 100644
--- a/examples/jsonb-configuration/pom.xml
+++ b/examples/jsonb-configuration/pom.xml
@@ -19,7 +19,7 @@
   <modelVersion>4.0.0</modelVersion>
   <groupId>org.superbiz</groupId>
   <artifactId>jsonb-configuration</artifactId>
-  <version>8.0.6-SNAPSHOT</version>
+  <version>8.0.7-SNAPSHOT</version>
   <packaging>war</packaging>
   <name>TomEE :: Examples :: Microprofile JSONB Configuration</name>
   <properties>
@@ -42,7 +42,7 @@
     <dependency>
       <groupId>org.apache.tomee</groupId>
       <artifactId>openejb-cxf-rs</artifactId>
-      <version>8.0.6-SNAPSHOT</version>
+      <version>8.0.7-SNAPSHOT</version>
       <scope>test</scope>
     </dependency>
   </dependencies>
diff --git a/examples/jsonb-custom-serializer/pom.xml b/examples/jsonb-custom-serializer/pom.xml
index c7856f9..db6c281 100644
--- a/examples/jsonb-custom-serializer/pom.xml
+++ b/examples/jsonb-custom-serializer/pom.xml
@@ -19,7 +19,7 @@
   <modelVersion>4.0.0</modelVersion>
   <groupId>org.superbiz</groupId>
   <artifactId>jsonb-custom-serializer</artifactId>
-  <version>8.0.6-SNAPSHOT</version>
+  <version>8.0.7-SNAPSHOT</version>
   <packaging>war</packaging>
   <name>TomEE :: Examples :: Microprofile JSONB Custom Serializer/Deserializer</name>
   <properties>
@@ -42,7 +42,7 @@
     <dependency>
       <groupId>org.apache.tomee</groupId>
       <artifactId>openejb-cxf-rs</artifactId>
-      <version>8.0.6-SNAPSHOT</version>
+      <version>8.0.7-SNAPSHOT</version>
       <scope>test</scope>
     </dependency>
   </dependencies>
diff --git a/examples/lookup-of-ejbs-with-descriptor/pom.xml b/examples/lookup-of-ejbs-with-descriptor/pom.xml
index 3798f75..5ae0dea 100644
--- a/examples/lookup-of-ejbs-with-descriptor/pom.xml
+++ b/examples/lookup-of-ejbs-with-descriptor/pom.xml
@@ -22,7 +22,7 @@
   <groupId>org.superbiz</groupId>
   <artifactId>lookup-of-ejbs-with-descriptor</artifactId>
   <packaging>jar</packaging>
-  <version>8.0.6-SNAPSHOT</version>
+  <version>8.0.7-SNAPSHOT</version>
   <name>TomEE :: Examples :: EJB Lookup with descriptor</name>
   <properties>
     <!--
@@ -87,7 +87,7 @@
     <dependency>
       <groupId>org.apache.tomee</groupId>
       <artifactId>openejb-core</artifactId>
-      <version>8.0.6-SNAPSHOT</version>
+      <version>8.0.7-SNAPSHOT</version>
       <scope>test</scope>
     </dependency>
   </dependencies>
diff --git a/examples/lookup-of-ejbs/pom.xml b/examples/lookup-of-ejbs/pom.xml
index 0d16a13..19e419c 100644
--- a/examples/lookup-of-ejbs/pom.xml
+++ b/examples/lookup-of-ejbs/pom.xml
@@ -22,7 +22,7 @@
   <groupId>org.superbiz</groupId>
   <artifactId>lookup-of-ejbs</artifactId>
   <packaging>jar</packaging>
-  <version>8.0.6-SNAPSHOT</version>
+  <version>8.0.7-SNAPSHOT</version>
   <name>TomEE :: Examples :: @EJB Lookup</name>
   <properties>
     <!--
@@ -87,7 +87,7 @@
     <dependency>
       <groupId>org.apache.tomee</groupId>
       <artifactId>openejb-core</artifactId>
-      <version>8.0.6-SNAPSHOT</version>
+      <version>8.0.7-SNAPSHOT</version>
       <scope>test</scope>
     </dependency>
   </dependencies>
diff --git a/examples/mbean-auto-registration/pom.xml b/examples/mbean-auto-registration/pom.xml
index edf6c08..c160b8f 100644
--- a/examples/mbean-auto-registration/pom.xml
+++ b/examples/mbean-auto-registration/pom.xml
@@ -20,11 +20,11 @@
   <groupId>org.superbiz</groupId>
   <artifactId>mbean-auto-registration</artifactId>
   <packaging>jar</packaging>
-  <version>8.0.6-SNAPSHOT</version>
+  <version>8.0.7-SNAPSHOT</version>
   <name>TomEE :: Examples :: MBean Auto Registration</name>
   <properties>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
-    <tomee.version>8.0.6-SNAPSHOT</tomee.version>
+    <tomee.version>8.0.7-SNAPSHOT</tomee.version>
   </properties>
   <build>
     <defaultGoal>install</defaultGoal>
diff --git a/examples/moviefun-rest/pom.xml b/examples/moviefun-rest/pom.xml
index 4ab3a12..136e97d 100644
--- a/examples/moviefun-rest/pom.xml
+++ b/examples/moviefun-rest/pom.xml
@@ -15,11 +15,11 @@
   <groupId>org.superbiz</groupId>
   <artifactId>moviefun-rest</artifactId>
   <packaging>war</packaging>
-  <version>8.0.6-SNAPSHOT</version>
+  <version>8.0.7-SNAPSHOT</version>
   <name>TomEE :: Web Examples :: Moviefun Rest</name>
   <properties>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
-    <tomee.version>8.0.6-SNAPSHOT</tomee.version>
+    <tomee.version>8.0.7-SNAPSHOT</tomee.version>
     <version.shrinkwrap.resolver>2.0.0</version.shrinkwrap.resolver>
   </properties>
   <repositories>
diff --git a/examples/moviefun-rest/src/main/webapp/app/js/templates/application-table-paginator-button.handlebars b/examples/moviefun-rest/src/main/webapp/app/js/templates/application-table-paginator-button.handlebars
index 0031aba..0f89380 100644
--- a/examples/moviefun-rest/src/main/webapp/app/js/templates/application-table-paginator-button.handlebars
+++ b/examples/moviefun-rest/src/main/webapp/app/js/templates/application-table-paginator-button.handlebars
@@ -1 +1,17 @@
+<!--
+  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.
+-->
 <li><a href="{{pageNumber}}">{{pageText}}</a></li>
\ No newline at end of file
diff --git a/examples/moviefun-rest/src/main/webapp/app/js/templates/application-table-row.handlebars b/examples/moviefun-rest/src/main/webapp/app/js/templates/application-table-row.handlebars
index dc9bf7c..86914cb 100644
--- a/examples/moviefun-rest/src/main/webapp/app/js/templates/application-table-row.handlebars
+++ b/examples/moviefun-rest/src/main/webapp/app/js/templates/application-table-row.handlebars
@@ -1,3 +1,19 @@
+<!--
+  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.
+-->
 <td><a href="edit" class="ux-edit-row">{{title}}</a></td>
 <td>{{director}}</td>
 <td>{{genre}}</td>
diff --git a/examples/moviefun-rest/src/main/webapp/app/js/templates/application.handlebars b/examples/moviefun-rest/src/main/webapp/app/js/templates/application.handlebars
index f15d1a9..ae6e172 100644
--- a/examples/moviefun-rest/src/main/webapp/app/js/templates/application.handlebars
+++ b/examples/moviefun-rest/src/main/webapp/app/js/templates/application.handlebars
@@ -1,3 +1,19 @@
+<!--
+  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.
+-->
 <div class="row">
     <div class="col-md-12">
         <div class="panel panel-default">
diff --git a/examples/moviefun-rest/src/main/webapp/app/js/templates/container.handlebars b/examples/moviefun-rest/src/main/webapp/app/js/templates/container.handlebars
index dba60dd..424be3f7 100644
--- a/examples/moviefun-rest/src/main/webapp/app/js/templates/container.handlebars
+++ b/examples/moviefun-rest/src/main/webapp/app/js/templates/container.handlebars
@@ -1,3 +1,19 @@
+<!--
+  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.
+-->
 <div class="navbar navbar-inverse navbar-fixed-top">
     <div class="container">
         <div class="navbar-header">
diff --git a/examples/moviefun-rest/src/main/webapp/app/js/templates/load-data-link.handlebars b/examples/moviefun-rest/src/main/webapp/app/js/templates/load-data-link.handlebars
index 1785578..3a2d146 100644
--- a/examples/moviefun-rest/src/main/webapp/app/js/templates/load-data-link.handlebars
+++ b/examples/moviefun-rest/src/main/webapp/app/js/templates/load-data-link.handlebars
@@ -1 +1,17 @@
+<!--
+  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.
+-->
 <a href="load-data">{{i18n "load.dada"}}</a>
\ No newline at end of file
diff --git a/examples/moviefun-rest/src/main/webapp/app/js/templates/movie.handlebars b/examples/moviefun-rest/src/main/webapp/app/js/templates/movie.handlebars
index 97c511c..70623e4 100644
--- a/examples/moviefun-rest/src/main/webapp/app/js/templates/movie.handlebars
+++ b/examples/moviefun-rest/src/main/webapp/app/js/templates/movie.handlebars
@@ -1,3 +1,19 @@
+<!--
+  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.
+-->
 <div class="modal-dialog">
     <div class="modal-content">
         <div class="modal-header">
diff --git a/examples/moviefun/pom.xml b/examples/moviefun/pom.xml
index 3209034..e35132a 100644
--- a/examples/moviefun/pom.xml
+++ b/examples/moviefun/pom.xml
@@ -15,11 +15,11 @@
   <groupId>org.superbiz</groupId>
   <artifactId>moviefun</artifactId>
   <packaging>war</packaging>
-  <version>8.0.6-SNAPSHOT</version>
+  <version>8.0.7-SNAPSHOT</version>
   <name>TomEE :: Web Examples :: Moviefun</name>
   <properties>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
-    <tomee.version>8.0.6-SNAPSHOT</tomee.version>
+    <tomee.version>8.0.7-SNAPSHOT</tomee.version>
     <version.shrinkwrap.resolver>2.0.0</version.shrinkwrap.resolver>
   </properties>
   <repositories>
@@ -102,7 +102,7 @@
       <plugin>
         <groupId>org.apache.tomee.maven</groupId>
         <artifactId>tomee-maven-plugin</artifactId>
-        <version>8.0.6-SNAPSHOT</version>
+        <version>8.0.7-SNAPSHOT</version>
         <configuration>
           <tomeeClassifier>plus</tomeeClassifier>
           <args>-Xmx512m -XX:PermSize=256m</args>
@@ -163,7 +163,7 @@
     <dependency>
       <groupId>org.apache.tomee</groupId>
       <artifactId>openejb-core</artifactId>
-      <version>8.0.6-SNAPSHOT</version>
+      <version>8.0.7-SNAPSHOT</version>
       <scope>test</scope>
     </dependency>
     <dependency>
@@ -176,7 +176,7 @@
     <dependency>
       <groupId>org.apache.tomee</groupId>
       <artifactId>tomee-embedded</artifactId>
-      <version>8.0.6-SNAPSHOT</version>
+      <version>8.0.7-SNAPSHOT</version>
       <!--<classifier>uber</classifier> -->
       <scope>test</scope>
     </dependency>
@@ -200,7 +200,7 @@
     <dependency>
       <groupId>org.apache.tomee</groupId>
       <artifactId>ziplock</artifactId>
-      <version>8.0.6-SNAPSHOT</version>
+      <version>8.0.7-SNAPSHOT</version>
       <scope>test</scope>
     </dependency>
   </dependencies>
diff --git a/examples/movies-complete-meta/pom.xml b/examples/movies-complete-meta/pom.xml
index 4db925a..e1934a7 100644
--- a/examples/movies-complete-meta/pom.xml
+++ b/examples/movies-complete-meta/pom.xml
@@ -24,7 +24,7 @@
   <groupId>org.superbiz</groupId>
   <artifactId>movies-complete-meta</artifactId>
   <packaging>jar</packaging>
-  <version>8.0.6-SNAPSHOT</version>
+  <version>8.0.7-SNAPSHOT</version>
   <name>TomEE :: Examples :: Movies Complete (Meta)</name>
   <properties>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
@@ -79,7 +79,7 @@
     <dependency>
       <groupId>org.apache.tomee</groupId>
       <artifactId>openejb-core</artifactId>
-      <version>8.0.6-SNAPSHOT</version>
+      <version>8.0.7-SNAPSHOT</version>
       <scope>test</scope>
     </dependency>
 
diff --git a/examples/movies-complete/pom.xml b/examples/movies-complete/pom.xml
index 52f517d..fed8197 100644
--- a/examples/movies-complete/pom.xml
+++ b/examples/movies-complete/pom.xml
@@ -22,7 +22,7 @@
   <groupId>org.superbiz</groupId>
   <artifactId>movies-complete</artifactId>
   <packaging>jar</packaging>
-  <version>8.0.6-SNAPSHOT</version>
+  <version>8.0.7-SNAPSHOT</version>
   <name>TomEE :: Examples :: Movies Complete</name>
   <properties>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
@@ -92,7 +92,7 @@
     <dependency>
       <groupId>org.apache.tomee</groupId>
       <artifactId>openejb-core</artifactId>
-      <version>8.0.6-SNAPSHOT</version>
+      <version>8.0.7-SNAPSHOT</version>
       <scope>test</scope>
     </dependency>
   </dependencies>
diff --git a/examples/mp-config-example/pom.xml b/examples/mp-config-example/pom.xml
index 3b669ac..5b44909 100644
--- a/examples/mp-config-example/pom.xml
+++ b/examples/mp-config-example/pom.xml
@@ -19,13 +19,13 @@
   <modelVersion>4.0.0</modelVersion>
   <groupId>org.superbiz</groupId>
   <artifactId>mp-config-example</artifactId>
-  <version>8.0.6-SNAPSHOT</version>
+  <version>8.0.7-SNAPSHOT</version>
   <packaging>war</packaging>
   <name>MicroProfile :: Examples :: Config</name>
   <properties>
     <version.javaee-api>8.0</version.javaee-api>
     <microprofile.config.version>1.3</microprofile.config.version>
-    <tomee.version>8.0.6-SNAPSHOT</tomee.version>
+    <tomee.version>8.0.7-SNAPSHOT</tomee.version>
     <version.arquillian>1.1.13.Final</version.arquillian>
   </properties>
   <dependencies>
diff --git a/examples/mp-config-source-database/pom.xml b/examples/mp-config-source-database/pom.xml
index 110b7a9..84e2874 100644
--- a/examples/mp-config-source-database/pom.xml
+++ b/examples/mp-config-source-database/pom.xml
@@ -19,14 +19,14 @@
   <modelVersion>4.0.0</modelVersion>
   <groupId>org.superbiz</groupId>
   <artifactId>mp-config-source-database</artifactId>
-  <version>8.0.6-SNAPSHOT</version>
+  <version>8.0.7-SNAPSHOT</version>
   <packaging>war</packaging>
   <name>MicroProfile :: Examples :: Config Source Database</name>
   <properties>
     <version.javaee-api>8.0-2</version.javaee-api>
     <version.microprofile>2.0.1</version.microprofile>
     <version.arquillian>1.1.13.Final</version.arquillian>
-    <tomee.version>8.0.6-SNAPSHOT</tomee.version>
+    <tomee.version>8.0.7-SNAPSHOT</tomee.version>
   </properties>
   <dependencies>
     <dependency>
diff --git a/examples/mp-custom-healthcheck/pom.xml b/examples/mp-custom-healthcheck/pom.xml
index 72f3258..eb24048 100644
--- a/examples/mp-custom-healthcheck/pom.xml
+++ b/examples/mp-custom-healthcheck/pom.xml
@@ -19,7 +19,7 @@
   <modelVersion>4.0.0</modelVersion>
   <groupId>org.superbiz</groupId>
   <artifactId>mp-custom-healthcheck</artifactId>
-  <version>8.0.6-SNAPSHOT</version>
+  <version>8.0.7-SNAPSHOT</version>
   <packaging>war</packaging>
   <name>TomEE :: Examples :: Custom HealthCheck</name>
   <properties>
@@ -31,7 +31,7 @@
     <junit.version>4.12</junit.version>
     <maven.compiler.source>1.8</maven.compiler.source>
     <maven.compiler.target>1.8</maven.compiler.target>
-    <tomee.version>8.0.6-SNAPSHOT</tomee.version>
+    <tomee.version>8.0.7-SNAPSHOT</tomee.version>
   </properties>
   <dependencies>
     <dependency>
diff --git a/examples/mp-faulttolerance-fallback/pom.xml b/examples/mp-faulttolerance-fallback/pom.xml
index 16310eb..5f672a4 100644
--- a/examples/mp-faulttolerance-fallback/pom.xml
+++ b/examples/mp-faulttolerance-fallback/pom.xml
@@ -17,7 +17,7 @@
   <modelVersion>4.0.0</modelVersion>
   <groupId>org.superbiz</groupId>
   <artifactId>mp-faulttolerance-fallback</artifactId>
-  <version>8.0.6-SNAPSHOT</version>
+  <version>8.0.7-SNAPSHOT</version>
   <packaging>war</packaging>
   <name>TomEE :: Examples :: Microprofile Fault Tolerance :: Fallback</name>
   <properties>
@@ -29,7 +29,7 @@
     <junit.version>4.12</junit.version>
     <maven.compiler.source>1.8</maven.compiler.source>
     <maven.compiler.target>1.8</maven.compiler.target>
-    <tomee.version>8.0.6-SNAPSHOT</tomee.version>
+    <tomee.version>8.0.7-SNAPSHOT</tomee.version>
   </properties>
   <dependencies>
     <dependency>
diff --git a/examples/mp-faulttolerance-retry/pom.xml b/examples/mp-faulttolerance-retry/pom.xml
index e861aea..50aa39a 100644
--- a/examples/mp-faulttolerance-retry/pom.xml
+++ b/examples/mp-faulttolerance-retry/pom.xml
@@ -19,7 +19,7 @@
   <modelVersion>4.0.0</modelVersion>
   <groupId>org.superbiz</groupId>
   <artifactId>mp-faulttolerance-retry</artifactId>
-  <version>8.0.6-SNAPSHOT</version>
+  <version>8.0.7-SNAPSHOT</version>
   <packaging>war</packaging>
   <name>TomEE :: Examples :: Microprofile Fault Tolerance :: Retry</name>
   <properties>
@@ -31,7 +31,7 @@
     <junit.version>4.12</junit.version>
     <maven.compiler.source>1.8</maven.compiler.source>
     <maven.compiler.target>1.8</maven.compiler.target>
-    <tomee.version>8.0.6-SNAPSHOT</tomee.version>
+    <tomee.version>8.0.7-SNAPSHOT</tomee.version>
   </properties>
   <dependencies>
     <dependency>
diff --git a/examples/mp-faulttolerance-timeout/pom.xml b/examples/mp-faulttolerance-timeout/pom.xml
index 82d4058..fc03a48 100644
--- a/examples/mp-faulttolerance-timeout/pom.xml
+++ b/examples/mp-faulttolerance-timeout/pom.xml
@@ -19,7 +19,7 @@
   <modelVersion>4.0.0</modelVersion>
   <groupId>org.superbiz</groupId>
   <artifactId>mp-faulttolerance-timeout</artifactId>
-  <version>8.0.6-SNAPSHOT</version>
+  <version>8.0.7-SNAPSHOT</version>
   <packaging>war</packaging>
   <name>TomEE :: Examples :: Microprofile Fault Tolerance :: Timeout</name>
   <properties>
@@ -27,7 +27,7 @@
     <arquillian-junit-container.version>1.4.0.Final</arquillian-junit-container.version>
     <maven-compiler-plugin.version>3.7.0</maven-compiler-plugin.version>
     <maven-war-plugin.version>3.1.0</maven-war-plugin.version>
-    <tomee.version>8.0.6-SNAPSHOT</tomee.version>
+    <tomee.version>8.0.7-SNAPSHOT</tomee.version>
     <javaee-api.version>8.0</javaee-api.version>
     <junit.version>4.12</junit.version>
     <maven.compiler.source>1.8</maven.compiler.source>
diff --git a/examples/mp-jsonb-configuration/pom.xml b/examples/mp-jsonb-configuration/pom.xml
index 4db3b2d..7f5cf9a 100644
--- a/examples/mp-jsonb-configuration/pom.xml
+++ b/examples/mp-jsonb-configuration/pom.xml
@@ -19,13 +19,13 @@
   <modelVersion>4.0.0</modelVersion>
   <groupId>org.superbiz</groupId>
   <artifactId>mp-jsonb-configuration</artifactId>
-  <version>8.0.6-SNAPSHOT</version>
+  <version>8.0.7-SNAPSHOT</version>
   <packaging>war</packaging>
   <name>TomEE :: Examples :: Microprofile JSONB Configuration</name>
   <properties>
     <version.javaee-api>8.0</version.javaee-api>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
-    <tomee.version>8.0.6-SNAPSHOT</tomee.version>
+    <tomee.version>8.0.7-SNAPSHOT</tomee.version>
   </properties>
   <dependencies>
     <dependency>
diff --git a/examples/mp-jwt-bean-validation-strongly-typed/pom.xml b/examples/mp-jwt-bean-validation-strongly-typed/pom.xml
index b790a6c..b127dd2 100644
--- a/examples/mp-jwt-bean-validation-strongly-typed/pom.xml
+++ b/examples/mp-jwt-bean-validation-strongly-typed/pom.xml
@@ -20,13 +20,13 @@
   <modelVersion>4.0.0</modelVersion>
   <groupId>org.superbiz</groupId>
   <artifactId>mp-jwt-bean-validation-strongly-typed</artifactId>
-  <version>8.0.6-SNAPSHOT</version>
+  <version>8.0.7-SNAPSHOT</version>
   <packaging>war</packaging>
   <name>Apache TomEE + MicroProfile JWT Bean Validation, Strongly-typed Annotations</name>
   <properties>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
     <version.javaee-api>8.0</version.javaee-api>
-    <tomee.version>8.0.6-SNAPSHOT</tomee.version>
+    <tomee.version>8.0.7-SNAPSHOT</tomee.version>
     <version.shrinkwrap.resolver>2.0.0</version.shrinkwrap.resolver>
     <mp-jwt.version>1.1</mp-jwt.version>
   </properties>
diff --git a/examples/mp-jwt-bean-validation/pom.xml b/examples/mp-jwt-bean-validation/pom.xml
index 97db68a..2ffcf26 100644
--- a/examples/mp-jwt-bean-validation/pom.xml
+++ b/examples/mp-jwt-bean-validation/pom.xml
@@ -20,13 +20,13 @@
   <modelVersion>4.0.0</modelVersion>
   <groupId>org.superbiz</groupId>
   <artifactId>mp-jwt-bean-validation</artifactId>
-  <version>8.0.6-SNAPSHOT</version>
+  <version>8.0.7-SNAPSHOT</version>
   <packaging>war</packaging>
   <name>Apache TomEE + MicroProfile JWT Bean Validation</name>
   <properties>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
     <version.javaee-api>8.0</version.javaee-api>
-    <tomee.version>8.0.6-SNAPSHOT</tomee.version>
+    <tomee.version>8.0.7-SNAPSHOT</tomee.version>
     <version.shrinkwrap.resolver>2.0.0</version.shrinkwrap.resolver>
     <mp-jwt.version>1.1</mp-jwt.version>
   </properties>
diff --git a/examples/mp-metrics-counted/pom.xml b/examples/mp-metrics-counted/pom.xml
index 4f60e23..f83fe5a 100644
--- a/examples/mp-metrics-counted/pom.xml
+++ b/examples/mp-metrics-counted/pom.xml
@@ -20,7 +20,7 @@
   <modelVersion>4.0.0</modelVersion>
   <groupId>org.superbiz</groupId>
   <artifactId>mp-metrics-counted</artifactId>
-  <version>8.0.6-SNAPSHOT</version>
+  <version>8.0.7-SNAPSHOT</version>
   <packaging>war</packaging>
   <name>TomEE :: Examples :: Microprofile Metrics Counted</name>
   <properties>
@@ -30,7 +30,7 @@
     <junit.version>4.12</junit.version>
     <docker.image.name>tomee/${project.artifactId}</docker.image.name>
     <docker.file.name>Dockerfile</docker.file.name>
-    <tomee.version>8.0.6-SNAPSHOT</tomee.version>
+    <tomee.version>8.0.7-SNAPSHOT</tomee.version>
   </properties>
   <dependencies>
     <dependency>
diff --git a/examples/mp-metrics-gauge/pom.xml b/examples/mp-metrics-gauge/pom.xml
index d8b2175..1c63258 100644
--- a/examples/mp-metrics-gauge/pom.xml
+++ b/examples/mp-metrics-gauge/pom.xml
@@ -18,14 +18,14 @@
 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
   <groupId>org.apache.tomee</groupId>
-  <version>8.0.6-SNAPSHOT</version>
+  <version>8.0.7-SNAPSHOT</version>
   <artifactId>mp-metrics-gauge</artifactId>
   <packaging>war</packaging>
   <properties>
     <junit.version>4.12</junit.version>
     <version.javaee-api>8.0-1</version.javaee-api>
     <microprofile.metrics.version>1.1.1</microprofile.metrics.version>
-    <tomee.version>8.0.6-SNAPSHOT</tomee.version>
+    <tomee.version>8.0.7-SNAPSHOT</tomee.version>
     <version.arquillian.bom>1.1.13.Final</version.arquillian.bom>
   </properties>
   <dependencies>
diff --git a/examples/mp-metrics-histogram/pom.xml b/examples/mp-metrics-histogram/pom.xml
index c5e9866..b1e6bc9 100644
--- a/examples/mp-metrics-histogram/pom.xml
+++ b/examples/mp-metrics-histogram/pom.xml
@@ -20,7 +20,7 @@
   <modelVersion>4.0.0</modelVersion>
   <groupId>org.superbiz</groupId>
   <artifactId>mp-metrics-histogram</artifactId>
-  <version>8.0.6-SNAPSHOT</version>
+  <version>8.0.7-SNAPSHOT</version>
   <packaging>war</packaging>
   <name>TomEE :: Examples :: Microprofile Metrics Histogram</name>
   <properties>
@@ -28,7 +28,7 @@
     <microprofile.metrics.version>1.1</microprofile.metrics.version>
     <version.arquillian.bom>1.1.13.Final</version.arquillian.bom>
     <junit.version>4.12</junit.version>
-    <tomee.version>8.0.6-SNAPSHOT</tomee.version>
+    <tomee.version>8.0.7-SNAPSHOT</tomee.version>
   </properties>
   <dependencies>
     <dependency>
diff --git a/examples/mp-metrics-metered/pom.xml b/examples/mp-metrics-metered/pom.xml
index b78ffed..700009e 100644
--- a/examples/mp-metrics-metered/pom.xml
+++ b/examples/mp-metrics-metered/pom.xml
@@ -18,7 +18,7 @@
 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
   <groupId>org.superbiz</groupId>
-  <version>8.0.6-SNAPSHOT</version>
+  <version>8.0.7-SNAPSHOT</version>
   <artifactId>mp-metrics-metered</artifactId>
   <packaging>war</packaging>
   <properties>
@@ -26,7 +26,7 @@
     <microprofile.metrics.version>1.1</microprofile.metrics.version>
     <version.arquillian.bom>1.1.13.Final</version.arquillian.bom>
     <junit.version>4.12</junit.version>
-    <tomee.version>8.0.6-SNAPSHOT</tomee.version>
+    <tomee.version>8.0.7-SNAPSHOT</tomee.version>
   </properties>
   <dependencies>
     <dependency>
diff --git a/examples/mp-metrics-timed/pom.xml b/examples/mp-metrics-timed/pom.xml
index 9e61c6d..af3bee5 100644
--- a/examples/mp-metrics-timed/pom.xml
+++ b/examples/mp-metrics-timed/pom.xml
@@ -19,14 +19,14 @@
   <modelVersion>4.0.0</modelVersion>
   <groupId>org.superbiz</groupId>
   <artifactId>mp-metrics-timed</artifactId>
-  <version>8.0.6-SNAPSHOT</version>
+  <version>8.0.7-SNAPSHOT</version>
   <packaging>war</packaging>
   <name>TomEE :: Examples :: Microprofile Metrics Timed</name>
   <properties>
     <version.javaee-api>8.0</version.javaee-api>
     <microprofile.metrics.version>1.1</microprofile.metrics.version>
     <junit.version>4.12</junit.version>
-    <tomee.version>8.0.6-SNAPSHOT</tomee.version>
+    <tomee.version>8.0.7-SNAPSHOT</tomee.version>
   </properties>
   <dependencies>
     <dependency>
diff --git a/examples/mp-opentracing-traced/pom.xml b/examples/mp-opentracing-traced/pom.xml
index 6f6842d..5f9452e 100644
--- a/examples/mp-opentracing-traced/pom.xml
+++ b/examples/mp-opentracing-traced/pom.xml
@@ -20,11 +20,11 @@
   <modelVersion>4.0.0</modelVersion>
   <groupId>org.superbiz</groupId>
   <artifactId>mp-opentracing.traced</artifactId>
-  <version>8.0.6-SNAPSHOT</version>
+  <version>8.0.7-SNAPSHOT</version>
   <packaging>war</packaging>
   <properties>
     <version.javaee-api>8.0</version.javaee-api>
-    <tomee.version>8.0.6-SNAPSHOT</tomee.version>
+    <tomee.version>8.0.7-SNAPSHOT</tomee.version>
     <version.arquillian.bom>1.1.13.Final</version.arquillian.bom>
   </properties>
   <dependencies>
diff --git a/examples/mp-rest-client/pom.xml b/examples/mp-rest-client/pom.xml
index bfe2b5c..9dcd57c 100755
--- a/examples/mp-rest-client/pom.xml
+++ b/examples/mp-rest-client/pom.xml
@@ -20,7 +20,7 @@
   <modelVersion>4.0.0</modelVersion>
   <groupId>org.superbiz</groupId>
   <artifactId>mp-rest-client</artifactId>
-  <version>8.0.6-SNAPSHOT</version>
+  <version>8.0.7-SNAPSHOT</version>
   <packaging>war</packaging>
   <name>TomEE :: Examples :: Microprofile REST Client</name>
   <properties>
@@ -28,7 +28,7 @@
     <version.javaee-api>8.0</version.javaee-api>
     <version.arquillian.bom>1.1.13.Final</version.arquillian.bom>
     <junit.version>4.12</junit.version>
-    <tomee.version>8.0.6-SNAPSHOT</tomee.version>
+    <tomee.version>8.0.7-SNAPSHOT</tomee.version>
   </properties>
   <dependencies>
     <dependency>
diff --git a/examples/mp-rest-jwt-jwk/pom.xml b/examples/mp-rest-jwt-jwk/pom.xml
index b68dbe6..dddb1fb 100644
--- a/examples/mp-rest-jwt-jwk/pom.xml
+++ b/examples/mp-rest-jwt-jwk/pom.xml
@@ -20,13 +20,13 @@
   <modelVersion>4.0.0</modelVersion>
   <groupId>org.superbiz</groupId>
   <artifactId>mp-rest-jwt-jwk</artifactId>
-  <version>8.0.6-SNAPSHOT</version>
+  <version>8.0.7-SNAPSHOT</version>
   <packaging>war</packaging>
   <name>TomEE :: Examples :: MP REST JWT JWK</name>
   <properties>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
     <version.javaee-api>8.0</version.javaee-api>
-    <tomee.version>8.0.6-SNAPSHOT</tomee.version>
+    <tomee.version>8.0.7-SNAPSHOT</tomee.version>
     <version.shrinkwrap.resolver>2.0.0</version.shrinkwrap.resolver>
     <mp-jwt.version>1.1</mp-jwt.version>
     <mp-rest-client.version>1.1</mp-rest-client.version>
diff --git a/examples/mp-rest-jwt-principal/pom.xml b/examples/mp-rest-jwt-principal/pom.xml
index ca8be0a..891a20b 100644
--- a/examples/mp-rest-jwt-principal/pom.xml
+++ b/examples/mp-rest-jwt-principal/pom.xml
@@ -20,12 +20,12 @@
   <modelVersion>4.0.0</modelVersion>
   <groupId>org.superbiz</groupId>
   <artifactId>mp-rest-jwt-principal</artifactId>
-  <version>8.0.6-SNAPSHOT</version>
+  <version>8.0.7-SNAPSHOT</version>
   <packaging>war</packaging>
   <name>TomEE :: Examples :: MP REST JWT PRINCIPAL</name>
   <properties>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
-    <tomee.version>8.0.6-SNAPSHOT</tomee.version>
+    <tomee.version>8.0.7-SNAPSHOT</tomee.version>
     <version.javaee-api>8.0</version.javaee-api>
     <junit.version>4.23</junit.version>
     <arquillian-bom.version>1.4.1.Final</arquillian-bom.version>
diff --git a/examples/mp-rest-jwt-public-key/pom.xml b/examples/mp-rest-jwt-public-key/pom.xml
index 25cc5ee..4f51e50 100644
--- a/examples/mp-rest-jwt-public-key/pom.xml
+++ b/examples/mp-rest-jwt-public-key/pom.xml
@@ -21,13 +21,13 @@
 
   <groupId>org.superbiz</groupId>
   <artifactId>mp-rest-jwt-public-key</artifactId>
-  <version>8.0.6-SNAPSHOT</version>
+  <version>8.0.7-SNAPSHOT</version>
   <packaging>war</packaging>
   <name>TomEE :: Examples :: MP REST JWT Public Key</name>
 
   <properties>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
-    <tomee.version>8.0.6-SNAPSHOT</tomee.version>
+    <tomee.version>8.0.7-SNAPSHOT</tomee.version>
     <version.javaee-api>8.0</version.javaee-api>
     <version.shrinkwrap.resolver>2.0.0</version.shrinkwrap.resolver>
     <mp-jwt.version>1.1</mp-jwt.version>
diff --git a/examples/mp-rest-jwt/pom.xml b/examples/mp-rest-jwt/pom.xml
index efee6a4..53e4eb1 100644
--- a/examples/mp-rest-jwt/pom.xml
+++ b/examples/mp-rest-jwt/pom.xml
@@ -20,13 +20,13 @@
   <modelVersion>4.0.0</modelVersion>
   <groupId>org.superbiz</groupId>
   <artifactId>mp-rest-jwt</artifactId>
-  <version>8.0.6-SNAPSHOT</version>
+  <version>8.0.7-SNAPSHOT</version>
   <packaging>war</packaging>
   <name>TomEE :: Examples :: MP REST JWT</name>
   <properties>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
     <version.javaee-api>8.0</version.javaee-api>
-    <tomee.version>8.0.6-SNAPSHOT</tomee.version>
+    <tomee.version>8.0.7-SNAPSHOT</tomee.version>
     <version.shrinkwrap.resolver>2.0.0</version.shrinkwrap.resolver>
     <mp-jwt.version>1.0</mp-jwt.version>
   </properties>
diff --git a/examples/mtom/pom.xml b/examples/mtom/pom.xml
index 56080c5..cbd51b6 100644
--- a/examples/mtom/pom.xml
+++ b/examples/mtom/pom.xml
@@ -21,11 +21,11 @@
   <modelVersion>4.0.0</modelVersion>
   <groupId>org.superbiz</groupId>
   <artifactId>mtom</artifactId>
-  <version>8.0.6-SNAPSHOT</version>
+  <version>8.0.7-SNAPSHOT</version>
   <name>TomEE :: Examples :: MTOM</name>
   <properties>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
-    <tomee.version>8.0.6-SNAPSHOT</tomee.version>
+    <tomee.version>8.0.7-SNAPSHOT</tomee.version>
   </properties>
   <repositories>
     <repository>
diff --git a/examples/multi-jpa-provider-testing/pom.xml b/examples/multi-jpa-provider-testing/pom.xml
index 299a23a..91c71fc 100644
--- a/examples/multi-jpa-provider-testing/pom.xml
+++ b/examples/multi-jpa-provider-testing/pom.xml
@@ -21,11 +21,11 @@
   <groupId>org.superbiz</groupId>
   <artifactId>multi-jpa-provider-testing</artifactId>
   <packaging>jar</packaging>
-  <version>8.0.6-SNAPSHOT</version>
+  <version>8.0.7-SNAPSHOT</version>
   <name>TomEE :: Examples :: Multiple JPA providers</name>
   <properties>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
-    <tomee.version>8.0.6-SNAPSHOT</tomee.version>
+    <tomee.version>8.0.7-SNAPSHOT</tomee.version>
   </properties>
   <build>
     <defaultGoal>install</defaultGoal>
diff --git a/examples/multiple-arquillian-adapters/pom.xml b/examples/multiple-arquillian-adapters/pom.xml
index 9aa0346..ea3a31d 100644
--- a/examples/multiple-arquillian-adapters/pom.xml
+++ b/examples/multiple-arquillian-adapters/pom.xml
@@ -21,11 +21,11 @@
   <groupId>org.superbiz</groupId>
   <artifactId>multiple-arquillian-adapters</artifactId>
   <packaging>jar</packaging>
-  <version>8.0.6-SNAPSHOT</version>
+  <version>8.0.7-SNAPSHOT</version>
   <name>TomEE :: Examples :: Multiple Arquillian Adapters</name>
   <properties>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
-    <tomee.version>8.0.6-SNAPSHOT</tomee.version>
+    <tomee.version>8.0.7-SNAPSHOT</tomee.version>
     <arquillian.version>1.1.10.Final</arquillian.version>
   </properties>
   <build>
diff --git a/examples/multiple-tomee-arquillian/pom.xml b/examples/multiple-tomee-arquillian/pom.xml
index 5b1d73a..cdbbdf2 100644
--- a/examples/multiple-tomee-arquillian/pom.xml
+++ b/examples/multiple-tomee-arquillian/pom.xml
@@ -21,11 +21,11 @@
   <groupId>org.superbiz</groupId>
   <artifactId>multiple-tomee-arquillian</artifactId>
   <packaging>jar</packaging>
-  <version>8.0.6-SNAPSHOT</version>
+  <version>8.0.7-SNAPSHOT</version>
   <name>TomEE :: Examples :: Multiple TomEE with Arquillian</name>
   <properties>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
-    <tomee.version>8.0.6-SNAPSHOT</tomee.version>
+    <tomee.version>8.0.7-SNAPSHOT</tomee.version>
   </properties>
   <build>
     <defaultGoal>install</defaultGoal>
@@ -100,7 +100,7 @@
     <dependency>
       <groupId>org.apache.tomee</groupId>
       <artifactId>openejb-core</artifactId>
-      <version>8.0.6-SNAPSHOT</version>
+      <version>8.0.7-SNAPSHOT</version>
       <scope>test</scope>
     </dependency>
     <dependency>
@@ -118,7 +118,7 @@
     <dependency>
       <groupId>org.apache.tomee</groupId>
       <artifactId>ziplock</artifactId>
-      <version>8.0.6-SNAPSHOT</version>
+      <version>8.0.7-SNAPSHOT</version>
       <scope>test</scope>
     </dependency>
   </dependencies>
diff --git a/examples/mvc-cxf-hibernate/pom.xml b/examples/mvc-cxf-hibernate/pom.xml
index 169af0d..0ee47a6 100644
--- a/examples/mvc-cxf-hibernate/pom.xml
+++ b/examples/mvc-cxf-hibernate/pom.xml
@@ -23,11 +23,11 @@
   <packaging>war</packaging>
   <name>TomEE :: Examples :: MVC (CXF-based) with Hibernate</name>
   <description>OpenEJB :: Web Examples :: MVC 1.0 - Deltaspike - Hibernate</description>
-  <version>8.0.6-SNAPSHOT</version>
+  <version>8.0.7-SNAPSHOT</version>
   <url>http://tomee.apache.org</url>
   <properties>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
-    <tomee.version>8.0.6-SNAPSHOT</tomee.version>
+    <tomee.version>8.0.7-SNAPSHOT</tomee.version>
     <version.deltaspike>1.9.3</version.deltaspike>
     <version.krazo>1.1.0-M1</version.krazo>
     <version.arquillian>1.1.13.Final</version.arquillian>
@@ -53,7 +53,7 @@
       <plugin>
         <groupId>org.apache.tomee.maven</groupId>
         <artifactId>tomee-maven-plugin</artifactId>
-        <version>8.0.6-SNAPSHOT</version>
+        <version>8.0.7-SNAPSHOT</version>
         <configuration>
           <args>-Xmx512m -XX:PermSize=256m</args>
           <libs>
@@ -152,7 +152,7 @@
     <dependency>
       <groupId>org.eclipse.persistence</groupId>
       <artifactId>eclipselink</artifactId>
-      <version>2.6.3</version>
+      <version>2.7.7</version>
     </dependency>
     <!--  tests  -->
     <dependency>
@@ -194,7 +194,7 @@
     <dependency>
       <groupId>org.apache.tomee</groupId>
       <artifactId>ziplock</artifactId>
-      <version>8.0.6-SNAPSHOT</version>
+      <version>8.0.7-SNAPSHOT</version>
       <scope>test</scope>
     </dependency>
   </dependencies>
diff --git a/examples/mvc-cxf/pom.xml b/examples/mvc-cxf/pom.xml
index 3103049..e00f0cd 100644
--- a/examples/mvc-cxf/pom.xml
+++ b/examples/mvc-cxf/pom.xml
@@ -23,11 +23,11 @@
   <packaging>war</packaging>
   <name>TomEE :: Examples :: MVC (CXF-based)</name>
   <description>OpenEJB :: Web Examples :: MVC 1.0 - Deltaspike</description>
-  <version>8.0.6-SNAPSHOT</version>
+  <version>8.0.7-SNAPSHOT</version>
   <url>http://tomee.apache.org</url>
   <properties>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
-    <tomee.version>8.0.6-SNAPSHOT</tomee.version>
+    <tomee.version>8.0.7-SNAPSHOT</tomee.version>
     <version.deltaspike>1.9.3</version.deltaspike>
     <version.krazo>1.1.0-M1</version.krazo>
     <version.arquillian>1.1.13.Final</version.arquillian>
@@ -53,7 +53,7 @@
       <plugin>
         <groupId>org.apache.tomee.maven</groupId>
         <artifactId>tomee-maven-plugin</artifactId>
-        <version>8.0.6-SNAPSHOT</version>
+        <version>8.0.7-SNAPSHOT</version>
         <configuration>
           <args>-Xmx512m -XX:PermSize=256m</args>
         </configuration>
@@ -127,7 +127,7 @@
     <dependency>
       <groupId>org.eclipse.persistence</groupId>
       <artifactId>eclipselink</artifactId>
-      <version>2.6.3</version>
+      <version>2.7.7</version>
     </dependency>
     <!--  tests  -->
     <dependency>
@@ -169,7 +169,7 @@
     <dependency>
       <groupId>org.apache.tomee</groupId>
       <artifactId>ziplock</artifactId>
-      <version>8.0.6-SNAPSHOT</version>
+      <version>8.0.7-SNAPSHOT</version>
       <scope>test</scope>
     </dependency>
   </dependencies>
diff --git a/examples/mvc-resteasy/pom.xml b/examples/mvc-resteasy/pom.xml
index 77cf937..f8869d7 100644
--- a/examples/mvc-resteasy/pom.xml
+++ b/examples/mvc-resteasy/pom.xml
@@ -23,11 +23,11 @@
   <packaging>war</packaging>
   <name>TomEE :: Examples :: MVC (RestEasy-based)</name>
   <description>OpenEJB :: Web Examples :: MVC 1.0 - RestEasy</description>
-  <version>8.0.6-SNAPSHOT</version>
+  <version>8.0.7-SNAPSHOT</version>
   <url>http://tomee.apache.org</url>
   <properties>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
-    <tomee.version>8.0.6-SNAPSHOT</tomee.version>
+    <tomee.version>8.0.7-SNAPSHOT</tomee.version>
     <version.krazo>1.1.0-M1</version.krazo>
     <resteasy.version>3.6.2.Final</resteasy.version>
     <version.arquillian>1.1.13.Final</version.arquillian>
@@ -53,7 +53,7 @@
       <plugin>
         <groupId>org.apache.tomee.maven</groupId>
         <artifactId>tomee-maven-plugin</artifactId>
-        <version>8.0.6-SNAPSHOT</version>
+        <version>8.0.7-SNAPSHOT</version>
         <configuration>
           <args>-Xmx512m -XX:PermSize=256m</args>
         </configuration>
diff --git a/examples/myfaces-codi-demo/pom.xml b/examples/myfaces-codi-demo/pom.xml
index 56a33a4..62841fc 100644
--- a/examples/myfaces-codi-demo/pom.xml
+++ b/examples/myfaces-codi-demo/pom.xml
@@ -14,7 +14,7 @@
   <groupId>org.superbiz</groupId>
   <artifactId>myfaces-codi-demo</artifactId>
   <name>TomEE :: Examples :: JSF2/CDI/BV/JPA/CODI</name>
-  <version>8.0.6-SNAPSHOT</version>
+  <version>8.0.7-SNAPSHOT</version>
   <packaging>war</packaging>
   <properties>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
@@ -42,7 +42,7 @@
       <plugin>
         <groupId>org.apache.tomee.maven</groupId>
         <artifactId>tomee-maven-plugin</artifactId>
-        <version>8.0.6-SNAPSHOT</version>
+        <version>8.0.7-SNAPSHOT</version>
       </plugin>
       <plugin>
         <groupId>org.tomitribe.transformer</groupId>
diff --git a/examples/persistence-fragment/pom.xml b/examples/persistence-fragment/pom.xml
index ca4d003..4b1044f 100644
--- a/examples/persistence-fragment/pom.xml
+++ b/examples/persistence-fragment/pom.xml
@@ -22,7 +22,7 @@
   <groupId>org.superbiz</groupId>
   <artifactId>persistence-fragment</artifactId>
   <packaging>jar</packaging>
-  <version>8.0.6-SNAPSHOT</version>
+  <version>8.0.7-SNAPSHOT</version>
   <name>TomEE :: Examples :: Persistence Fragment</name>
   <properties>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
@@ -92,7 +92,7 @@
     <dependency>
       <groupId>org.apache.tomee</groupId>
       <artifactId>openejb-core</artifactId>
-      <version>8.0.6-SNAPSHOT</version>
+      <version>8.0.7-SNAPSHOT</version>
       <scope>test</scope>
     </dependency>
   </dependencies>
diff --git a/examples/pojo-webservice/pom.xml b/examples/pojo-webservice/pom.xml
index e66928a..aa141ea 100644
--- a/examples/pojo-webservice/pom.xml
+++ b/examples/pojo-webservice/pom.xml
@@ -21,11 +21,11 @@
   <groupId>org.superbiz</groupId>
   <artifactId>pojo-webservice</artifactId>
   <packaging>war</packaging>
-  <version>8.0.6-SNAPSHOT</version>
+  <version>8.0.7-SNAPSHOT</version>
   <name>TomEE :: Web Examples :: Pojo WS</name>
   <properties>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
-    <tomee.version>8.0.6-SNAPSHOT</tomee.version>
+    <tomee.version>8.0.7-SNAPSHOT</tomee.version>
   </properties>
   <repositories>
     <repository>
@@ -63,7 +63,7 @@
         <!-- http://localhost:8080/pojo-webservice?wsdl -->
         <groupId>org.apache.tomee.maven</groupId>
         <artifactId>tomee-maven-plugin</artifactId>
-        <version>8.0.6-SNAPSHOT</version>
+        <version>8.0.7-SNAPSHOT</version>
         <configuration>
           <tomeeVersion>${tomee.version}</tomeeVersion>
           <tomeeClassifier>plus</tomeeClassifier>
diff --git a/examples/polling-parent/polling-client/pom.xml b/examples/polling-parent/polling-client/pom.xml
index 91df0f5..5cc0878 100644
--- a/examples/polling-parent/polling-client/pom.xml
+++ b/examples/polling-parent/polling-client/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <artifactId>polling-parent</artifactId>
     <groupId>jug</groupId>
-    <version>8.0.6-SNAPSHOT</version>
+    <version>8.0.7-SNAPSHOT</version>
   </parent>
   <modelVersion>4.0.0</modelVersion>
 
diff --git a/examples/polling-parent/polling-core/pom.xml b/examples/polling-parent/polling-core/pom.xml
index 7e331e8..fec08c2 100644
--- a/examples/polling-parent/polling-core/pom.xml
+++ b/examples/polling-parent/polling-core/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <artifactId>polling-parent</artifactId>
     <groupId>jug</groupId>
-    <version>8.0.6-SNAPSHOT</version>
+    <version>8.0.7-SNAPSHOT</version>
   </parent>
   <modelVersion>4.0.0</modelVersion>
 
diff --git a/examples/polling-parent/polling-domain/pom.xml b/examples/polling-parent/polling-domain/pom.xml
index a05e31e..b89041a 100644
--- a/examples/polling-parent/polling-domain/pom.xml
+++ b/examples/polling-parent/polling-domain/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <artifactId>polling-parent</artifactId>
     <groupId>jug</groupId>
-    <version>8.0.6-SNAPSHOT</version>
+    <version>8.0.7-SNAPSHOT</version>
   </parent>
   <modelVersion>4.0.0</modelVersion>
 
diff --git a/examples/polling-parent/polling-web/pom.xml b/examples/polling-parent/polling-web/pom.xml
index 14d57c3..286e5d9 100644
--- a/examples/polling-parent/polling-web/pom.xml
+++ b/examples/polling-parent/polling-web/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <artifactId>polling-parent</artifactId>
     <groupId>jug</groupId>
-    <version>8.0.6-SNAPSHOT</version>
+    <version>8.0.7-SNAPSHOT</version>
   </parent>
 
   <artifactId>polling-web</artifactId>
diff --git a/examples/polling-parent/pom.xml b/examples/polling-parent/pom.xml
index 3de04b4..99ca2f2 100644
--- a/examples/polling-parent/pom.xml
+++ b/examples/polling-parent/pom.xml
@@ -21,14 +21,14 @@
 
   <groupId>jug</groupId>
   <artifactId>polling-parent</artifactId>
-  <version>8.0.6-SNAPSHOT</version>
+  <version>8.0.7-SNAPSHOT</version>
   <packaging>pom</packaging>
   <name>TomEE :: Examples :: Polling</name>
 
   <properties>
     <xbean.version>4.14</xbean.version>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
-    <tomee.version>8.0.6-SNAPSHOT</tomee.version>
+    <tomee.version>8.0.7-SNAPSHOT</tomee.version>
     <cxf.version>3.3.1</cxf.version>
   </properties>
 
diff --git a/examples/pom.xml b/examples/pom.xml
index 720ca94..88cebda 100644
--- a/examples/pom.xml
+++ b/examples/pom.xml
@@ -23,7 +23,7 @@
   <parent>
     <artifactId>tomee-project</artifactId>
     <groupId>org.apache.tomee</groupId>
-    <version>8.0.6-SNAPSHOT</version>
+    <version>8.0.7-SNAPSHOT</version>
   </parent>
   <artifactId>examples</artifactId>
   <packaging>pom</packaging>
diff --git a/examples/projectstage-demo/pom.xml b/examples/projectstage-demo/pom.xml
index 4b0fd9e..ed7a5ee 100644
--- a/examples/projectstage-demo/pom.xml
+++ b/examples/projectstage-demo/pom.xml
@@ -20,10 +20,10 @@
   <modelVersion>4.0.0</modelVersion>
   <groupId>org.superbiz</groupId>
   <artifactId>projectstage-demo</artifactId>
-  <version>8.0.6-SNAPSHOT</version>
+  <version>8.0.7-SNAPSHOT</version>
   <name>TomEE :: Examples :: DeltaSpike ProjectStage</name>
   <properties>
-    <tomee.version>8.0.6-SNAPSHOT</tomee.version>
+    <tomee.version>8.0.7-SNAPSHOT</tomee.version>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
   </properties>
   <repositories>
diff --git a/examples/quartz-app/pom.xml b/examples/quartz-app/pom.xml
index b3f2976..af1fc5f 100644
--- a/examples/quartz-app/pom.xml
+++ b/examples/quartz-app/pom.xml
@@ -20,12 +20,12 @@
   <modelVersion>4.0.0</modelVersion>
   <groupId>org.superbiz.quartz</groupId>
   <artifactId>quartz-app</artifactId>
-  <version>8.0.6-SNAPSHOT</version>
+  <version>8.0.7-SNAPSHOT</version>
   <packaging>pom</packaging>
   <name>TomEE :: Examples :: Quartz</name>
   <properties>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
-    <tomee.version>8.0.6-SNAPSHOT</tomee.version>
+    <tomee.version>8.0.7-SNAPSHOT</tomee.version>
   </properties>
   <modules>
     <module>quartz-ra</module>
diff --git a/examples/quartz-app/quartz-beans/pom.xml b/examples/quartz-app/quartz-beans/pom.xml
index 931bb89..7c84249 100644
--- a/examples/quartz-app/quartz-beans/pom.xml
+++ b/examples/quartz-app/quartz-beans/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <groupId>org.superbiz.quartz</groupId>
     <artifactId>quartz-app</artifactId>
-    <version>8.0.6-SNAPSHOT</version>
+    <version>8.0.7-SNAPSHOT</version>
   </parent>
   <modelVersion>4.0.0</modelVersion>
   <artifactId>quartz-beans</artifactId>
diff --git a/examples/quartz-app/quartz-ra/pom.xml b/examples/quartz-app/quartz-ra/pom.xml
index beaa42e..d8f262b 100644
--- a/examples/quartz-app/quartz-ra/pom.xml
+++ b/examples/quartz-app/quartz-ra/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <groupId>org.superbiz.quartz</groupId>
     <artifactId>quartz-app</artifactId>
-    <version>8.0.6-SNAPSHOT</version>
+    <version>8.0.7-SNAPSHOT</version>
   </parent>
   <modelVersion>4.0.0</modelVersion>
   <artifactId>quartz-ra</artifactId>
diff --git a/examples/realm-in-tomee/pom.xml b/examples/realm-in-tomee/pom.xml
index be01122..fe85560 100644
--- a/examples/realm-in-tomee/pom.xml
+++ b/examples/realm-in-tomee/pom.xml
@@ -21,7 +21,7 @@
   <groupId>org.superbiz</groupId>
   <artifactId>realm-in-tomee</artifactId>
   <packaging>war</packaging>
-  <version>8.0.6-SNAPSHOT</version>
+  <version>8.0.7-SNAPSHOT</version>
   <name>TomEE :: Examples :: DataSource Realm</name>
   <properties>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
@@ -46,7 +46,7 @@
       <plugin>
         <groupId>org.apache.tomee.maven</groupId>
         <artifactId>tomee-maven-plugin</artifactId>
-        <version>8.0.6-SNAPSHOT</version>
+        <version>8.0.7-SNAPSHOT</version>
       </plugin>
       <plugin>
         <groupId>org.tomitribe.transformer</groupId>
diff --git a/examples/reload-persistence-unit-properties/pom.xml b/examples/reload-persistence-unit-properties/pom.xml
index b78bed1..b7b8bfd 100644
--- a/examples/reload-persistence-unit-properties/pom.xml
+++ b/examples/reload-persistence-unit-properties/pom.xml
@@ -22,7 +22,7 @@
   <groupId>org.superbiz</groupId>
   <artifactId>reload-persistence-unit-properties</artifactId>
   <packaging>jar</packaging>
-  <version>8.0.6-SNAPSHOT</version>
+  <version>8.0.7-SNAPSHOT</version>
   <name>TomEE :: Examples :: Reloadable Persistence Unit Properties</name>
   <properties>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
@@ -92,7 +92,7 @@
     <dependency>
       <groupId>org.apache.tomee</groupId>
       <artifactId>openejb-core</artifactId>
-      <version>8.0.6-SNAPSHOT</version>
+      <version>8.0.7-SNAPSHOT</version>
       <scope>test</scope>
     </dependency>
     <dependency>
diff --git a/examples/resources-declared-in-webapp/pom.xml b/examples/resources-declared-in-webapp/pom.xml
index 942b406..8f069e0 100644
--- a/examples/resources-declared-in-webapp/pom.xml
+++ b/examples/resources-declared-in-webapp/pom.xml
@@ -21,11 +21,11 @@
   <groupId>org.superbiz</groupId>
   <artifactId>resources-declared-in-webapp</artifactId>
   <packaging>war</packaging>
-  <version>8.0.6-SNAPSHOT</version>
+  <version>8.0.7-SNAPSHOT</version>
   <name>TomEE :: Web Examples :: Resource Declared In A Webapp</name>
   <properties>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
-    <tomee.version>8.0.6-SNAPSHOT</tomee.version>
+    <tomee.version>8.0.7-SNAPSHOT</tomee.version>
   </properties>
   <repositories>
     <repository>
diff --git a/examples/resources-jmx-example/pom.xml b/examples/resources-jmx-example/pom.xml
index 0b1d095..5beaabc 100644
--- a/examples/resources-jmx-example/pom.xml
+++ b/examples/resources-jmx-example/pom.xml
@@ -22,11 +22,11 @@
   <groupId>org.superbiz</groupId>
   <artifactId>resources-jmx</artifactId>
   <packaging>pom</packaging>
-  <version>8.0.6-SNAPSHOT</version>
+  <version>8.0.7-SNAPSHOT</version>
   <name>TomEE :: Examples :: Resources/JMX Example</name>
   <properties>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
-    <tomee.version>8.0.6-SNAPSHOT</tomee.version>
+    <tomee.version>8.0.7-SNAPSHOT</tomee.version>
   </properties>
   <modules>
     <module>resources-jmx-ejb</module>
diff --git a/examples/resources-jmx-example/resources-jmx-ear/pom.xml b/examples/resources-jmx-example/resources-jmx-ear/pom.xml
index 3e7555c..14e8e41 100644
--- a/examples/resources-jmx-example/resources-jmx-ear/pom.xml
+++ b/examples/resources-jmx-example/resources-jmx-ear/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.superbiz</groupId>
     <artifactId>resources-jmx</artifactId>
-    <version>8.0.6-SNAPSHOT</version>
+    <version>8.0.7-SNAPSHOT</version>
   </parent>
   <artifactId>resources-jmx-ear</artifactId>
   <packaging>ear</packaging>
diff --git a/examples/resources-jmx-example/resources-jmx-ejb/pom.xml b/examples/resources-jmx-example/resources-jmx-ejb/pom.xml
index 656a043..0e00a5b 100644
--- a/examples/resources-jmx-example/resources-jmx-ejb/pom.xml
+++ b/examples/resources-jmx-example/resources-jmx-ejb/pom.xml
@@ -24,7 +24,7 @@
   <parent>
     <groupId>org.superbiz</groupId>
     <artifactId>resources-jmx</artifactId>
-    <version>8.0.6-SNAPSHOT</version>
+    <version>8.0.7-SNAPSHOT</version>
   </parent>
 
   <artifactId>resources-jmx-ejb</artifactId>
diff --git a/examples/rest-applicationcomposer-mockito/pom.xml b/examples/rest-applicationcomposer-mockito/pom.xml
index 3c147f2..a18f7f8 100644
--- a/examples/rest-applicationcomposer-mockito/pom.xml
+++ b/examples/rest-applicationcomposer-mockito/pom.xml
@@ -22,7 +22,7 @@
   <groupId>org.superbiz</groupId>
   <artifactId>rest-applicationcomposer-mockito</artifactId>
   <packaging>jar</packaging>
-  <version>8.0.6-SNAPSHOT</version>
+  <version>8.0.7-SNAPSHOT</version>
   <name>TomEE :: Examples :: REST, Mockito and Application Composer</name>
 
   <properties>
@@ -75,19 +75,19 @@
     <dependency>
       <groupId>org.apache.tomee</groupId>
       <artifactId>openejb-core</artifactId>
-      <version>8.0.6-SNAPSHOT</version>
+      <version>8.0.7-SNAPSHOT</version>
       <scope>test</scope>
     </dependency>
     <dependency>
       <groupId>org.apache.tomee</groupId>
       <artifactId>openejb-cxf-rs</artifactId>
-      <version>8.0.6-SNAPSHOT</version>
+      <version>8.0.7-SNAPSHOT</version>
       <scope>test</scope>
     </dependency>
     <dependency>
       <groupId>org.apache.tomee</groupId>
       <artifactId>openejb-mockito</artifactId>
-      <version>8.0.6-SNAPSHOT</version>
+      <version>8.0.7-SNAPSHOT</version>
       <scope>test</scope>
     </dependency>
   </dependencies>
diff --git a/examples/rest-applicationcomposer/pom.xml b/examples/rest-applicationcomposer/pom.xml
index a872e40..2f9bd44 100644
--- a/examples/rest-applicationcomposer/pom.xml
+++ b/examples/rest-applicationcomposer/pom.xml
@@ -21,7 +21,7 @@
   <groupId>org.superbiz</groupId>
   <artifactId>rest-applicationcomposer</artifactId>
   <packaging>jar</packaging>
-  <version>8.0.6-SNAPSHOT</version>
+  <version>8.0.7-SNAPSHOT</version>
   <name>TomEE :: Examples :: REST and Application Composer</name>
   <properties>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
@@ -83,13 +83,13 @@
     <dependency>
       <groupId>org.apache.tomee</groupId>
       <artifactId>openejb-core</artifactId>
-      <version>8.0.6-SNAPSHOT</version>
+      <version>8.0.7-SNAPSHOT</version>
       <scope>test</scope>
     </dependency>
     <dependency>
       <groupId>org.apache.tomee</groupId>
       <artifactId>openejb-cxf-rs</artifactId>
-      <version>8.0.6-SNAPSHOT</version>
+      <version>8.0.7-SNAPSHOT</version>
       <scope>test</scope>
     </dependency>
   </dependencies>
diff --git a/examples/rest-cdi/README.adoc b/examples/rest-cdi/README.adoc
index cb91176..6b253a7 100644
--- a/examples/rest-cdi/README.adoc
+++ b/examples/rest-cdi/README.adoc
@@ -1,4 +1,4 @@
-:index-group: Unrevised
+:index-group: REST
 :jbake-type: page
 :jbake-status: status=published
 = Simple REST with CDI
@@ -6,17 +6,9 @@
 Defining a REST service is pretty easy, simply ad @Path annotation to a
 class then define on methods the HTTP method to use (@GET, @POST, …).
 
-#The Code
-
 == The REST service: @Path, @Produces, @Consumes
 
-Here we see a bean that uses the Bean-Managed Concurrency option as well
-as the @Startup annotation which causes the bean to be instantiated by
-the container when the application starts. Singleton beans with
-@ConcurrencyManagement(BEAN) are responsible for their own
-thread-safety. The bean shown is a simple properties ``registry'' and
-provides a place where options could be set and retrieved by all beans
-in the application.
+Here we have a simple REST, we annotate the class with `@Path("/greeting")` to indicate the route corresponding to the `GreetingService` class. We define `message()` as `@GET` and `lowerCase()` as `@POST` for this `/greeting` route and inject the` Greeting` class using the annotation `@Inject`. There, we have a service! Simple isn't it?
 
 Actually lines:
 
@@ -32,17 +24,42 @@
 [source,java]
 ----
 @Path("/greeting")
-@Produces({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON })
-@Consumes({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON })
+@Produces({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON})
+@Consumes({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON})
 public class GreetingService {
+
+    @Inject
+    Greeting greeting;
+
     @GET
-    public Response message() {
-        return new Response("Hi REST!");
+    public Greet message() {
+        return new Greet("Hi REST!");
     }
 
     @POST
-    public Response lowerCase(final Request message) {
-        return new Response(message.getValue().toLowerCase());
+    public Greet lowerCase(final Request message) {
+        return new Greet(greeting.doSomething(message.getValue()));
+    }
+
+    @XmlRootElement // for xml only, useless for json (johnzon is the default)
+    public static class Greet {
+        private String message;
+
+        public Greet(final String message) {
+            this.message = message;
+        }
+
+        public Greet() {
+            this(null);
+        }
+
+        public String getMessage() {
+            return message;
+        }
+
+        public void setMessage(final String message) {
+            this.message = message;
+        }
     }
 }
 ----
@@ -65,7 +82,7 @@
 Finally to test it we use cxf client API to call the REST service in
 get() and post() methods.
 
-Side note: to show we use JSON or XML depending on the test method we
+NOTE: to show we use JSON or XML depending on the test method we
 activated on EnableServices the attribute httpDebug which prints the
 http messages in the logs.
 
@@ -74,57 +91,73 @@
 package org.superbiz.rest;
 
 import org.apache.cxf.jaxrs.client.WebClient;
+import org.apache.johnzon.jaxrs.JohnzonProvider;
 import org.apache.openejb.jee.WebApp;
 import org.apache.openejb.junit.ApplicationComposer;
-import org.apache.openejb.junit.Classes;
+import org.apache.openejb.testing.Classes;
+import org.apache.openejb.testing.Configuration;
 import org.apache.openejb.testing.EnableServices;
 import org.apache.openejb.testing.Module;
+import org.apache.openejb.testng.PropertiesBuilder;
+import org.apache.openejb.util.NetworkUtil;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 
 import javax.ws.rs.core.MediaType;
 import java.io.IOException;
+import java.util.Properties;
 
+import static java.util.Arrays.asList;
 import static org.junit.Assert.assertEquals;
 
 @EnableServices(value = "jaxrs", httpDebug = true)
 @RunWith(ApplicationComposer.class)
 public class GreetingServiceTest {
+    private int port;
+
+    @Configuration
+    public Properties randomPort() {
+        port = NetworkUtil.getNextAvailablePort();
+        return new PropertiesBuilder().p("httpejbd.port", Integer.toString(port)).build();
+    }
+
     @Module
-    @Classes(value = {GreetingService.class, Greeting.class}, cdi = true) //This enables the CDI magic
+    @Classes(value = {GreetingService.class, Greeting.class}, cdi = true) // This enables the CDI magic
     public WebApp app() {
         return new WebApp().contextRoot("test");
     }
 
     @Test
     public void getXml() throws IOException {
-        final String message = WebClient.create("http://localhost:4204").path("/test/greeting/")
+        final String message = WebClient.create("http://localhost:" + port).path("/test/greeting/")
                 .accept(MediaType.APPLICATION_XML_TYPE)
-                .get(Response.class).getValue();
+                .get(GreetingService.Greet.class).getMessage();
         assertEquals("Hi REST!", message);
     }
 
     @Test
     public void postXml() throws IOException {
-        final String message = WebClient.create("http://localhost:4204").path("/test/greeting/")
+        final String message = WebClient.create("http://localhost:" + port).path("/test/greeting/")
                 .accept(MediaType.APPLICATION_XML_TYPE)
-                .post(new Request("Hi REST!"), Response.class).getValue();
+                .type(MediaType.APPLICATION_XML_TYPE)
+                .post(new Request("Hi REST!"), GreetingService.Greet.class).getMessage();
         assertEquals("hi rest!", message);
     }
 
     @Test
     public void getJson() throws IOException {
-        final String message = WebClient.create("http://localhost:4204").path("/test/greeting/")
+        final String message = WebClient.create("http://localhost:" + port, asList(new JohnzonProvider<GreetingService.Greet>())).path("/test/greeting/")
                 .accept(MediaType.APPLICATION_JSON_TYPE)
-                .get(Response.class).getValue();
+                .get(GreetingService.Greet.class).getMessage();
         assertEquals("Hi REST!", message);
     }
 
     @Test
     public void postJson() throws IOException {
-        final String message = WebClient.create("http://localhost:4204").path("/test/greeting/")
+        final String message = WebClient.create("http://localhost:" + port, asList(new JohnzonProvider<GreetingService.Greet>())).path("/test/greeting/")
                 .accept(MediaType.APPLICATION_JSON_TYPE)
-                .post(new Request("Hi REST!"), Response.class).getValue();
+                .type(MediaType.APPLICATION_JSON_TYPE)
+                .post(new Request("Hi REST!"), GreetingService.Greet.class).getMessage();
         assertEquals("hi rest!", message);
     }
 }
@@ -142,256 +175,393 @@
 Which should create output like the following.
 
 [source,java]
-----
-/opt/softs/java/jdk1.6.0_30/bin/java -ea -Didea.launcher.port=7534 -Didea.launcher.bin.path=/opt/softs/idea/bin -Dfile.encoding=UTF-8 -classpath /opt/softs/idea/lib/idea_rt.jar:/opt/softs/idea/plugins/junit/lib/junit-rt.jar:/opt/softs/java/jdk1.6.0_30/jre/lib/plugin.jar:/opt/softs/java/jdk1.6.0_30/jre/lib/javaws.jar:/opt/softs/java/jdk1.6.0_30/jre/lib/jce.jar:/opt/softs/java/jdk1.6.0_30/jre/lib/charsets.jar:/opt/softs/java/jdk1.6.0_30/jre/lib/resources.jar:/opt/softs/java/jdk1.6.0_30/jre/lib/deploy.jar:/opt/softs/java/jdk1.6.0_30/jre/lib/management-agent.jar:/opt/softs/java/jdk1.6.0_30/jre/lib/jsse.jar:/opt/softs/java/jdk1.6.0_30/jre/lib/rt.jar:/opt/softs/java/jdk1.6.0_30/jre/lib/ext/localedata.jar:/opt/softs/java/jdk1.6.0_30/jre/lib/ext/sunjce_provider.jar:/opt/softs/java/jdk1.6.0_30/jre/lib/ext/sunpkcs11.jar:/opt/softs/java/jdk1.6.0_30/jre/lib/ext/dnsns.jar:/opt/dev/openejb/openejb-trunk/examples/rest-cdi/target/test-classes:/opt/dev/openejb/openejb-trunk/examples/rest-cdi/target/classes:/home/rmannibucau/.m2/repository/org/apache/openejb/javaee-api/6.0-4/javaee-api-6.0-4.jar:/home/rmannibucau/.m2/repository/junit/junit/4.10/junit-4.10.jar:/home/rmannibucau/.m2/repository/org/hamcrest/hamcrest-core/1.1/hamcrest-core-1.1.jar:/home/rmannibucau/.m2/repository/org/apache/openejb/openejb-cxf-rs/4.5.1/openejb-cxf-rs-4.5.1.jar:/home/rmannibucau/.m2/repository/org/apache/openejb/openejb-http/4.5.1/openejb-http-4.5.1.jar:/home/rmannibucau/.m2/repository/org/apache/openejb/openejb-core/4.5.1/openejb-core-4.5.1.jar:/home/rmannibucau/.m2/repository/org/apache/openejb/mbean-annotation-api/4.5.1/mbean-annotation-api-4.5.1.jar:/home/rmannibucau/.m2/repository/org/apache/openejb/openejb-jpa-integration/4.5.1/openejb-jpa-integration-4.5.1.jar:/home/rmannibucau/.m2/repository/org/apache/commons/commons-lang3/3.1/commons-lang3-3.1.jar:/home/rmannibucau/.m2/repository/org/apache/openejb/openejb-api/4.5.1/openejb-api-4.5.1.jar:/home/rmannibucau/.m2/repository/org/apache/openejb/openejb-loader/4.5.1/openejb-loader-4.5.1.jar:/home/rmannibucau/.m2/repository/org/apache/openejb/openejb-javaagent/4.5.1/openejb-javaagent-4.5.1.jar:/home/rmannibucau/.m2/repository/org/apache/openejb/openejb-jee/4.5.1/openejb-jee-4.5.1.jar:/home/rmannibucau/.m2/repository/com/sun/xml/bind/jaxb-impl/2.1.13/jaxb-impl-2.1.13.jar:/home/rmannibucau/.m2/repository/commons-cli/commons-cli/1.2/commons-cli-1.2.jar:/home/rmannibucau/.m2/repository/org/apache/activemq/activemq-ra/5.7.0/activemq-ra-5.7.0.jar:/home/rmannibucau/.m2/repository/org/apache/activemq/activemq-core/5.7.0/activemq-core-5.7.0.jar:/home/rmannibucau/.m2/repository/org/slf4j/slf4j-api/1.7.2/slf4j-api-1.7.2.jar:/home/rmannibucau/.m2/repository/org/apache/activemq/kahadb/5.7.0/kahadb-5.7.0.jar:/home/rmannibucau/.m2/repository/org/apache/activemq/protobuf/activemq-protobuf/1.1/activemq-protobuf-1.1.jar:/home/rmannibucau/.m2/repository/commons-logging/commons-logging/1.1.1/commons-logging-1.1.1.jar:/home/rmannibucau/.m2/repository/commons-net/commons-net/3.1/commons-net-3.1.jar:/home/rmannibucau/.m2/repository/org/apache/geronimo/components/geronimo-connector/3.1.1/geronimo-connector-3.1.1.jar:/home/rmannibucau/.m2/repository/org/apache/geronimo/components/geronimo-transaction/3.1.1/geronimo-transaction-3.1.1.jar:/home/rmannibucau/.m2/repository/org/apache/geronimo/specs/geronimo-j2ee-connector_1.6_spec/1.0/geronimo-j2ee-connector_1.6_spec-1.0.jar:/home/rmannibucau/.m2/repository/org/objectweb/howl/howl/1.0.1-1/howl-1.0.1-1.jar:/home/rmannibucau/.m2/repository/org/apache/geronimo/javamail/geronimo-javamail_1.4_mail/1.8.2/geronimo-javamail_1.4_mail-1.8.2.jar:/home/rmannibucau/.m2/repository/org/apache/xbean/xbean-asm-shaded/3.12/xbean-asm-shaded-3.12.jar:/home/rmannibucau/.m2/repository/org/apache/xbean/xbean-finder-shaded/3.12/xbean-finder-shaded-3.12.jar:/home/rmannibucau/.m2/repository/org/apache/xbean/xbean-reflect/3.12/xbean-reflect-3.12.jar:/home/rmannibucau/.m2/repository/org/apache/xbean/xbean-naming/3.12/xbean-naming-3.12.jar:/home/rmannibucau/.m2/repository/org/apache/xbean/xbean-bundleutils/3.12/xbean-bundleutils-3.12.jar:/home/rmannibucau/.m2/repository/org/hsqldb/hsqldb/2.2.8/hsqldb-2.2.8.jar:/home/rmannibucau/.m2/repository/commons-dbcp/commons-dbcp/1.4/commons-dbcp-1.4.jar:/home/rmannibucau/.m2/repository/commons-pool/commons-pool/1.5.7/commons-pool-1.5.7.jar:/home/rmannibucau/.m2/repository/org/codehaus/swizzle/swizzle-stream/1.6.1/swizzle-stream-1.6.1.jar:/home/rmannibucau/.m2/repository/wsdl4j/wsdl4j/1.6.2/wsdl4j-1.6.2.jar:/home/rmannibucau/.m2/repository/org/quartz-scheduler/quartz/2.1.6/quartz-2.1.6.jar:/home/rmannibucau/.m2/repository/org/slf4j/slf4j-jdk14/1.7.2/slf4j-jdk14-1.7.2.jar:/home/rmannibucau/.m2/repository/org/apache/openwebbeans/openwebbeans-impl/1.1.6/openwebbeans-impl-1.1.6.jar:/home/rmannibucau/.m2/repository/org/apache/openwebbeans/openwebbeans-spi/1.1.6/openwebbeans-spi-1.1.6.jar:/home/rmannibucau/.m2/repository/org/apache/openwebbeans/openwebbeans-ejb/1.1.6/openwebbeans-ejb-1.1.6.jar:/home/rmannibucau/.m2/repository/org/apache/openwebbeans/openwebbeans-ee/1.1.6/openwebbeans-ee-1.1.6.jar:/home/rmannibucau/.m2/repository/org/apache/openwebbeans/openwebbeans-ee-common/1.1.6/openwebbeans-ee-common-1.1.6.jar:/home/rmannibucau/.m2/repository/org/apache/openwebbeans/openwebbeans-web/1.1.6/openwebbeans-web-1.1.6.jar:/home/rmannibucau/.m2/repository/org/javassist/javassist/3.15.0-GA/javassist-3.15.0-GA.jar:/home/rmannibucau/.m2/repository/org/apache/openjpa/openjpa/2.2.0/openjpa-2.2.0.jar:/home/rmannibucau/.m2/repository/commons-lang/commons-lang/2.4/commons-lang-2.4.jar:/home/rmannibucau/.m2/repository/commons-collections/commons-collections/3.2.1/commons-collections-3.2.1.jar:/home/rmannibucau/.m2/repository/net/sourceforge/serp/serp/1.13.1/serp-1.13.1.jar:/home/rmannibucau/.m2/repository/asm/asm/3.2/asm-3.2.jar:/home/rmannibucau/.m2/repository/org/apache/bval/bval-core/0.5/bval-core-0.5.jar:/home/rmannibucau/.m2/repository/commons-beanutils/commons-beanutils-core/1.8.3/commons-beanutils-core-1.8.3.jar:/home/rmannibucau/.m2/repository/org/apache/bval/bval-jsr303/0.5/bval-jsr303-0.5.jar:/home/rmannibucau/.m2/repository/org/fusesource/jansi/jansi/1.8/jansi-1.8.jar:/home/rmannibucau/.m2/repository/org/apache/openejb/openejb-server/4.5.1/openejb-server-4.5.1.jar:/home/rmannibucau/.m2/repository/org/apache/openejb/openejb-client/4.5.1/openejb-client-4.5.1.jar:/home/rmannibucau/.m2/repository/org/apache/openejb/openejb-ejbd/4.5.1/openejb-ejbd-4.5.1.jar:/home/rmannibucau/.m2/repository/org/apache/openejb/openejb-rest/4.5.1/openejb-rest-4.5.1.jar:/home/rmannibucau/.m2/repository/org/apache/openejb/openejb-cxf-transport/4.5.1/openejb-cxf-transport-4.5.1.jar:/home/rmannibucau/.m2/repository/org/apache/cxf/cxf-rt-transports-http/2.7.0/cxf-rt-transports-http-2.7.0.jar:/home/rmannibucau/.m2/repository/org/apache/cxf/cxf-api/2.7.0/cxf-api-2.7.0.jar:/home/rmannibucau/.m2/repository/org/apache/ws/xmlschema/xmlschema-core/2.0.3/xmlschema-core-2.0.3.jar:/home/rmannibucau/.m2/repository/org/apache/cxf/cxf-rt-core/2.7.0/cxf-rt-core-2.7.0.jar:/home/rmannibucau/.m2/repository/org/apache/cxf/cxf-rt-frontend-jaxrs/2.7.0/cxf-rt-frontend-jaxrs-2.7.0.jar:/home/rmannibucau/.m2/repository/javax/ws/rs/javax.ws.rs-api/2.0-m10/javax.ws.rs-api-2.0-m10.jar:/home/rmannibucau/.m2/repository/org/apache/cxf/cxf-rt-bindings-xml/2.7.0/cxf-rt-bindings-xml-2.7.0.jar:/home/rmannibucau/.m2/repository/org/apache/cxf/cxf-rt-rs-extension-providers/2.7.0/cxf-rt-rs-extension-providers-2.7.0.jar:/home/rmannibucau/.m2/repository/org/apache/cxf/cxf-rt-rs-extension-search/2.7.0/cxf-rt-rs-extension-search-2.7.0.jar:/home/rmannibucau/.m2/repository/org/apache/cxf/cxf-rt-rs-security-cors/2.7.0/cxf-rt-rs-security-cors-2.7.0.jar:/home/rmannibucau/.m2/repository/org/apache/cxf/cxf-rt-rs-security-oauth2/2.7.0/cxf-rt-rs-security-oauth2-2.7.0.jar:/home/rmannibucau/.m2/repository/org/codehaus/jettison/jettison/1.3/jettison-1.3.jar:/home/rmannibucau/.m2/repository/stax/stax-api/1.0.1/stax-api-1.0.1.jar com.intellij.rt.execution.application.AppMain com.intellij.rt.execution.junit.JUnitStarter -ideVersion5 org.superbiz.rest.GreetingServiceTest
+-------------------------------------------------------
+ T E S T S
+-------------------------------------------------------
+Running org.superbiz.rest.GreetingServiceTest
+INFO - Created new singletonService org.apache.openejb.cdi.ThreadSingletonServiceImpl@1b048504
+INFO - Succeeded in installing singleton service
 INFO - Cannot find the configuration file [conf/openejb.xml].  Will attempt to create one for the beans deployed.
 INFO - Configuring Service(id=Default Security Service, type=SecurityService, provider-id=Default Security Service)
 INFO - Configuring Service(id=Default Transaction Manager, type=TransactionManager, provider-id=Default Transaction Manager)
 INFO - Creating TransactionManager(id=Default Transaction Manager)
 INFO - Creating SecurityService(id=Default Security Service)
 INFO - Initializing network services
-INFO - Creating ServerService(id=httpejbd)
-INFO - Using 'print=true'
-INFO - Using 'indent.xml=true'
 INFO - Creating ServerService(id=cxf-rs)
+INFO - Creating ServerService(id=httpejbd)
+INFO - Created ServicePool 'httpejbd' with (10) core threads, limited to (200) threads with a queue of (9)
+INFO - Using 'print=true'
+FINE - Using default '.xml=false'
+FINE - Using default 'stream.count=false'
 INFO - Initializing network services
-INFO - Starting service httpejbd
-INFO - Started service httpejbd
-INFO - Starting service cxf-rs
-INFO - Started service cxf-rs
 INFO -   ** Bound Services **
 INFO -   NAME                 IP              PORT  
-INFO -   httpejbd             127.0.0.1       4204  
+INFO -   httpejbd             127.0.0.1       44455 
 INFO - -------
 INFO - Ready!
-INFO - Configuring enterprise application: /opt/dev/openejb/openejb-trunk/examples/GreetingServiceTest
+INFO - Configuring enterprise application: /home/daniel/git/apache/tomee/examples/rest-cdi/GreetingServiceTest
 INFO - Configuring Service(id=Default Managed Container, type=Container, provider-id=Default Managed Container)
 INFO - Auto-creating a container for bean org.superbiz.rest.GreetingServiceTest: Container(type=MANAGED, id=Default Managed Container)
 INFO - Creating Container(id=Default Managed Container)
 INFO - Using directory /tmp for stateful session passivation
-INFO - Enterprise application "/opt/dev/openejb/openejb-trunk/examples/GreetingServiceTest" loaded.
-INFO - Assembling app: /opt/dev/openejb/openejb-trunk/examples/GreetingServiceTest
-INFO - Existing thread singleton service in SystemInstance() null
-INFO - Created new singletonService org.apache.openejb.cdi.ThreadSingletonServiceImpl@54128635
-INFO - Succeeded in installing singleton service
+INFO - Enterprise application "/home/daniel/git/apache/tomee/examples/rest-cdi/GreetingServiceTest" loaded.
+INFO - Creating dedicated application classloader for GreetingServiceTest
+INFO - Assembling app: /home/daniel/git/apache/tomee/examples/rest-cdi/GreetingServiceTest
+WARNING: An illegal reflective access operation has occurred
+WARNING: Illegal reflective access by org.apache.openejb.util.proxy.LocalBeanProxyFactory$Unsafe (file:/home/daniel/.m2/repository/org/apache/tomee/openejb-core/8.0.5-SNAPSHOT/openejb-core-8.0.5-SNAPSHOT.jar) to method java.lang.ClassLoader.defineClass(java.lang.String,byte[],int,int,java.security.ProtectionDomain)
+WARNING: Please consider reporting this to the maintainers of org.apache.openejb.util.proxy.LocalBeanProxyFactory$Unsafe
+WARNING: Use --illegal-access=warn to enable warnings of further illegal reflective access operations
+WARNING: All illegal access operations will be denied in a future release
+INFO - Existing thread singleton service in SystemInstance(): org.apache.openejb.cdi.ThreadSingletonServiceImpl@1b048504
+INFO - Some Principal APIs could not be loaded: org.eclipse.microprofile.jwt.JsonWebToken out of org.eclipse.microprofile.jwt.JsonWebToken not found
 INFO - OpenWebBeans Container is starting...
 INFO - Adding OpenWebBeansPlugin : [CdiPlugin]
-INFO - All injection points are validated successfully.
-INFO - OpenWebBeans Container has started, it took 102 ms.
-INFO - Deployed Application(path=/opt/dev/openejb/openejb-trunk/examples/GreetingServiceTest)
-INFO - Setting the server's publish address to be http://127.0.0.1:4204/test
-INFO - REST Service: http://127.0.0.1:4204/test/greeting/.*  -> Pojo org.superbiz.rest.GreetingService
+INFO - All injection points were validated successfully.
+INFO - OpenWebBeans Container has started, it took 476 ms.
+INFO - Using readers:
+INFO -      org.apache.cxf.jaxrs.provider.PrimitiveTextProvider@693b3e2
+INFO -      org.apache.cxf.jaxrs.provider.FormEncodingProvider@c68e0782
+INFO -      org.apache.cxf.jaxrs.provider.MultipartProvider@ef757da4
+INFO -      org.apache.cxf.jaxrs.provider.SourceProvider@778a403d
+INFO -      org.apache.cxf.jaxrs.provider.JAXBElementTypedProvider@7bca3240
+INFO -      org.apache.cxf.jaxrs.provider.JAXBElementProvider@2407e67e
+INFO -      org.apache.openejb.server.cxf.rs.johnzon.TomEEJsonbProvider@52f938e6
+INFO -      org.apache.openejb.server.cxf.rs.johnzon.TomEEJsonpProvider@75f6fb76
+INFO -      org.apache.cxf.jaxrs.provider.StringTextProvider@b06cecc0
+INFO -      org.apache.cxf.jaxrs.provider.BinaryDataProvider@493b69a5
+INFO -      org.apache.cxf.jaxrs.provider.DataSourceProvider@5dfe78fe
+INFO - Using writers:
+INFO -      org.apache.johnzon.jaxrs.WadlDocumentMessageBodyWriter@5ec30d6b
+INFO -      org.apache.cxf.jaxrs.nio.NioMessageBodyWriter@58b50d53
+INFO -      org.apache.cxf.jaxrs.provider.StringTextProvider@b06cecc0
+INFO -      org.apache.cxf.jaxrs.provider.JAXBElementTypedProvider@7bca3240
+INFO -      org.apache.cxf.jaxrs.provider.PrimitiveTextProvider@693b3e2
+INFO -      org.apache.cxf.jaxrs.provider.FormEncodingProvider@c68e0782
+INFO -      org.apache.cxf.jaxrs.provider.MultipartProvider@ef757da4
+INFO -      org.apache.cxf.jaxrs.provider.SourceProvider@778a403d
+INFO -      org.apache.cxf.jaxrs.provider.JAXBElementProvider@2407e67e
+INFO -      org.apache.openejb.server.cxf.rs.johnzon.TomEEJsonbProvider@52f938e6
+INFO -      org.apache.openejb.server.cxf.rs.johnzon.TomEEJsonpProvider@75f6fb76
+INFO -      org.apache.cxf.jaxrs.provider.BinaryDataProvider@493b69a5
+INFO -      org.apache.cxf.jaxrs.provider.DataSourceProvider@5dfe78fe
+INFO - Using exception mappers:
+INFO -      org.apache.cxf.jaxrs.impl.WebApplicationExceptionMapper@8dfc1000
+INFO -      org.apache.openejb.server.cxf.rs.EJBExceptionMapper@b734211e
+INFO -      org.apache.cxf.jaxrs.validation.ValidationExceptionMapper@2716b807
+INFO - REST Application: http://127.0.0.1:44455/test/         -> org.apache.openejb.server.rest.InternalApplication@e4c4de9b
+INFO -      Service URI: http://127.0.0.1:44455/test/greeting -> Pojo org.superbiz.rest.GreetingService
+INFO -               GET http://127.0.0.1:44455/test/greeting ->      Greet message()         
+INFO -              POST http://127.0.0.1:44455/test/greeting ->      Greet lowerCase(Request)
+INFO - Deployed Application(path=/home/daniel/git/apache/tomee/examples/rest-cdi/GreetingServiceTest)
 FINE - ******************* REQUEST ******************
-GET http://localhost:4204/test/greeting/
-Host=localhost:4204
-User-Agent=Apache CXF 2.7.0
-Connection=keep-alive
-Accept=application/xml
-Content-Type=*/*
-Pragma=no-cache
-Cache-Control=no-cache
+GET http://localhost:44455/test/greeting/
+Accept=[application/xml]
+Cache-Control=[no-cache]
+User-Agent=[Apache-CXF/3.3.7]
+Connection=[keep-alive]
+Host=[localhost:44455]
+Pragma=[no-cache]
 
 
 **********************************************
 
 FINE - HTTP/1.1 200 OK
-Date: Fri, 09 Nov 2012 11:59:00 GMT
-Content-Length: 44
-Set-Cookie: EJBSESSIONID=fc5037fa-641c-495d-95ca-0755cfa50beb; Path=/
-Content-Type: application/xml
+Server: OpenEJB/8.0.5-SNAPSHOT Linux/5.0.0-23-generic (amd64)
 Connection: close
-Server: OpenEJB/4.5.1 Linux/3.2.0-23-generic (amd64)
+Content-Length: 97
+Date: Sun, 15 Nov 2020 20:48:49 GMT
+Content-Type: application/xml
 
-<response><value>Hi REST!</value></response>
-INFO - Undeploying app: /opt/dev/openejb/openejb-trunk/examples/GreetingServiceTest
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?><greet><message>Hi REST!</message></greet>
+INFO - Undeploying app: /home/daniel/git/apache/tomee/examples/rest-cdi/GreetingServiceTest
 INFO - Stopping network services
 INFO - Stopping server services
+INFO - Created new singletonService org.apache.openejb.cdi.ThreadSingletonServiceImpl@1b048504
+INFO - Succeeded in installing singleton service
 INFO - Cannot find the configuration file [conf/openejb.xml].  Will attempt to create one for the beans deployed.
 INFO - Configuring Service(id=Default Security Service, type=SecurityService, provider-id=Default Security Service)
 INFO - Configuring Service(id=Default Transaction Manager, type=TransactionManager, provider-id=Default Transaction Manager)
 INFO - Creating TransactionManager(id=Default Transaction Manager)
 INFO - Creating SecurityService(id=Default Security Service)
 INFO - Initializing network services
-INFO - Creating ServerService(id=httpejbd)
-INFO - Using 'print=true'
-INFO - Using 'indent.xml=true'
 INFO - Creating ServerService(id=cxf-rs)
+INFO - Creating ServerService(id=httpejbd)
+INFO - Created ServicePool 'httpejbd' with (10) core threads, limited to (200) threads with a queue of (9)
+INFO - Using 'print=true'
+FINE - Using default '.xml=false'
+FINE - Using default 'stream.count=false'
 INFO - Initializing network services
-INFO - Starting service httpejbd
-INFO - Started service httpejbd
-INFO - Starting service cxf-rs
-INFO - Started service cxf-rs
 INFO -   ** Bound Services **
 INFO -   NAME                 IP              PORT  
-INFO -   httpejbd             127.0.0.1       4204  
+INFO -   httpejbd             127.0.0.1       36735 
 INFO - -------
 INFO - Ready!
-INFO - Configuring enterprise application: /opt/dev/openejb/openejb-trunk/examples/GreetingServiceTest
+INFO - Configuring enterprise application: /home/daniel/git/apache/tomee/examples/rest-cdi/GreetingServiceTest
 INFO - Configuring Service(id=Default Managed Container, type=Container, provider-id=Default Managed Container)
 INFO - Auto-creating a container for bean org.superbiz.rest.GreetingServiceTest: Container(type=MANAGED, id=Default Managed Container)
 INFO - Creating Container(id=Default Managed Container)
 INFO - Using directory /tmp for stateful session passivation
-INFO - Enterprise application "/opt/dev/openejb/openejb-trunk/examples/GreetingServiceTest" loaded.
-INFO - Assembling app: /opt/dev/openejb/openejb-trunk/examples/GreetingServiceTest
-INFO - Existing thread singleton service in SystemInstance() null
-INFO - Created new singletonService org.apache.openejb.cdi.ThreadSingletonServiceImpl@54128635
-INFO - Succeeded in installing singleton service
+INFO - Enterprise application "/home/daniel/git/apache/tomee/examples/rest-cdi/GreetingServiceTest" loaded.
+INFO - Creating dedicated application classloader for GreetingServiceTest
+INFO - Assembling app: /home/daniel/git/apache/tomee/examples/rest-cdi/GreetingServiceTest
+INFO - Existing thread singleton service in SystemInstance(): org.apache.openejb.cdi.ThreadSingletonServiceImpl@1b048504
+INFO - Some Principal APIs could not be loaded: org.eclipse.microprofile.jwt.JsonWebToken out of org.eclipse.microprofile.jwt.JsonWebToken not found
 INFO - OpenWebBeans Container is starting...
 INFO - Adding OpenWebBeansPlugin : [CdiPlugin]
-INFO - All injection points are validated successfully.
-INFO - OpenWebBeans Container has started, it took 11 ms.
-INFO - Deployed Application(path=/opt/dev/openejb/openejb-trunk/examples/GreetingServiceTest)
-INFO - Setting the server's publish address to be http://127.0.0.1:4204/test
-INFO - REST Service: http://127.0.0.1:4204/test/greeting/.*  -> Pojo org.superbiz.rest.GreetingService
+INFO - All injection points were validated successfully.
+INFO - OpenWebBeans Container has started, it took 109 ms.
+INFO - Using readers:
+INFO -      org.apache.cxf.jaxrs.provider.PrimitiveTextProvider@db2555f8
+INFO -      org.apache.cxf.jaxrs.provider.FormEncodingProvider@73151fc3
+INFO -      org.apache.cxf.jaxrs.provider.MultipartProvider@280eff60
+INFO -      org.apache.cxf.jaxrs.provider.SourceProvider@e6d6d01c
+INFO -      org.apache.cxf.jaxrs.provider.JAXBElementTypedProvider@9aa666e
+INFO -      org.apache.cxf.jaxrs.provider.JAXBElementProvider@de52b81d
+INFO -      org.apache.openejb.server.cxf.rs.johnzon.TomEEJsonbProvider@52f938e6
+INFO -      org.apache.openejb.server.cxf.rs.johnzon.TomEEJsonpProvider@75f6fb76
+INFO -      org.apache.cxf.jaxrs.provider.StringTextProvider@2773d96d
+INFO -      org.apache.cxf.jaxrs.provider.BinaryDataProvider@5a199358
+INFO -      org.apache.cxf.jaxrs.provider.DataSourceProvider@8b965c01
+INFO - Using writers:
+INFO -      org.apache.johnzon.jaxrs.WadlDocumentMessageBodyWriter@7a775189
+INFO -      org.apache.cxf.jaxrs.nio.NioMessageBodyWriter@b03af552
+INFO -      org.apache.cxf.jaxrs.provider.StringTextProvider@2773d96d
+INFO -      org.apache.cxf.jaxrs.provider.JAXBElementTypedProvider@9aa666e
+INFO -      org.apache.cxf.jaxrs.provider.PrimitiveTextProvider@db2555f8
+INFO -      org.apache.cxf.jaxrs.provider.FormEncodingProvider@73151fc3
+INFO -      org.apache.cxf.jaxrs.provider.MultipartProvider@280eff60
+INFO -      org.apache.cxf.jaxrs.provider.SourceProvider@e6d6d01c
+INFO -      org.apache.cxf.jaxrs.provider.JAXBElementProvider@de52b81d
+INFO -      org.apache.openejb.server.cxf.rs.johnzon.TomEEJsonbProvider@52f938e6
+INFO -      org.apache.openejb.server.cxf.rs.johnzon.TomEEJsonpProvider@75f6fb76
+INFO -      org.apache.cxf.jaxrs.provider.BinaryDataProvider@5a199358
+INFO -      org.apache.cxf.jaxrs.provider.DataSourceProvider@8b965c01
+INFO - Using exception mappers:
+INFO -      org.apache.cxf.jaxrs.impl.WebApplicationExceptionMapper@d855787e
+INFO -      org.apache.openejb.server.cxf.rs.EJBExceptionMapper@16616b4d
+INFO -      org.apache.cxf.jaxrs.validation.ValidationExceptionMapper@874c811e
+INFO - REST Application: http://127.0.0.1:36735/test/         -> org.apache.openejb.server.rest.InternalApplication@27131dcb
+INFO -      Service URI: http://127.0.0.1:36735/test/greeting -> Pojo org.superbiz.rest.GreetingService
+INFO -               GET http://127.0.0.1:36735/test/greeting ->      Greet message()         
+INFO -              POST http://127.0.0.1:36735/test/greeting ->      Greet lowerCase(Request)
+INFO - Deployed Application(path=/home/daniel/git/apache/tomee/examples/rest-cdi/GreetingServiceTest)
 FINE - ******************* REQUEST ******************
-POST http://localhost:4204/test/greeting/
-Host=localhost:4204
-Content-Length=97
-User-Agent=Apache CXF 2.7.0
-Connection=keep-alive
-Accept=application/xml
-Content-Type=application/xml
-Pragma=no-cache
-Cache-Control=no-cache
+POST http://localhost:36735/test/greeting/
+Accept=[application/xml]
+Cache-Control=[no-cache]
+User-Agent=[Apache-CXF/3.3.7]
+Connection=[keep-alive]
+Host=[localhost:36735]
+Pragma=[no-cache]
+Content-Length=[97]
+Content-Type=[application/xml]
 
 <?xml version="1.0" encoding="UTF-8" standalone="yes"?><request><value>Hi REST!</value></request>
 **********************************************
 
 FINE - HTTP/1.1 200 OK
-Date: Fri, 09 Nov 2012 11:59:00 GMT
-Content-Length: 44
-Set-Cookie: EJBSESSIONID=7cb2246d-5738-4a85-aac5-c0fb5340d36a; Path=/
+Server: OpenEJB/8.0.5-SNAPSHOT Linux/5.0.0-23-generic (amd64)
+Connection: close
+Content-Length: 97
+Date: Sun, 15 Nov 2020 20:48:50 GMT
 Content-Type: application/xml
-Connection: close
-Server: OpenEJB/4.5.1 Linux/3.2.0-23-generic (amd64)
 
-<response><value>hi rest!</value></response>
-INFO - Undeploying app: /opt/dev/openejb/openejb-trunk/examples/GreetingServiceTest
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?><greet><message>hi rest!</message></greet>
+INFO - Undeploying app: /home/daniel/git/apache/tomee/examples/rest-cdi/GreetingServiceTest
 INFO - Stopping network services
 INFO - Stopping server services
+INFO - Created new singletonService org.apache.openejb.cdi.ThreadSingletonServiceImpl@1b048504
+INFO - Succeeded in installing singleton service
 INFO - Cannot find the configuration file [conf/openejb.xml].  Will attempt to create one for the beans deployed.
 INFO - Configuring Service(id=Default Security Service, type=SecurityService, provider-id=Default Security Service)
 INFO - Configuring Service(id=Default Transaction Manager, type=TransactionManager, provider-id=Default Transaction Manager)
 INFO - Creating TransactionManager(id=Default Transaction Manager)
 INFO - Creating SecurityService(id=Default Security Service)
 INFO - Initializing network services
-INFO - Creating ServerService(id=httpejbd)
-INFO - Using 'print=true'
-INFO - Using 'indent.xml=true'
 INFO - Creating ServerService(id=cxf-rs)
+SEVERE - MBean Object org.apache.cxf.bus.extension.ExtensionManagerBus@85333fc register to MBeanServer failed : javax.management.InstanceAlreadyExistsException: org.apache.cxf:bus.id=openejb.cxf.bus,type=Bus,instance.id=139670524
+INFO - Creating ServerService(id=httpejbd)
+INFO - Created ServicePool 'httpejbd' with (10) core threads, limited to (200) threads with a queue of (9)
+INFO - Using 'print=true'
+FINE - Using default '.xml=false'
+FINE - Using default 'stream.count=false'
 INFO - Initializing network services
-INFO - Starting service httpejbd
-INFO - Started service httpejbd
-INFO - Starting service cxf-rs
-INFO - Started service cxf-rs
 INFO -   ** Bound Services **
 INFO -   NAME                 IP              PORT  
-INFO -   httpejbd             127.0.0.1       4204  
+INFO -   httpejbd             127.0.0.1       42019 
 INFO - -------
 INFO - Ready!
-INFO - Configuring enterprise application: /opt/dev/openejb/openejb-trunk/examples/GreetingServiceTest
+INFO - Configuring enterprise application: /home/daniel/git/apache/tomee/examples/rest-cdi/GreetingServiceTest
 INFO - Configuring Service(id=Default Managed Container, type=Container, provider-id=Default Managed Container)
 INFO - Auto-creating a container for bean org.superbiz.rest.GreetingServiceTest: Container(type=MANAGED, id=Default Managed Container)
 INFO - Creating Container(id=Default Managed Container)
 INFO - Using directory /tmp for stateful session passivation
-INFO - Enterprise application "/opt/dev/openejb/openejb-trunk/examples/GreetingServiceTest" loaded.
-INFO - Assembling app: /opt/dev/openejb/openejb-trunk/examples/GreetingServiceTest
-INFO - Existing thread singleton service in SystemInstance() null
-INFO - Created new singletonService org.apache.openejb.cdi.ThreadSingletonServiceImpl@54128635
-INFO - Succeeded in installing singleton service
+INFO - Enterprise application "/home/daniel/git/apache/tomee/examples/rest-cdi/GreetingServiceTest" loaded.
+INFO - Creating dedicated application classloader for GreetingServiceTest
+INFO - Assembling app: /home/daniel/git/apache/tomee/examples/rest-cdi/GreetingServiceTest
+INFO - Existing thread singleton service in SystemInstance(): org.apache.openejb.cdi.ThreadSingletonServiceImpl@1b048504
+INFO - Some Principal APIs could not be loaded: org.eclipse.microprofile.jwt.JsonWebToken out of org.eclipse.microprofile.jwt.JsonWebToken not found
 INFO - OpenWebBeans Container is starting...
 INFO - Adding OpenWebBeansPlugin : [CdiPlugin]
-INFO - All injection points are validated successfully.
-INFO - OpenWebBeans Container has started, it took 10 ms.
-INFO - Deployed Application(path=/opt/dev/openejb/openejb-trunk/examples/GreetingServiceTest)
-INFO - Setting the server's publish address to be http://127.0.0.1:4204/test
-INFO - REST Service: http://127.0.0.1:4204/test/greeting/.*  -> Pojo org.superbiz.rest.GreetingService
+INFO - All injection points were validated successfully.
+INFO - OpenWebBeans Container has started, it took 80 ms.
+INFO - Using readers:
+INFO -      org.apache.cxf.jaxrs.provider.PrimitiveTextProvider@3f537f62
+INFO -      org.apache.cxf.jaxrs.provider.FormEncodingProvider@db539692
+INFO -      org.apache.cxf.jaxrs.provider.MultipartProvider@df3f15ad
+INFO -      org.apache.cxf.jaxrs.provider.SourceProvider@ad292069
+INFO -      org.apache.cxf.jaxrs.provider.JAXBElementTypedProvider@f8ae41f1
+INFO -      org.apache.cxf.jaxrs.provider.JAXBElementProvider@63f3092c
+INFO -      org.apache.openejb.server.cxf.rs.johnzon.TomEEJsonbProvider@52f938e6
+INFO -      org.apache.openejb.server.cxf.rs.johnzon.TomEEJsonpProvider@75f6fb76
+INFO -      org.apache.cxf.jaxrs.provider.StringTextProvider@1988f4f7
+INFO -      org.apache.cxf.jaxrs.provider.BinaryDataProvider@77b845b1
+INFO -      org.apache.cxf.jaxrs.provider.DataSourceProvider@76debaaf
+INFO - Using writers:
+INFO -      org.apache.johnzon.jaxrs.WadlDocumentMessageBodyWriter@a74630bf
+INFO -      org.apache.cxf.jaxrs.nio.NioMessageBodyWriter@abe4d74b
+INFO -      org.apache.cxf.jaxrs.provider.StringTextProvider@1988f4f7
+INFO -      org.apache.cxf.jaxrs.provider.JAXBElementTypedProvider@f8ae41f1
+INFO -      org.apache.cxf.jaxrs.provider.PrimitiveTextProvider@3f537f62
+INFO -      org.apache.cxf.jaxrs.provider.FormEncodingProvider@db539692
+INFO -      org.apache.cxf.jaxrs.provider.MultipartProvider@df3f15ad
+INFO -      org.apache.cxf.jaxrs.provider.SourceProvider@ad292069
+INFO -      org.apache.cxf.jaxrs.provider.JAXBElementProvider@63f3092c
+INFO -      org.apache.openejb.server.cxf.rs.johnzon.TomEEJsonbProvider@52f938e6
+INFO -      org.apache.openejb.server.cxf.rs.johnzon.TomEEJsonpProvider@75f6fb76
+INFO -      org.apache.cxf.jaxrs.provider.BinaryDataProvider@77b845b1
+INFO -      org.apache.cxf.jaxrs.provider.DataSourceProvider@76debaaf
+INFO - Using exception mappers:
+INFO -      org.apache.cxf.jaxrs.impl.WebApplicationExceptionMapper@3916141e
+INFO -      org.apache.openejb.server.cxf.rs.EJBExceptionMapper@dd2239cb
+INFO -      org.apache.cxf.jaxrs.validation.ValidationExceptionMapper@d549b1a8
+INFO - REST Application: http://127.0.0.1:42019/test/         -> org.apache.openejb.server.rest.InternalApplication@bbcd5d77
+INFO -      Service URI: http://127.0.0.1:42019/test/greeting -> Pojo org.superbiz.rest.GreetingService
+INFO -               GET http://127.0.0.1:42019/test/greeting ->      Greet message()         
+INFO -              POST http://127.0.0.1:42019/test/greeting ->      Greet lowerCase(Request)
+INFO - Deployed Application(path=/home/daniel/git/apache/tomee/examples/rest-cdi/GreetingServiceTest)
 FINE - ******************* REQUEST ******************
-GET http://localhost:4204/test/greeting/
-Host=localhost:4204
-User-Agent=Apache CXF 2.7.0
-Connection=keep-alive
-Accept=application/json
-Content-Type=*/*
-Pragma=no-cache
-Cache-Control=no-cache
+GET http://localhost:42019/test/greeting/
+Accept=[application/json]
+Cache-Control=[no-cache]
+User-Agent=[Apache-CXF/3.3.7]
+Connection=[keep-alive]
+Host=[localhost:42019]
+Pragma=[no-cache]
 
 
 **********************************************
 
 FINE - HTTP/1.1 200 OK
-Date: Fri, 09 Nov 2012 11:59:00 GMT
-Content-Length: 33
-Set-Cookie: EJBSESSIONID=7112a057-fc4c-4f52-a556-1617320d2275; Path=/
-Content-Type: application/json
+Server: OpenEJB/8.0.5-SNAPSHOT Linux/5.0.0-23-generic (amd64)
 Connection: close
-Server: OpenEJB/4.5.1 Linux/3.2.0-23-generic (amd64)
+Content-Length: 22
+Date: Sun, 15 Nov 2020 20:48:51 GMT
+Content-Type: application/json
 
-{"response":{"value":"Hi REST!"}}
-INFO - Undeploying app: /opt/dev/openejb/openejb-trunk/examples/GreetingServiceTest
+{"message":"Hi REST!"}
+INFO - Undeploying app: /home/daniel/git/apache/tomee/examples/rest-cdi/GreetingServiceTest
 INFO - Stopping network services
 INFO - Stopping server services
+INFO - Created new singletonService org.apache.openejb.cdi.ThreadSingletonServiceImpl@1b048504
+INFO - Succeeded in installing singleton service
 INFO - Cannot find the configuration file [conf/openejb.xml].  Will attempt to create one for the beans deployed.
 INFO - Configuring Service(id=Default Security Service, type=SecurityService, provider-id=Default Security Service)
 INFO - Configuring Service(id=Default Transaction Manager, type=TransactionManager, provider-id=Default Transaction Manager)
 INFO - Creating TransactionManager(id=Default Transaction Manager)
 INFO - Creating SecurityService(id=Default Security Service)
 INFO - Initializing network services
-INFO - Creating ServerService(id=httpejbd)
-INFO - Using 'print=true'
-INFO - Using 'indent.xml=true'
 INFO - Creating ServerService(id=cxf-rs)
+SEVERE - MBean Object org.apache.cxf.bus.extension.ExtensionManagerBus@85333fc register to MBeanServer failed : javax.management.InstanceAlreadyExistsException: org.apache.cxf:bus.id=openejb.cxf.bus,type=Bus,instance.id=139670524
+INFO - Creating ServerService(id=httpejbd)
+INFO - Created ServicePool 'httpejbd' with (10) core threads, limited to (200) threads with a queue of (9)
+INFO - Using 'print=true'
+FINE - Using default '.xml=false'
+FINE - Using default 'stream.count=false'
 INFO - Initializing network services
-INFO - Starting service httpejbd
-INFO - Started service httpejbd
-INFO - Starting service cxf-rs
-INFO - Started service cxf-rs
 INFO -   ** Bound Services **
 INFO -   NAME                 IP              PORT  
-INFO -   httpejbd             127.0.0.1       4204  
+INFO -   httpejbd             127.0.0.1       33015 
 INFO - -------
 INFO - Ready!
-INFO - Configuring enterprise application: /opt/dev/openejb/openejb-trunk/examples/GreetingServiceTest
+INFO - Configuring enterprise application: /home/daniel/git/apache/tomee/examples/rest-cdi/GreetingServiceTest
 INFO - Configuring Service(id=Default Managed Container, type=Container, provider-id=Default Managed Container)
 INFO - Auto-creating a container for bean org.superbiz.rest.GreetingServiceTest: Container(type=MANAGED, id=Default Managed Container)
 INFO - Creating Container(id=Default Managed Container)
 INFO - Using directory /tmp for stateful session passivation
-INFO - Enterprise application "/opt/dev/openejb/openejb-trunk/examples/GreetingServiceTest" loaded.
-INFO - Assembling app: /opt/dev/openejb/openejb-trunk/examples/GreetingServiceTest
-INFO - Existing thread singleton service in SystemInstance() null
-INFO - Created new singletonService org.apache.openejb.cdi.ThreadSingletonServiceImpl@54128635
-INFO - Succeeded in installing singleton service
+INFO - Enterprise application "/home/daniel/git/apache/tomee/examples/rest-cdi/GreetingServiceTest" loaded.
+INFO - Creating dedicated application classloader for GreetingServiceTest
+INFO - Assembling app: /home/daniel/git/apache/tomee/examples/rest-cdi/GreetingServiceTest
+INFO - Existing thread singleton service in SystemInstance(): org.apache.openejb.cdi.ThreadSingletonServiceImpl@1b048504
+INFO - Some Principal APIs could not be loaded: org.eclipse.microprofile.jwt.JsonWebToken out of org.eclipse.microprofile.jwt.JsonWebToken not found
 INFO - OpenWebBeans Container is starting...
 INFO - Adding OpenWebBeansPlugin : [CdiPlugin]
-INFO - All injection points are validated successfully.
-INFO - OpenWebBeans Container has started, it took 10 ms.
-INFO - Deployed Application(path=/opt/dev/openejb/openejb-trunk/examples/GreetingServiceTest)
-INFO - Setting the server's publish address to be http://127.0.0.1:4204/test
-INFO - REST Service: http://127.0.0.1:4204/test/greeting/.*  -> Pojo org.superbiz.rest.GreetingService
+INFO - All injection points were validated successfully.
+INFO - OpenWebBeans Container has started, it took 95 ms.
+INFO - Using readers:
+INFO -      org.apache.cxf.jaxrs.provider.PrimitiveTextProvider@68b824ec
+INFO -      org.apache.cxf.jaxrs.provider.FormEncodingProvider@55233ec4
+INFO -      org.apache.cxf.jaxrs.provider.MultipartProvider@628c68e0
+INFO -      org.apache.cxf.jaxrs.provider.SourceProvider@db9db667
+INFO -      org.apache.cxf.jaxrs.provider.JAXBElementTypedProvider@3ae6d4db
+INFO -      org.apache.cxf.jaxrs.provider.JAXBElementProvider@8a500f50
+INFO -      org.apache.openejb.server.cxf.rs.johnzon.TomEEJsonbProvider@52f938e6
+INFO -      org.apache.openejb.server.cxf.rs.johnzon.TomEEJsonpProvider@75f6fb76
+INFO -      org.apache.cxf.jaxrs.provider.StringTextProvider@d662719e
+INFO -      org.apache.cxf.jaxrs.provider.BinaryDataProvider@f142ede7
+INFO -      org.apache.cxf.jaxrs.provider.DataSourceProvider@6c372f1e
+INFO - Using writers:
+INFO -      org.apache.johnzon.jaxrs.WadlDocumentMessageBodyWriter@38e7693a
+INFO -      org.apache.cxf.jaxrs.nio.NioMessageBodyWriter@8d587dd5
+INFO -      org.apache.cxf.jaxrs.provider.StringTextProvider@d662719e
+INFO -      org.apache.cxf.jaxrs.provider.JAXBElementTypedProvider@3ae6d4db
+INFO -      org.apache.cxf.jaxrs.provider.PrimitiveTextProvider@68b824ec
+INFO -      org.apache.cxf.jaxrs.provider.FormEncodingProvider@55233ec4
+INFO -      org.apache.cxf.jaxrs.provider.MultipartProvider@628c68e0
+INFO -      org.apache.cxf.jaxrs.provider.SourceProvider@db9db667
+INFO -      org.apache.cxf.jaxrs.provider.JAXBElementProvider@8a500f50
+INFO -      org.apache.openejb.server.cxf.rs.johnzon.TomEEJsonbProvider@52f938e6
+INFO -      org.apache.openejb.server.cxf.rs.johnzon.TomEEJsonpProvider@75f6fb76
+INFO -      org.apache.cxf.jaxrs.provider.BinaryDataProvider@f142ede7
+INFO -      org.apache.cxf.jaxrs.provider.DataSourceProvider@6c372f1e
+INFO - Using exception mappers:
+INFO -      org.apache.cxf.jaxrs.impl.WebApplicationExceptionMapper@c67a80b8
+INFO -      org.apache.openejb.server.cxf.rs.EJBExceptionMapper@6ba782bb
+INFO -      org.apache.cxf.jaxrs.validation.ValidationExceptionMapper@20db75dc
+INFO - REST Application: http://127.0.0.1:33015/test/         -> org.apache.openejb.server.rest.InternalApplication@cf272dee
+INFO -      Service URI: http://127.0.0.1:33015/test/greeting -> Pojo org.superbiz.rest.GreetingService
+INFO -               GET http://127.0.0.1:33015/test/greeting ->      Greet message()         
+INFO -              POST http://127.0.0.1:33015/test/greeting ->      Greet lowerCase(Request)
+INFO - Deployed Application(path=/home/daniel/git/apache/tomee/examples/rest-cdi/GreetingServiceTest)
 FINE - ******************* REQUEST ******************
-POST http://localhost:4204/test/greeting/
-Host=localhost:4204
-Content-Length=97
-User-Agent=Apache CXF 2.7.0
-Connection=keep-alive
-Accept=application/json
-Content-Type=application/xml
-Pragma=no-cache
-Cache-Control=no-cache
+POST http://localhost:33015/test/greeting/
+Accept=[application/json]
+Cache-Control=[no-cache]
+User-Agent=[Apache-CXF/3.3.7]
+Connection=[keep-alive]
+Host=[localhost:33015]
+Pragma=[no-cache]
+Content-Length=[20]
+Content-Type=[application/json]
 
-<?xml version="1.0" encoding="UTF-8" standalone="yes"?><request><value>Hi REST!</value></request>
+{"value":"Hi REST!"}
 **********************************************
 
 FINE - HTTP/1.1 200 OK
-Date: Fri, 09 Nov 2012 11:59:01 GMT
-Content-Length: 33
-Set-Cookie: EJBSESSIONID=50cf1d2b-a940-4afb-8993-fff7f9cc6d83; Path=/
-Content-Type: application/json
+Server: OpenEJB/8.0.5-SNAPSHOT Linux/5.0.0-23-generic (amd64)
 Connection: close
-Server: OpenEJB/4.5.1 Linux/3.2.0-23-generic (amd64)
+Content-Length: 22
+Date: Sun, 15 Nov 2020 20:48:51 GMT
+Content-Type: application/json
 
-{"response":{"value":"hi rest!"}}
-INFO - Undeploying app: /opt/dev/openejb/openejb-trunk/examples/GreetingServiceTest
+{"message":"hi rest!"}
+INFO - Undeploying app: /home/daniel/git/apache/tomee/examples/rest-cdi/GreetingServiceTest
 INFO - Stopping network services
 INFO - Stopping server services
+Tests run: 4, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 5.706 sec
+
+Results :
+
+Tests run: 4, Failures: 0, Errors: 0, Skipped: 0
+
 ----
diff --git a/examples/rest-cdi/README_pt.adoc b/examples/rest-cdi/README_pt.adoc
new file mode 100644
index 0000000..fb5229b
--- /dev/null
+++ b/examples/rest-cdi/README_pt.adoc
@@ -0,0 +1,555 @@
+:index-group: REST
+:jbake-type: page
+:jbake-status: status=published
+= REST simples com CDI
+
+Definir um serviço REST é bastante fácil, basta adicionar a anotação `@Path` a uma
+classe define então nos métodos o método HTTP a ser usado (`@GET`, `@POST`,…).
+
+== Serviço REST: @Path, @Produces, @Consumes
+
+Aqui nós temos um REST simples, anotamos a classe com `@Path("/greeting")` para indicar a rota correspondente a classe `GreetingService`. Definimos `message()` como `@GET` e `lowerCase()` como `@POST` para esta rota `/greeting` e fazemos a injeçao da classe `Greeting` usando a anotação `@Inject`. Pronto, temos um serviço! Simples não?
+
+Atual linhas:
+
+[source,java]
+----
+@Produces({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON })
+@Consumes({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON })
+----
+
+são opcionais, pois é a configuração padrão. E essas linhas podem
+também seja configurado pelo método se você precisar ser mais preciso.
+
+[source,java]
+----
+@Path("/greeting")
+@Produces({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON})
+@Consumes({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON})
+public class GreetingService {
+
+    @Inject
+    Greeting greeting;
+
+    @GET
+    public Greet message() {
+        return new Greet("Hi REST!");
+    }
+
+    @POST
+    public Greet lowerCase(final Request message) {
+        return new Greet(greeting.doSomething(message.getValue()));
+    }
+
+    @XmlRootElement // for xml only, useless for json (johnzon is the default)
+    public static class Greet {
+        private String message;
+
+        public Greet(final String message) {
+            this.message = message;
+        }
+
+        public Greet() {
+            this(null);
+        }
+
+        public String getMessage() {
+            return message;
+        }
+
+        public void setMessage(final String message) {
+            this.message = message;
+        }
+    }
+}
+----
+
+
+=== Teste para o serviço JAXRS
+
+Usamos o OpenEJB ApplicationComposer para facilitar o teste.
+
+A ideia é primeiro ativar os serviços jaxrs. Isto é feito usando a anotação `@EnableServices`.
+
+Então nós criamos a aplicação simplesmente retornando um objeto representando o web.xml. Aqui nós simplesmente o usamos para definir o contexto raiz mas você também pode usar para definir sua aplicação REST também. E para completar a aplicação nós adicionamos a anotação `@Classes` para definir o conjunto de classes a ser utilizado nesse app.
+
+Finalmente para testar nós usamos o client API do cfx para chamar o serviço REST nos métodos get() e post().
+
+NOTE: para mostrar que usamos JSON ou XML, dependendo do método de teste
+ativado em EnableServices o atributo httpDebug que imprime o
+mensagens http nos logs.
+
+[source,java]
+----
+package org.superbiz.rest;
+
+import org.apache.cxf.jaxrs.client.WebClient;
+import org.apache.johnzon.jaxrs.JohnzonProvider;
+import org.apache.openejb.jee.WebApp;
+import org.apache.openejb.junit.ApplicationComposer;
+import org.apache.openejb.testing.Classes;
+import org.apache.openejb.testing.Configuration;
+import org.apache.openejb.testing.EnableServices;
+import org.apache.openejb.testing.Module;
+import org.apache.openejb.testng.PropertiesBuilder;
+import org.apache.openejb.util.NetworkUtil;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+import javax.ws.rs.core.MediaType;
+import java.io.IOException;
+import java.util.Properties;
+
+import static java.util.Arrays.asList;
+import static org.junit.Assert.assertEquals;
+
+@EnableServices(value = "jaxrs", httpDebug = true)
+@RunWith(ApplicationComposer.class)
+public class GreetingServiceTest {
+    private int port;
+
+    @Configuration
+    public Properties randomPort() {
+        port = NetworkUtil.getNextAvailablePort();
+        return new PropertiesBuilder().p("httpejbd.port", Integer.toString(port)).build();
+    }
+
+    @Module
+    @Classes(value = {GreetingService.class, Greeting.class}, cdi = true) // This enables the CDI magic
+    public WebApp app() {
+        return new WebApp().contextRoot("test");
+    }
+
+    @Test
+    public void getXml() throws IOException {
+        final String message = WebClient.create("http://localhost:" + port).path("/test/greeting/")
+                .accept(MediaType.APPLICATION_XML_TYPE)
+                .get(GreetingService.Greet.class).getMessage();
+        assertEquals("Hi REST!", message);
+    }
+
+    @Test
+    public void postXml() throws IOException {
+        final String message = WebClient.create("http://localhost:" + port).path("/test/greeting/")
+                .accept(MediaType.APPLICATION_XML_TYPE)
+                .type(MediaType.APPLICATION_XML_TYPE)
+                .post(new Request("Hi REST!"), GreetingService.Greet.class).getMessage();
+        assertEquals("hi rest!", message);
+    }
+
+    @Test
+    public void getJson() throws IOException {
+        final String message = WebClient.create("http://localhost:" + port, asList(new JohnzonProvider<GreetingService.Greet>())).path("/test/greeting/")
+                .accept(MediaType.APPLICATION_JSON_TYPE)
+                .get(GreetingService.Greet.class).getMessage();
+        assertEquals("Hi REST!", message);
+    }
+
+    @Test
+    public void postJson() throws IOException {
+        final String message = WebClient.create("http://localhost:" + port, asList(new JohnzonProvider<GreetingService.Greet>())).path("/test/greeting/")
+                .accept(MediaType.APPLICATION_JSON_TYPE)
+                .type(MediaType.APPLICATION_JSON_TYPE)
+                .post(new Request("Hi REST!"), GreetingService.Greet.class).getMessage();
+        assertEquals("hi rest!", message);
+    }
+}
+----
+
+== Executando
+
+A execução do exemplo é bastante simples. No diretório `rest-cdi`, execute:
+
+[source,java]
+----
+$ mvn clean install
+----
+
+O que deve criar uma saída como a seguir.
+
+[source,java]
+----
+-------------------------------------------------------
+ T E S T S
+-------------------------------------------------------
+Running org.superbiz.rest.GreetingServiceTest
+INFORMAÇÕES - Created new singletonService org.apache.openejb.cdi.ThreadSingletonServiceImpl@f52a8185
+INFORMAÇÕES - Succeeded in installing singleton service
+INFORMAÇÕES - Cannot find the configuration file [conf/openejb.xml].  Will attempt to create one for the beans deployed.
+INFORMAÇÕES - Configuring Service(id=Default Security Service, type=SecurityService, provider-id=Default Security Service)
+INFORMAÇÕES - Configuring Service(id=Default Transaction Manager, type=TransactionManager, provider-id=Default Transaction Manager)
+INFORMAÇÕES - Creating TransactionManager(id=Default Transaction Manager)
+INFORMAÇÕES - Creating SecurityService(id=Default Security Service)
+INFORMAÇÕES - Initializing network services
+INFORMAÇÕES - Creating ServerService(id=cxf-rs)
+INFORMAÇÕES - Creating ServerService(id=httpejbd)
+INFORMAÇÕES - Created ServicePool 'httpejbd' with (10) core threads, limited to (200) threads with a queue of (9)
+INFORMAÇÕES - Using 'print=true'
+DETALHADO - Using default '.xml=false'
+DETALHADO - Using default 'stream.count=false'
+INFORMAÇÕES - Initializing network services
+INFORMAÇÕES -   ** Bound Services **
+INFORMAÇÕES -   NAME                 IP              PORT  
+INFORMAÇÕES -   httpejbd             127.0.0.1       34073 
+INFORMAÇÕES - -------
+INFORMAÇÕES - Ready!
+INFORMAÇÕES - Configuring enterprise application: /home/daniel/git/apache/tomee/examples/rest-cdi/GreetingServiceTest
+INFORMAÇÕES - Configuring Service(id=Default Managed Container, type=Container, provider-id=Default Managed Container)
+INFORMAÇÕES - Auto-creating a container for bean org.superbiz.rest.GreetingServiceTest: Container(type=MANAGED, id=Default Managed Container)
+INFORMAÇÕES - Creating Container(id=Default Managed Container)
+INFORMAÇÕES - Using directory /tmp for stateful session passivation
+INFORMAÇÕES - Enterprise application "/home/daniel/git/apache/tomee/examples/rest-cdi/GreetingServiceTest" loaded.
+INFORMAÇÕES - Creating dedicated application classloader for GreetingServiceTest
+INFORMAÇÕES - Assembling app: /home/daniel/git/apache/tomee/examples/rest-cdi/GreetingServiceTest
+INFORMAÇÕES - Existing thread singleton service in SystemInstance(): org.apache.openejb.cdi.ThreadSingletonServiceImpl@f52a8185
+INFORMAÇÕES - Some Principal APIs could not be loaded: org.eclipse.microprofile.jwt.JsonWebToken out of org.eclipse.microprofile.jwt.JsonWebToken not found
+INFORMAÇÕES - OpenWebBeans Container is starting...
+INFORMAÇÕES - Adding OpenWebBeansPlugin : [CdiPlugin]
+INFORMAÇÕES - All injection points were validated successfully.
+INFORMAÇÕES - OpenWebBeans Container has started, it took 467 ms.
+INFORMAÇÕES - Using readers:
+INFORMAÇÕES -      org.apache.cxf.jaxrs.provider.PrimitiveTextProvider@97c248d8
+INFORMAÇÕES -      org.apache.cxf.jaxrs.provider.FormEncodingProvider@6fb414ed
+INFORMAÇÕES -      org.apache.cxf.jaxrs.provider.MultipartProvider@507dc827
+INFORMAÇÕES -      org.apache.cxf.jaxrs.provider.SourceProvider@6f8d0e9a
+INFORMAÇÕES -      org.apache.cxf.jaxrs.provider.JAXBElementTypedProvider@58adf11a
+INFORMAÇÕES -      org.apache.cxf.jaxrs.provider.JAXBElementProvider@5bcbcc65
+INFORMAÇÕES -      org.apache.openejb.server.cxf.rs.johnzon.TomEEJsonbProvider@ca404f1a
+INFORMAÇÕES -      org.apache.openejb.server.cxf.rs.johnzon.TomEEJsonpProvider@c493f575
+INFORMAÇÕES -      org.apache.cxf.jaxrs.provider.StringTextProvider@bfe1ceb1
+INFORMAÇÕES -      org.apache.cxf.jaxrs.provider.BinaryDataProvider@8ef2b2bc
+INFORMAÇÕES -      org.apache.cxf.jaxrs.provider.DataSourceProvider@2b686cbd
+INFORMAÇÕES - Using writers:
+INFORMAÇÕES -      org.apache.johnzon.jaxrs.WadlDocumentMessageBodyWriter@1bcbf14b
+INFORMAÇÕES -      org.apache.cxf.jaxrs.nio.NioMessageBodyWriter@4752d400
+INFORMAÇÕES -      org.apache.cxf.jaxrs.provider.StringTextProvider@bfe1ceb1
+INFORMAÇÕES -      org.apache.cxf.jaxrs.provider.JAXBElementTypedProvider@58adf11a
+INFORMAÇÕES -      org.apache.cxf.jaxrs.provider.PrimitiveTextProvider@97c248d8
+INFORMAÇÕES -      org.apache.cxf.jaxrs.provider.FormEncodingProvider@6fb414ed
+INFORMAÇÕES -      org.apache.cxf.jaxrs.provider.MultipartProvider@507dc827
+INFORMAÇÕES -      org.apache.cxf.jaxrs.provider.SourceProvider@6f8d0e9a
+INFORMAÇÕES -      org.apache.cxf.jaxrs.provider.JAXBElementProvider@5bcbcc65
+INFORMAÇÕES -      org.apache.openejb.server.cxf.rs.johnzon.TomEEJsonbProvider@ca404f1a
+INFORMAÇÕES -      org.apache.openejb.server.cxf.rs.johnzon.TomEEJsonpProvider@c493f575
+INFORMAÇÕES -      org.apache.cxf.jaxrs.provider.BinaryDataProvider@8ef2b2bc
+INFORMAÇÕES -      org.apache.cxf.jaxrs.provider.DataSourceProvider@2b686cbd
+INFORMAÇÕES - Using exception mappers:
+INFORMAÇÕES -      org.apache.cxf.jaxrs.impl.WebApplicationExceptionMapper@3ede0832
+INFORMAÇÕES -      org.apache.openejb.server.cxf.rs.EJBExceptionMapper@384c8ae0
+INFORMAÇÕES -      org.apache.cxf.jaxrs.validation.ValidationExceptionMapper@fb5c938e
+INFORMAÇÕES - REST Application: http://127.0.0.1:34073/test/         -> org.apache.openejb.server.rest.InternalApplication@41ef317f
+INFORMAÇÕES -      Service URI: http://127.0.0.1:34073/test/greeting -> Pojo org.superbiz.rest.GreetingService
+INFORMAÇÕES -               GET http://127.0.0.1:34073/test/greeting ->      Greet message()         
+INFORMAÇÕES -              POST http://127.0.0.1:34073/test/greeting ->      Greet lowerCase(Request)
+INFORMAÇÕES - Deployed Application(path=/home/daniel/git/apache/tomee/examples/rest-cdi/GreetingServiceTest)
+DETALHADO - ******************* REQUEST ******************
+GET http://localhost:34073/test/greeting/
+Accept=[application/xml]
+Cache-Control=[no-cache]
+User-Agent=[Apache-CXF/3.3.6]
+Connection=[keep-alive]
+Host=[localhost:34073]
+Pragma=[no-cache]
+
+
+**********************************************
+
+DETALHADO - HTTP/1.1 200 OK
+Server: OpenEJB/8.0.5-SNAPSHOT Linux/5.0.0-23-generic (amd64)
+Connection: close
+Content-Length: 97
+Date: Sat, 01 Aug 2020 22:56:06 GMT
+Content-Type: application/xml
+
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?><greet><message>Hi REST!</message></greet>
+INFORMAÇÕES - Undeploying app: /home/daniel/git/apache/tomee/examples/rest-cdi/GreetingServiceTest
+INFORMAÇÕES - Stopping network services
+INFORMAÇÕES - Stopping server services
+INFORMAÇÕES - Created new singletonService org.apache.openejb.cdi.ThreadSingletonServiceImpl@f52a8185
+INFORMAÇÕES - Succeeded in installing singleton service
+INFORMAÇÕES - Cannot find the configuration file [conf/openejb.xml].  Will attempt to create one for the beans deployed.
+INFORMAÇÕES - Configuring Service(id=Default Security Service, type=SecurityService, provider-id=Default Security Service)
+INFORMAÇÕES - Configuring Service(id=Default Transaction Manager, type=TransactionManager, provider-id=Default Transaction Manager)
+INFORMAÇÕES - Creating TransactionManager(id=Default Transaction Manager)
+INFORMAÇÕES - Creating SecurityService(id=Default Security Service)
+INFORMAÇÕES - Initializing network services
+INFORMAÇÕES - Creating ServerService(id=cxf-rs)
+INFORMAÇÕES - Creating ServerService(id=httpejbd)
+INFORMAÇÕES - Created ServicePool 'httpejbd' with (10) core threads, limited to (200) threads with a queue of (9)
+INFORMAÇÕES - Using 'print=true'
+DETALHADO - Using default '.xml=false'
+DETALHADO - Using default 'stream.count=false'
+INFORMAÇÕES - Initializing network services
+INFORMAÇÕES -   ** Bound Services **
+INFORMAÇÕES -   NAME                 IP              PORT  
+INFORMAÇÕES -   httpejbd             127.0.0.1       43963 
+INFORMAÇÕES - -------
+INFORMAÇÕES - Ready!
+INFORMAÇÕES - Configuring enterprise application: /home/daniel/git/apache/tomee/examples/rest-cdi/GreetingServiceTest
+INFORMAÇÕES - Configuring Service(id=Default Managed Container, type=Container, provider-id=Default Managed Container)
+INFORMAÇÕES - Auto-creating a container for bean org.superbiz.rest.GreetingServiceTest: Container(type=MANAGED, id=Default Managed Container)
+INFORMAÇÕES - Creating Container(id=Default Managed Container)
+INFORMAÇÕES - Using directory /tmp for stateful session passivation
+INFORMAÇÕES - Enterprise application "/home/daniel/git/apache/tomee/examples/rest-cdi/GreetingServiceTest" loaded.
+INFORMAÇÕES - Creating dedicated application classloader for GreetingServiceTest
+INFORMAÇÕES - Assembling app: /home/daniel/git/apache/tomee/examples/rest-cdi/GreetingServiceTest
+INFORMAÇÕES - Existing thread singleton service in SystemInstance(): org.apache.openejb.cdi.ThreadSingletonServiceImpl@f52a8185
+INFORMAÇÕES - Some Principal APIs could not be loaded: org.eclipse.microprofile.jwt.JsonWebToken out of org.eclipse.microprofile.jwt.JsonWebToken not found
+INFORMAÇÕES - OpenWebBeans Container is starting...
+INFORMAÇÕES - Adding OpenWebBeansPlugin : [CdiPlugin]
+INFORMAÇÕES - All injection points were validated successfully.
+INFORMAÇÕES - OpenWebBeans Container has started, it took 91 ms.
+INFORMAÇÕES - Using readers:
+INFORMAÇÕES -      org.apache.cxf.jaxrs.provider.PrimitiveTextProvider@6133824
+INFORMAÇÕES -      org.apache.cxf.jaxrs.provider.FormEncodingProvider@e9e70387
+INFORMAÇÕES -      org.apache.cxf.jaxrs.provider.MultipartProvider@5f76058f
+INFORMAÇÕES -      org.apache.cxf.jaxrs.provider.SourceProvider@20ea2c24
+INFORMAÇÕES -      org.apache.cxf.jaxrs.provider.JAXBElementTypedProvider@b4f12840
+INFORMAÇÕES -      org.apache.cxf.jaxrs.provider.JAXBElementProvider@5aa0cf6f
+INFORMAÇÕES -      org.apache.openejb.server.cxf.rs.johnzon.TomEEJsonbProvider@ca404f1a
+INFORMAÇÕES -      org.apache.openejb.server.cxf.rs.johnzon.TomEEJsonpProvider@c493f575
+INFORMAÇÕES -      org.apache.cxf.jaxrs.provider.StringTextProvider@4259015f
+INFORMAÇÕES -      org.apache.cxf.jaxrs.provider.BinaryDataProvider@40966367
+INFORMAÇÕES -      org.apache.cxf.jaxrs.provider.DataSourceProvider@6222567f
+INFORMAÇÕES - Using writers:
+INFORMAÇÕES -      org.apache.johnzon.jaxrs.WadlDocumentMessageBodyWriter@3a13a4fb
+INFORMAÇÕES -      org.apache.cxf.jaxrs.nio.NioMessageBodyWriter@4c42f2bd
+INFORMAÇÕES -      org.apache.cxf.jaxrs.provider.StringTextProvider@4259015f
+INFORMAÇÕES -      org.apache.cxf.jaxrs.provider.JAXBElementTypedProvider@b4f12840
+INFORMAÇÕES -      org.apache.cxf.jaxrs.provider.PrimitiveTextProvider@6133824
+INFORMAÇÕES -      org.apache.cxf.jaxrs.provider.FormEncodingProvider@e9e70387
+INFORMAÇÕES -      org.apache.cxf.jaxrs.provider.MultipartProvider@5f76058f
+INFORMAÇÕES -      org.apache.cxf.jaxrs.provider.SourceProvider@20ea2c24
+INFORMAÇÕES -      org.apache.cxf.jaxrs.provider.JAXBElementProvider@5aa0cf6f
+INFORMAÇÕES -      org.apache.openejb.server.cxf.rs.johnzon.TomEEJsonbProvider@ca404f1a
+INFORMAÇÕES -      org.apache.openejb.server.cxf.rs.johnzon.TomEEJsonpProvider@c493f575
+INFORMAÇÕES -      org.apache.cxf.jaxrs.provider.BinaryDataProvider@40966367
+INFORMAÇÕES -      org.apache.cxf.jaxrs.provider.DataSourceProvider@6222567f
+INFORMAÇÕES - Using exception mappers:
+INFORMAÇÕES -      org.apache.cxf.jaxrs.impl.WebApplicationExceptionMapper@573fcce9
+INFORMAÇÕES -      org.apache.openejb.server.cxf.rs.EJBExceptionMapper@b1374405
+INFORMAÇÕES -      org.apache.cxf.jaxrs.validation.ValidationExceptionMapper@59fe23e0
+INFORMAÇÕES - REST Application: http://127.0.0.1:43963/test/         -> org.apache.openejb.server.rest.InternalApplication@d53e82f6
+INFORMAÇÕES -      Service URI: http://127.0.0.1:43963/test/greeting -> Pojo org.superbiz.rest.GreetingService
+INFORMAÇÕES -               GET http://127.0.0.1:43963/test/greeting ->      Greet message()         
+INFORMAÇÕES -              POST http://127.0.0.1:43963/test/greeting ->      Greet lowerCase(Request)
+INFORMAÇÕES - Deployed Application(path=/home/daniel/git/apache/tomee/examples/rest-cdi/GreetingServiceTest)
+DETALHADO - ******************* REQUEST ******************
+POST http://localhost:43963/test/greeting/
+Accept=[application/xml]
+Cache-Control=[no-cache]
+User-Agent=[Apache-CXF/3.3.6]
+Connection=[keep-alive]
+Host=[localhost:43963]
+Pragma=[no-cache]
+Content-Length=[97]
+Content-Type=[application/xml]
+
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?><request><value>Hi REST!</value></request>
+**********************************************
+
+DETALHADO - HTTP/1.1 200 OK
+Server: OpenEJB/8.0.5-SNAPSHOT Linux/5.0.0-23-generic (amd64)
+Connection: close
+Content-Length: 97
+Date: Sat, 01 Aug 2020 22:56:07 GMT
+Content-Type: application/xml
+
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?><greet><message>hi rest!</message></greet>
+INFORMAÇÕES - Undeploying app: /home/daniel/git/apache/tomee/examples/rest-cdi/GreetingServiceTest
+INFORMAÇÕES - Stopping network services
+INFORMAÇÕES - Stopping server services
+INFORMAÇÕES - Created new singletonService org.apache.openejb.cdi.ThreadSingletonServiceImpl@f52a8185
+INFORMAÇÕES - Succeeded in installing singleton service
+INFORMAÇÕES - Cannot find the configuration file [conf/openejb.xml].  Will attempt to create one for the beans deployed.
+INFORMAÇÕES - Configuring Service(id=Default Security Service, type=SecurityService, provider-id=Default Security Service)
+INFORMAÇÕES - Configuring Service(id=Default Transaction Manager, type=TransactionManager, provider-id=Default Transaction Manager)
+INFORMAÇÕES - Creating TransactionManager(id=Default Transaction Manager)
+INFORMAÇÕES - Creating SecurityService(id=Default Security Service)
+INFORMAÇÕES - Initializing network services
+INFORMAÇÕES - Creating ServerService(id=cxf-rs)
+GRAVE - MBean Object org.apache.cxf.bus.extension.ExtensionManagerBus@3197c5e9 register to MBeanServer failed : javax.management.InstanceAlreadyExistsException: org.apache.cxf:bus.id=openejb.cxf.bus,type=Bus,instance.id=832030185
+INFORMAÇÕES - Creating ServerService(id=httpejbd)
+INFORMAÇÕES - Created ServicePool 'httpejbd' with (10) core threads, limited to (200) threads with a queue of (9)
+INFORMAÇÕES - Using 'print=true'
+DETALHADO - Using default '.xml=false'
+DETALHADO - Using default 'stream.count=false'
+INFORMAÇÕES - Initializing network services
+INFORMAÇÕES -   ** Bound Services **
+INFORMAÇÕES -   NAME                 IP              PORT  
+INFORMAÇÕES -   httpejbd             127.0.0.1       45805 
+INFORMAÇÕES - -------
+INFORMAÇÕES - Ready!
+INFORMAÇÕES - Configuring enterprise application: /home/daniel/git/apache/tomee/examples/rest-cdi/GreetingServiceTest
+INFORMAÇÕES - Configuring Service(id=Default Managed Container, type=Container, provider-id=Default Managed Container)
+INFORMAÇÕES - Auto-creating a container for bean org.superbiz.rest.GreetingServiceTest: Container(type=MANAGED, id=Default Managed Container)
+INFORMAÇÕES - Creating Container(id=Default Managed Container)
+INFORMAÇÕES - Using directory /tmp for stateful session passivation
+INFORMAÇÕES - Enterprise application "/home/daniel/git/apache/tomee/examples/rest-cdi/GreetingServiceTest" loaded.
+INFORMAÇÕES - Creating dedicated application classloader for GreetingServiceTest
+INFORMAÇÕES - Assembling app: /home/daniel/git/apache/tomee/examples/rest-cdi/GreetingServiceTest
+INFORMAÇÕES - Existing thread singleton service in SystemInstance(): org.apache.openejb.cdi.ThreadSingletonServiceImpl@f52a8185
+INFORMAÇÕES - Some Principal APIs could not be loaded: org.eclipse.microprofile.jwt.JsonWebToken out of org.eclipse.microprofile.jwt.JsonWebToken not found
+INFORMAÇÕES - OpenWebBeans Container is starting...
+INFORMAÇÕES - Adding OpenWebBeansPlugin : [CdiPlugin]
+INFORMAÇÕES - All injection points were validated successfully.
+INFORMAÇÕES - OpenWebBeans Container has started, it took 79 ms.
+INFORMAÇÕES - Using readers:
+INFORMAÇÕES -      org.apache.cxf.jaxrs.provider.PrimitiveTextProvider@8cb7376d
+INFORMAÇÕES -      org.apache.cxf.jaxrs.provider.FormEncodingProvider@9499976b
+INFORMAÇÕES -      org.apache.cxf.jaxrs.provider.MultipartProvider@1058a47e
+INFORMAÇÕES -      org.apache.cxf.jaxrs.provider.SourceProvider@3cd3203
+INFORMAÇÕES -      org.apache.cxf.jaxrs.provider.JAXBElementTypedProvider@1116af37
+INFORMAÇÕES -      org.apache.cxf.jaxrs.provider.JAXBElementProvider@d3c0684e
+INFORMAÇÕES -      org.apache.openejb.server.cxf.rs.johnzon.TomEEJsonbProvider@ca404f1a
+INFORMAÇÕES -      org.apache.openejb.server.cxf.rs.johnzon.TomEEJsonpProvider@c493f575
+INFORMAÇÕES -      org.apache.cxf.jaxrs.provider.StringTextProvider@8a06ad8d
+INFORMAÇÕES -      org.apache.cxf.jaxrs.provider.BinaryDataProvider@5ab112cb
+INFORMAÇÕES -      org.apache.cxf.jaxrs.provider.DataSourceProvider@cd500c53
+INFORMAÇÕES - Using writers:
+INFORMAÇÕES -      org.apache.johnzon.jaxrs.WadlDocumentMessageBodyWriter@1606be91
+INFORMAÇÕES -      org.apache.cxf.jaxrs.nio.NioMessageBodyWriter@6b980ff2
+INFORMAÇÕES -      org.apache.cxf.jaxrs.provider.StringTextProvider@8a06ad8d
+INFORMAÇÕES -      org.apache.cxf.jaxrs.provider.JAXBElementTypedProvider@1116af37
+INFORMAÇÕES -      org.apache.cxf.jaxrs.provider.PrimitiveTextProvider@8cb7376d
+INFORMAÇÕES -      org.apache.cxf.jaxrs.provider.FormEncodingProvider@9499976b
+INFORMAÇÕES -      org.apache.cxf.jaxrs.provider.MultipartProvider@1058a47e
+INFORMAÇÕES -      org.apache.cxf.jaxrs.provider.SourceProvider@3cd3203
+INFORMAÇÕES -      org.apache.cxf.jaxrs.provider.JAXBElementProvider@d3c0684e
+INFORMAÇÕES -      org.apache.openejb.server.cxf.rs.johnzon.TomEEJsonbProvider@ca404f1a
+INFORMAÇÕES -      org.apache.openejb.server.cxf.rs.johnzon.TomEEJsonpProvider@c493f575
+INFORMAÇÕES -      org.apache.cxf.jaxrs.provider.BinaryDataProvider@5ab112cb
+INFORMAÇÕES -      org.apache.cxf.jaxrs.provider.DataSourceProvider@cd500c53
+INFORMAÇÕES - Using exception mappers:
+INFORMAÇÕES -      org.apache.cxf.jaxrs.impl.WebApplicationExceptionMapper@c0bb1fa5
+INFORMAÇÕES -      org.apache.openejb.server.cxf.rs.EJBExceptionMapper@395031ad
+INFORMAÇÕES -      org.apache.cxf.jaxrs.validation.ValidationExceptionMapper@67a5a4bb
+INFORMAÇÕES - REST Application: http://127.0.0.1:45805/test/         -> org.apache.openejb.server.rest.InternalApplication@f39d9d50
+INFORMAÇÕES -      Service URI: http://127.0.0.1:45805/test/greeting -> Pojo org.superbiz.rest.GreetingService
+INFORMAÇÕES -               GET http://127.0.0.1:45805/test/greeting ->      Greet message()         
+INFORMAÇÕES -              POST http://127.0.0.1:45805/test/greeting ->      Greet lowerCase(Request)
+INFORMAÇÕES - Deployed Application(path=/home/daniel/git/apache/tomee/examples/rest-cdi/GreetingServiceTest)
+DETALHADO - ******************* REQUEST ******************
+GET http://localhost:45805/test/greeting/
+Accept=[application/json]
+Cache-Control=[no-cache]
+User-Agent=[Apache-CXF/3.3.6]
+Connection=[keep-alive]
+Host=[localhost:45805]
+Pragma=[no-cache]
+
+
+**********************************************
+
+DETALHADO - HTTP/1.1 200 OK
+Server: OpenEJB/8.0.5-SNAPSHOT Linux/5.0.0-23-generic (amd64)
+Connection: close
+Content-Length: 22
+Date: Sat, 01 Aug 2020 22:56:07 GMT
+Content-Type: application/json
+
+{"message":"Hi REST!"}
+INFORMAÇÕES - Undeploying app: /home/daniel/git/apache/tomee/examples/rest-cdi/GreetingServiceTest
+INFORMAÇÕES - Stopping network services
+INFORMAÇÕES - Stopping server services
+INFORMAÇÕES - Created new singletonService org.apache.openejb.cdi.ThreadSingletonServiceImpl@f52a8185
+INFORMAÇÕES - Succeeded in installing singleton service
+INFORMAÇÕES - Cannot find the configuration file [conf/openejb.xml].  Will attempt to create one for the beans deployed.
+INFORMAÇÕES - Configuring Service(id=Default Security Service, type=SecurityService, provider-id=Default Security Service)
+INFORMAÇÕES - Configuring Service(id=Default Transaction Manager, type=TransactionManager, provider-id=Default Transaction Manager)
+INFORMAÇÕES - Creating TransactionManager(id=Default Transaction Manager)
+INFORMAÇÕES - Creating SecurityService(id=Default Security Service)
+INFORMAÇÕES - Initializing network services
+INFORMAÇÕES - Creating ServerService(id=cxf-rs)
+GRAVE - MBean Object org.apache.cxf.bus.extension.ExtensionManagerBus@3197c5e9 register to MBeanServer failed : javax.management.InstanceAlreadyExistsException: org.apache.cxf:bus.id=openejb.cxf.bus,type=Bus,instance.id=832030185
+INFORMAÇÕES - Creating ServerService(id=httpejbd)
+INFORMAÇÕES - Created ServicePool 'httpejbd' with (10) core threads, limited to (200) threads with a queue of (9)
+INFORMAÇÕES - Using 'print=true'
+DETALHADO - Using default '.xml=false'
+DETALHADO - Using default 'stream.count=false'
+INFORMAÇÕES - Initializing network services
+INFORMAÇÕES -   ** Bound Services **
+INFORMAÇÕES -   NAME                 IP              PORT  
+INFORMAÇÕES -   httpejbd             127.0.0.1       33139 
+INFORMAÇÕES - -------
+INFORMAÇÕES - Ready!
+INFORMAÇÕES - Configuring enterprise application: /home/daniel/git/apache/tomee/examples/rest-cdi/GreetingServiceTest
+INFORMAÇÕES - Configuring Service(id=Default Managed Container, type=Container, provider-id=Default Managed Container)
+INFORMAÇÕES - Auto-creating a container for bean org.superbiz.rest.GreetingServiceTest: Container(type=MANAGED, id=Default Managed Container)
+INFORMAÇÕES - Creating Container(id=Default Managed Container)
+INFORMAÇÕES - Using directory /tmp for stateful session passivation
+INFORMAÇÕES - Enterprise application "/home/daniel/git/apache/tomee/examples/rest-cdi/GreetingServiceTest" loaded.
+INFORMAÇÕES - Creating dedicated application classloader for GreetingServiceTest
+INFORMAÇÕES - Assembling app: /home/daniel/git/apache/tomee/examples/rest-cdi/GreetingServiceTest
+INFORMAÇÕES - Existing thread singleton service in SystemInstance(): org.apache.openejb.cdi.ThreadSingletonServiceImpl@f52a8185
+INFORMAÇÕES - Some Principal APIs could not be loaded: org.eclipse.microprofile.jwt.JsonWebToken out of org.eclipse.microprofile.jwt.JsonWebToken not found
+INFORMAÇÕES - OpenWebBeans Container is starting...
+INFORMAÇÕES - Adding OpenWebBeansPlugin : [CdiPlugin]
+INFORMAÇÕES - All injection points were validated successfully.
+INFORMAÇÕES - OpenWebBeans Container has started, it took 78 ms.
+INFORMAÇÕES - Using readers:
+INFORMAÇÕES -      org.apache.cxf.jaxrs.provider.PrimitiveTextProvider@e138884c
+INFORMAÇÕES -      org.apache.cxf.jaxrs.provider.FormEncodingProvider@47d59cc8
+INFORMAÇÕES -      org.apache.cxf.jaxrs.provider.MultipartProvider@8b1ed8f2
+INFORMAÇÕES -      org.apache.cxf.jaxrs.provider.SourceProvider@63562d8b
+INFORMAÇÕES -      org.apache.cxf.jaxrs.provider.JAXBElementTypedProvider@ee828039
+INFORMAÇÕES -      org.apache.cxf.jaxrs.provider.JAXBElementProvider@6a973a94
+INFORMAÇÕES -      org.apache.openejb.server.cxf.rs.johnzon.TomEEJsonbProvider@ca404f1a
+INFORMAÇÕES -      org.apache.openejb.server.cxf.rs.johnzon.TomEEJsonpProvider@c493f575
+INFORMAÇÕES -      org.apache.cxf.jaxrs.provider.StringTextProvider@68e11edb
+INFORMAÇÕES -      org.apache.cxf.jaxrs.provider.BinaryDataProvider@4eeaa949
+INFORMAÇÕES -      org.apache.cxf.jaxrs.provider.DataSourceProvider@c1300ce1
+INFORMAÇÕES - Using writers:
+INFORMAÇÕES -      org.apache.johnzon.jaxrs.WadlDocumentMessageBodyWriter@98de0e5d
+INFORMAÇÕES -      org.apache.cxf.jaxrs.nio.NioMessageBodyWriter@ae6701a9
+INFORMAÇÕES -      org.apache.cxf.jaxrs.provider.StringTextProvider@68e11edb
+INFORMAÇÕES -      org.apache.cxf.jaxrs.provider.JAXBElementTypedProvider@ee828039
+INFORMAÇÕES -      org.apache.cxf.jaxrs.provider.PrimitiveTextProvider@e138884c
+INFORMAÇÕES -      org.apache.cxf.jaxrs.provider.FormEncodingProvider@47d59cc8
+INFORMAÇÕES -      org.apache.cxf.jaxrs.provider.MultipartProvider@8b1ed8f2
+INFORMAÇÕES -      org.apache.cxf.jaxrs.provider.SourceProvider@63562d8b
+INFORMAÇÕES -      org.apache.cxf.jaxrs.provider.JAXBElementProvider@6a973a94
+INFORMAÇÕES -      org.apache.openejb.server.cxf.rs.johnzon.TomEEJsonbProvider@ca404f1a
+INFORMAÇÕES -      org.apache.openejb.server.cxf.rs.johnzon.TomEEJsonpProvider@c493f575
+INFORMAÇÕES -      org.apache.cxf.jaxrs.provider.BinaryDataProvider@4eeaa949
+INFORMAÇÕES -      org.apache.cxf.jaxrs.provider.DataSourceProvider@c1300ce1
+INFORMAÇÕES - Using exception mappers:
+INFORMAÇÕES -      org.apache.cxf.jaxrs.impl.WebApplicationExceptionMapper@b7aa4d1f
+INFORMAÇÕES -      org.apache.openejb.server.cxf.rs.EJBExceptionMapper@36e433da
+INFORMAÇÕES -      org.apache.cxf.jaxrs.validation.ValidationExceptionMapper@b2d74161
+INFORMAÇÕES - REST Application: http://127.0.0.1:33139/test/         -> org.apache.openejb.server.rest.InternalApplication@28f17c3f
+INFORMAÇÕES -      Service URI: http://127.0.0.1:33139/test/greeting -> Pojo org.superbiz.rest.GreetingService
+INFORMAÇÕES -               GET http://127.0.0.1:33139/test/greeting ->      Greet message()         
+INFORMAÇÕES -              POST http://127.0.0.1:33139/test/greeting ->      Greet lowerCase(Request)
+INFORMAÇÕES - Deployed Application(path=/home/daniel/git/apache/tomee/examples/rest-cdi/GreetingServiceTest)
+DETALHADO - ******************* REQUEST ******************
+POST http://localhost:33139/test/greeting/
+Accept=[application/json]
+Cache-Control=[no-cache]
+User-Agent=[Apache-CXF/3.3.6]
+Connection=[keep-alive]
+Host=[localhost:33139]
+Pragma=[no-cache]
+Content-Length=[20]
+Content-Type=[application/json]
+
+{"value":"Hi REST!"}
+**********************************************
+
+DETALHADO - HTTP/1.1 200 OK
+Server: OpenEJB/8.0.5-SNAPSHOT Linux/5.0.0-23-generic (amd64)
+Connection: close
+Content-Length: 22
+Date: Sat, 01 Aug 2020 22:56:08 GMT
+Content-Type: application/json
+
+{"message":"hi rest!"}
+INFORMAÇÕES - Undeploying app: /home/daniel/git/apache/tomee/examples/rest-cdi/GreetingServiceTest
+INFORMAÇÕES - Stopping network services
+INFORMAÇÕES - Stopping server services
+Tests run: 4, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 4.995 sec
+
+Results :
+
+Tests run: 4, Failures: 0, Errors: 0, Skipped: 0
+----
diff --git a/examples/rest-cdi/pom.xml b/examples/rest-cdi/pom.xml
index e8e7965..36a5f87 100644
--- a/examples/rest-cdi/pom.xml
+++ b/examples/rest-cdi/pom.xml
@@ -20,7 +20,7 @@
   <modelVersion>4.0.0</modelVersion>
   <groupId>org.superbiz</groupId>
   <artifactId>rest-cdi</artifactId>
-  <version>8.0.6-SNAPSHOT</version>
+  <version>8.0.7-SNAPSHOT</version>
   <name>TomEE :: Examples :: REST CDI</name>
   <properties>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
@@ -82,7 +82,7 @@
     <dependency>
       <groupId>org.apache.tomee</groupId>
       <artifactId>openejb-cxf-rs</artifactId>
-      <version>8.0.6-SNAPSHOT</version>
+      <version>8.0.7-SNAPSHOT</version>
       <scope>test</scope>
     </dependency>
   </dependencies>
diff --git a/examples/rest-example-with-application/pom.xml b/examples/rest-example-with-application/pom.xml
index 6544c5b..b42c865 100644
--- a/examples/rest-example-with-application/pom.xml
+++ b/examples/rest-example-with-application/pom.xml
@@ -21,11 +21,11 @@
   <groupId>org.superbiz</groupId>
   <artifactId>rest-example-with-application</artifactId>
   <packaging>war</packaging>
-  <version>8.0.6-SNAPSHOT</version>
+  <version>8.0.7-SNAPSHOT</version>
   <name>TomEE :: Web Examples :: REST Example With Application</name>
   <properties>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
-    <tomee.version>8.0.6-SNAPSHOT</tomee.version>
+    <tomee.version>8.0.7-SNAPSHOT</tomee.version>
   </properties>
   <repositories>
     <repository>
diff --git a/examples/rest-example/pom.xml b/examples/rest-example/pom.xml
index 88b2799..1c448fb 100644
--- a/examples/rest-example/pom.xml
+++ b/examples/rest-example/pom.xml
@@ -21,11 +21,11 @@
   <groupId>org.superbiz</groupId>
   <artifactId>rest-example</artifactId>
   <packaging>war</packaging>
-  <version>8.0.6-SNAPSHOT</version>
+  <version>8.0.7-SNAPSHOT</version>
   <name>TomEE :: Web Examples :: REST Example</name>
   <properties>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
-    <tomee.version>8.0.6-SNAPSHOT</tomee.version>
+    <tomee.version>8.0.7-SNAPSHOT</tomee.version>
     <version.openjpa>3.0.0</version.openjpa>
   </properties>
   <repositories>
diff --git a/examples/rest-jaas/pom.xml b/examples/rest-jaas/pom.xml
index b87526e..6f2490a 100644
--- a/examples/rest-jaas/pom.xml
+++ b/examples/rest-jaas/pom.xml
@@ -20,7 +20,7 @@
   <modelVersion>4.0.0</modelVersion>
   <groupId>org.superbiz</groupId>
   <artifactId>rest-jaas</artifactId>
-  <version>8.0.6-SNAPSHOT</version>
+  <version>8.0.7-SNAPSHOT</version>
   <packaging>war</packaging>
   <name>TomEE :: Examples :: JAXRS and JAAS</name>
   <dependencies>
@@ -46,7 +46,7 @@
       <plugin>
         <groupId>org.apache.tomee.maven</groupId>
         <artifactId>tomee-maven-plugin</artifactId>
-        <version>8.0.6-SNAPSHOT</version>
+        <version>8.0.7-SNAPSHOT</version>
         <configuration>
           <systemVariables>
             <java.security.auth.login.config>${project.build.directory}/apache-tomee/conf/login.config</java.security.auth.login.config>
diff --git a/examples/rest-on-ejb/pom.xml b/examples/rest-on-ejb/pom.xml
index fc570af..77e50d4 100644
--- a/examples/rest-on-ejb/pom.xml
+++ b/examples/rest-on-ejb/pom.xml
@@ -22,11 +22,11 @@
   <groupId>org.superbiz</groupId>
   <artifactId>rest-on-ejb</artifactId>
   <packaging>jar</packaging>
-  <version>8.0.6-SNAPSHOT</version>
+  <version>8.0.7-SNAPSHOT</version>
   <name>TomEE :: Examples :: REST and EJB</name>
   <properties>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
-    <tomee.version>8.0.6-SNAPSHOT</tomee.version>
+    <tomee.version>8.0.7-SNAPSHOT</tomee.version>
   </properties>
   <build>
     <defaultGoal>install</defaultGoal>
diff --git a/examples/rest-sse-example/pom.xml b/examples/rest-sse-example/pom.xml
new file mode 100644
index 0000000..e61abb7
--- /dev/null
+++ b/examples/rest-sse-example/pom.xml
@@ -0,0 +1,130 @@
+<?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.
+-->
+<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/maven-v4_0_0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+  <groupId>org.superbiz</groupId>
+  <artifactId>rest-sse-example</artifactId>
+  <packaging>war</packaging>
+  <version>8.0.7-SNAPSHOT</version>
+  <name>TomEE :: Web Examples :: REST SSE Example</name>
+  <properties>
+    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+    <tomee.version>8.0.7-SNAPSHOT</tomee.version>
+    <version.openjpa>3.0.0</version.openjpa>
+  </properties>
+  <repositories>
+    <repository>
+      <id>apache-m2-snapshot</id>
+      <name>Apache Snapshot Repository</name>
+      <url>https://repository.apache.org/content/groups/snapshots</url>
+    </repository>
+  </repositories>
+  <pluginRepositories>
+    <pluginRepository>
+      <id>apache-m2-snapshot</id>
+      <name>Apache Snapshot Repository</name>
+      <url>https://repository.apache.org/content/groups/snapshots</url>
+    </pluginRepository>
+  </pluginRepositories>
+  <build>
+    <finalName>${project.artifactId}</finalName>
+    <defaultGoal>package</defaultGoal>
+    <plugins>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-compiler-plugin</artifactId>
+        <version>3.5.1</version>
+        <configuration>
+          <source>1.8</source>
+          <target>1.8</target>
+        </configuration>
+      </plugin>
+      <plugin>
+        <artifactId>maven-war-plugin</artifactId>
+        <version>3.1.0</version>
+        <configuration>
+          <packagingExcludes>WEB-INF/web.xml</packagingExcludes>
+        </configuration>
+      </plugin>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-surefire-plugin</artifactId>
+        <version>2.22.1</version>
+        <configuration>
+          <argLine>-Djdk.attach.allowAttachSelf</argLine>
+        </configuration>
+      </plugin>
+      <plugin>
+        <groupId>org.apache.tomee.maven</groupId>
+        <artifactId>tomee-maven-plugin</artifactId>
+        <version>${tomee.version}</version>
+        <configuration>
+          <simpleLog>true</simpleLog>
+          <tomeeVersion>${tomee.version}</tomeeVersion>
+          <tomeeClassifier>plus</tomeeClassifier>
+        </configuration>
+      </plugin>
+      <plugin>
+        <groupId>org.tomitribe.transformer</groupId>
+        <artifactId>org.eclipse.transformer.maven</artifactId>
+        <version>0.1.1a</version>
+        <configuration>
+          <classifier>jakartaee9</classifier>
+        </configuration>
+        <executions>
+          <execution>
+            <goals>
+              <goal>run</goal>
+            </goals>
+            <phase>package</phase>
+          </execution>
+        </executions>
+      </plugin>
+    </plugins>
+  </build>
+  <dependencies>
+    <dependency>
+      <groupId>org.apache.tomee</groupId>
+      <artifactId>javaee-api</artifactId>
+      <version>[8.0,)</version>
+      <scope>provided</scope>
+    </dependency>
+    <dependency>
+      <groupId>junit</groupId>
+      <artifactId>junit</artifactId>
+      <version>4.12</version>
+      <scope>test</scope>
+    </dependency>
+  </dependencies>
+  <!--
+  This section allows you to configure where to publish libraries for sharing.
+  It is not required and may be deleted.  For more information see:
+  http://maven.apache.org/plugins/maven-deploy-plugin/
+  -->
+  <distributionManagement>
+    <repository>
+      <id>local-release-repo</id>
+      <url>file://${project.build.outputDirectory}/repo/</url>
+    </repository>
+    <snapshotRepository>
+      <id>local-snapshot-repo</id>
+      <url>file://${project.build.outputDirectory}/repo/</url>
+    </snapshotRepository>
+  </distributionManagement>
+</project>
diff --git a/examples/rest-sse-example/src/main/java/org/superbiz/rest/service/JmsResource.java b/examples/rest-sse-example/src/main/java/org/superbiz/rest/service/JmsResource.java
new file mode 100644
index 0000000..2ed06bd
--- /dev/null
+++ b/examples/rest-sse-example/src/main/java/org/superbiz/rest/service/JmsResource.java
@@ -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.
+ */
+package org.superbiz.rest.service;
+
+import javax.enterprise.event.Observes;
+import javax.inject.Singleton;
+import javax.jms.Message;
+import javax.ws.rs.GET;
+import javax.ws.rs.Path;
+import javax.ws.rs.Produces;
+import javax.ws.rs.core.Context;
+import javax.ws.rs.core.MediaType;
+import javax.ws.rs.sse.OutboundSseEvent;
+import javax.ws.rs.sse.Sse;
+import javax.ws.rs.sse.SseBroadcaster;
+import javax.ws.rs.sse.SseEventSink;
+
+@Path("jms")
+@Singleton
+public class JmsResource {
+
+    private SseBroadcaster broadcaster;
+    private OutboundSseEvent.Builder builder;
+
+    @GET
+    @Produces(MediaType.SERVER_SENT_EVENTS)
+    public void stats(final @Context SseEventSink sink) {
+        broadcaster.register(sink);
+    }
+
+    @Context
+    public void setSse(final Sse sse) {
+        this.broadcaster = sse.newBroadcaster();
+        this.builder = sse.newEventBuilder();
+    }
+
+    public void onMessage(final @Observes Message message) {
+        if (broadcaster == null) {
+            return;
+        }
+
+        broadcaster.broadcast(builder.data(Message.class, message).mediaType(MediaType.APPLICATION_JSON_TYPE).build());
+    }
+}
diff --git a/examples/rest-sse-example/src/main/java/org/superbiz/rest/service/TopicListener.java b/examples/rest-sse-example/src/main/java/org/superbiz/rest/service/TopicListener.java
new file mode 100644
index 0000000..dbb6d01
--- /dev/null
+++ b/examples/rest-sse-example/src/main/java/org/superbiz/rest/service/TopicListener.java
@@ -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.
+ */
+package org.superbiz.rest.service;
+
+import javax.ejb.ActivationConfigProperty;
+import javax.ejb.MessageDriven;
+import javax.enterprise.event.Event;
+import javax.inject.Inject;
+import javax.jms.Message;
+import javax.jms.MessageListener;
+
+@MessageDriven(activationConfig = {
+        @ActivationConfigProperty(propertyName = "destinationType", propertyValue = "javax.jms.Topic"),
+        @ActivationConfigProperty(propertyName = "destination", propertyValue = "EVENT"),
+})
+public class TopicListener implements MessageListener {
+
+    @Inject
+    private Event<Message> messageReceivedEvent;
+
+    @Override
+    public void onMessage(final Message message) {
+        messageReceivedEvent.fire(message);
+    }
+}
diff --git a/examples/rest-sse-example/src/main/resources/META-INF/beans.xml b/examples/rest-sse-example/src/main/resources/META-INF/beans.xml
new file mode 100644
index 0000000..9b0b74f
--- /dev/null
+++ b/examples/rest-sse-example/src/main/resources/META-INF/beans.xml
@@ -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.
+-->
+<beans/>
diff --git a/examples/rest-sse-example/src/main/resources/META-INF/resources.xml b/examples/rest-sse-example/src/main/resources/META-INF/resources.xml
new file mode 100644
index 0000000..c98e634
--- /dev/null
+++ b/examples/rest-sse-example/src/main/resources/META-INF/resources.xml
@@ -0,0 +1,31 @@
+<!--
+
+    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.
+-->
+<resources>
+  <Resource id="MyJmsResourceAdapter" type="ActiveMQResourceAdapter">
+    BrokerXmlConfig =  broker:(tcp://127.0.0.01:61616)
+    ServerUrl       =  tcp://localhost:61616
+  </Resource>
+
+  <Resource id="MyJmsConnectionFactory" type="javax.jms.ConnectionFactory">
+    ResourceAdapter = MyJmsResourceAdapter
+  </Resource>
+
+  <Container id="MyJmsMdbContainer" ctype="MESSAGE">
+    ResourceAdapter = MyJmsResourceAdapter
+  </Container>
+</resources>
diff --git a/examples/rest-sse-example/src/main/webapp/WEB-INF/beans.xml b/examples/rest-sse-example/src/main/webapp/WEB-INF/beans.xml
new file mode 100644
index 0000000..bbc3399
--- /dev/null
+++ b/examples/rest-sse-example/src/main/webapp/WEB-INF/beans.xml
@@ -0,0 +1,17 @@
+<!--
+     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.
+  -->
+<beans/>
diff --git a/examples/rest-sse-example/src/main/webapp/WEB-INF/web.xml b/examples/rest-sse-example/src/main/webapp/WEB-INF/web.xml
new file mode 100644
index 0000000..17930cf
--- /dev/null
+++ b/examples/rest-sse-example/src/main/webapp/WEB-INF/web.xml
@@ -0,0 +1,25 @@
+<?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.
+  -->
+<web-app xmlns="http://java.sun.com/xml/ns/javaee"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
+         metadata-complete="false"
+         version="2.5">
+
+  <display-name>SSE Example</display-name>
+</web-app>
diff --git a/examples/rest-sse-example/src/main/webapp/index.html b/examples/rest-sse-example/src/main/webapp/index.html
new file mode 100644
index 0000000..36d425b
--- /dev/null
+++ b/examples/rest-sse-example/src/main/webapp/index.html
@@ -0,0 +1,47 @@
+<!DOCTYPE html>
+<!--
+     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.
+  -->
+
+<html>
+  <head>
+      <title>Fun with SSE and JMS</title>
+  </head>
+
+  <body>
+  <p>This example demonstrates how to send Server Side Events, and how to receive them, both using a JAX-RS client,
+  and also in Javascript in your web-browser.</p>
+  <p>You should be able to send messages to an ActiveMQ topic called 'EVENT' using the OpenWire port tcp/61616 on this machine.
+  Any messages sent to this topic will appear below.</p>
+
+  <div id="messages">
+
+  </div>
+
+  <script type="text/javascript">
+    var es = new EventSource('jms');
+    var messages = document.getElementById('messages');
+
+    es.onmessage = function(e) {
+      var newElement = document.createElement("p");
+
+      newElement.textContent = e.data;
+      messages.appendChild(newElement);
+    }
+  </script>
+  </body>
+</html>
+
diff --git a/examples/rest-xml-json/pom.xml b/examples/rest-xml-json/pom.xml
index 71bf35f..139961b 100644
--- a/examples/rest-xml-json/pom.xml
+++ b/examples/rest-xml-json/pom.xml
@@ -20,7 +20,7 @@
   <modelVersion>4.0.0</modelVersion>
   <groupId>org.superbiz</groupId>
   <artifactId>rest-xml-json</artifactId>
-  <version>8.0.6-SNAPSHOT</version>
+  <version>8.0.7-SNAPSHOT</version>
   <name>TomEE :: Examples :: REST XML JSON</name>
   <properties>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
@@ -82,7 +82,7 @@
     <dependency>
       <groupId>org.apache.tomee</groupId>
       <artifactId>openejb-cxf-rs</artifactId>
-      <version>8.0.6-SNAPSHOT</version>
+      <version>8.0.7-SNAPSHOT</version>
       <scope>test</scope>
     </dependency>
   </dependencies>
diff --git a/examples/scala-basic/pom.xml b/examples/scala-basic/pom.xml
index 9eb452c..df5745b 100644
--- a/examples/scala-basic/pom.xml
+++ b/examples/scala-basic/pom.xml
@@ -21,7 +21,7 @@
   <groupId>org.superbiz</groupId>
   <artifactId>scala-basic</artifactId>
   <packaging>jar</packaging>
-  <version>8.0.6-SNAPSHOT</version>
+  <version>8.0.7-SNAPSHOT</version>
   <name>TomEE :: Examples :: Basic Scala</name>
   <properties>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
@@ -148,7 +148,7 @@
     <dependency>
       <groupId>org.apache.tomee</groupId>
       <artifactId>openejb-core</artifactId>
-      <version>8.0.6-SNAPSHOT</version>
+      <version>8.0.7-SNAPSHOT</version>
       <scope>test</scope>
     </dependency>
   </dependencies>
diff --git a/examples/schedule-events/README_pt.adoc b/examples/schedule-events/README_pt.adoc
new file mode 100644
index 0000000..48fbd02
--- /dev/null
+++ b/examples/schedule-events/README_pt.adoc
@@ -0,0 +1,173 @@
+= Agendamento de Eventos CDI
+:index-group: CDI
+:jbake-type: page
+:jbake-status: published
+
+Este exemplo utiliza uma boa combinação CDI/EJB para agendar Eventos CDI. Isto é util se você quiser Eventos CDI para disparar regularmente ou em um horário específico ou data do calendário.
+
+Efetivamente este é um simples empacotador em volta do método `+BeanManager.fireEvent(Object,Annotations...)+` que adiciona `ScheduleExpression` na mistura. 
+
+== @Timeout e ScheduleExpression
+
+A lógica aqui é simples, nós efetivamente expômos um método identico para `+BeanManager.fireEvent(Object, Annotations...)+` e empacotamos isso como `+scheduleEvent(ScheduleExpression, Object, Annotation...)+`  
+
+Para fazer isso nós usamos o `TimerService` EJB (embaixo dessa cobertura isso é Quartz) e criamos um método `@Timeout` que vai ser executado quando ativada a `ScheduleExpression`.
+
+O método `@Timeout`, simplesmente chamado `timeout`, pega o evento e dispara ele.
+
+[source,java]
+----
+@Singleton
+@Lock(LockType.READ)
+public class Scheduler {
+
+    @Resource
+    private TimerService timerService;
+
+    @Resource
+    private BeanManager beanManager;
+
+    public void scheduleEvent(ScheduleExpression schedule, Object event, Annotation... qualifiers) {
+
+        timerService.createCalendarTimer(schedule, new TimerConfig(new EventConfig(event, qualifiers), false));
+    }
+
+    @Timeout
+    private void timeout(Timer timer) {
+        final EventConfig config = (EventConfig) timer.getInfo();
+
+        beanManager.fireEvent(config.getEvent(), config.getQualifiers());
+    }
+
+    //Na verdade não precisa ser serializável, só tem que implementá-lo
+    private final class EventConfig implements Serializable {
+
+        private final Object event;
+        private final Annotation[] qualifiers;
+
+        private EventConfig(Object event, Annotation[] qualifiers) {
+            this.event = event;
+            this.qualifiers = qualifiers;
+        }
+
+        public Object getEvent() {
+            return event;
+        }
+
+        public Annotation[] getQualifiers() {
+            return qualifiers;
+        }
+    }
+}
+----
+
+Então para usar isto, temos de injetar `Scheduler` como um EJB e aproveitar.
+
+[source,java]
+----
+public class SomeBean {
+
+    @EJB
+    private Scheduler scheduler;
+
+    public void doit() throws Exception {
+
+        // a cada cinco minutos
+        final ScheduleExpression schedule = new ScheduleExpression()
+                .hour("*")
+                .minute("*")
+                .second("*/5");
+
+        scheduler.scheduleEvent(schedule, new TestEvent("five"));
+    }
+
+    /**
+     * Evento será disparado a cada cinco minutos
+     */
+    public void observe(@Observes TestEvent event) {
+        // process the event
+    }
+
+}
+----
+
+== Caso de Teste
+
+Um caso de teste de trabalho para o acima seria como segue:
+
+[source,java]
+----
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.Test;
+
+import javax.ejb.AccessTimeout;
+import javax.ejb.EJB;
+import javax.ejb.ScheduleExpression;
+import javax.ejb.embeddable.EJBContainer;
+import javax.enterprise.event.Observes;
+import java.util.concurrent.CountDownLatch;
+import java.util.concurrent.TimeUnit;
+
+/**
+ * @version $Revision$ $Date$
+ */
+public class SchedulerTest {
+
+    public static final CountDownLatch events = new CountDownLatch(3);
+
+    @EJB
+    private Scheduler scheduler;
+
+    @Test
+    public void test() throws Exception {
+
+        final ScheduleExpression schedule = new ScheduleExpression()
+                .hour("*")
+                .minute("*")
+                .second("*/5");
+
+        scheduler.scheduleEvent(schedule, new TestEvent("five"));
+
+        Assert.assertTrue(events.await(1, TimeUnit.MINUTES));
+    }
+
+
+    @AccessTimeout(value = 1, unit = TimeUnit.MINUTES)
+    public void observe(@Observes TestEvent event) {
+        if ("five".equals(event.getMessage())) {
+            events.countDown();
+        }
+    }
+
+    public static class TestEvent {
+        private final String message;
+
+        public TestEvent(String message) {
+            this.message = message;
+        }
+
+        public String getMessage() {
+            return message;
+        }
+    }
+
+    @Before
+    public void setup() throws Exception {
+        EJBContainer.createEJBContainer().getContext().bind("inject", this);
+    }
+}
+----
+
+== Você deve conhecer
+
+* Eventos CDI não são mutli-tarefas 
+
+Se houver 0 observadores e cada um deles levar 7 minutos para executar, então o tempo total de execução para um evento são 70 minutos. Ele iria fazer você absolutamente, não gostar de agendar este evento, para disparar frequentemente com mais que 70 minutos.    
+
+O que aconteceria se você fizesse ? Depende da política `@Singleton` `@Lock`
+
+* `@Lock(WRITE)` é o padrão. Neste modo o método `timeout` seria essencialemnte bloqueado até que a invocação anterior se complete. Tendo ele disparado a cada 5 minutos, mesmo que você só possa processar um a cada 70 minutos, eventualmente faria com que todas as tarefas agrupadas de temporizador estivessem esperando em seu Singleton.
+* `@Lock(READ)` pemitir a execução paralela do método `timeout`. Eventos serão disparados em paralelo por um tempo. Contudo, desde que eles estejam levando 70 minutos cada, dentro de uma hora mais ou menos, ficaremos sem tarefas agrupadas de temporizador exatamente como acima.
+
+A solução elegante é usar `@Lock(WRITE)` então especifique algum tempo limite curto como `@AccessTimeout(value = 1, unit = TimeUnit.MINUTES)` no método `timeout`. Quando a próxima invocação de 5 minutos for disparada, ela aguardará até 1 minuto para ter acesso ao Singleton antes de desistir.
\ No newline at end of file
diff --git a/examples/schedule-events/pom.xml b/examples/schedule-events/pom.xml
index 1c253ec..d12bbcf 100644
--- a/examples/schedule-events/pom.xml
+++ b/examples/schedule-events/pom.xml
@@ -22,7 +22,7 @@
   <groupId>org.superbiz</groupId>
   <artifactId>schedule-events</artifactId>
   <packaging>jar</packaging>
-  <version>8.0.6-SNAPSHOT</version>
+  <version>8.0.7-SNAPSHOT</version>
   <name>TomEE :: Examples :: @Schedule Events</name>
   <properties>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
@@ -84,7 +84,7 @@
     <dependency>
       <groupId>org.apache.tomee</groupId>
       <artifactId>openejb-core</artifactId>
-      <version>8.0.6-SNAPSHOT</version>
+      <version>8.0.7-SNAPSHOT</version>
       <scope>test</scope>
     </dependency>
   </dependencies>
diff --git a/examples/schedule-expression/pom.xml b/examples/schedule-expression/pom.xml
index 32c3c38..fde8753 100644
--- a/examples/schedule-expression/pom.xml
+++ b/examples/schedule-expression/pom.xml
@@ -22,7 +22,7 @@
   <groupId>org.superbiz</groupId>
   <artifactId>schedule-expression</artifactId>
   <packaging>jar</packaging>
-  <version>8.0.6-SNAPSHOT</version>
+  <version>8.0.7-SNAPSHOT</version>
   <name>TomEE :: Examples :: ScheduleExpression</name>
   <properties>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
@@ -84,7 +84,7 @@
     <dependency>
       <groupId>org.apache.tomee</groupId>
       <artifactId>openejb-core</artifactId>
-      <version>8.0.6-SNAPSHOT</version>
+      <version>8.0.7-SNAPSHOT</version>
       <scope>test</scope>
     </dependency>
   </dependencies>
diff --git a/examples/schedule-methods-meta/pom.xml b/examples/schedule-methods-meta/pom.xml
index 08d4fc9..e73f753 100644
--- a/examples/schedule-methods-meta/pom.xml
+++ b/examples/schedule-methods-meta/pom.xml
@@ -22,7 +22,7 @@
   <groupId>org.superbiz</groupId>
   <artifactId>schedule-methods-meta</artifactId>
   <packaging>jar</packaging>
-  <version>8.0.6-SNAPSHOT</version>
+  <version>8.0.7-SNAPSHOT</version>
   <name>TomEE :: Examples :: @Schedule Methods (Meta)</name>
   <properties>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
@@ -84,7 +84,7 @@
     <dependency>
       <groupId>org.apache.tomee</groupId>
       <artifactId>openejb-core</artifactId>
-      <version>8.0.6-SNAPSHOT</version>
+      <version>8.0.7-SNAPSHOT</version>
       <scope>test</scope>
     </dependency>
   </dependencies>
diff --git a/examples/schedule-methods/pom.xml b/examples/schedule-methods/pom.xml
index b459c2f..69c31d7 100644
--- a/examples/schedule-methods/pom.xml
+++ b/examples/schedule-methods/pom.xml
@@ -22,7 +22,7 @@
   <groupId>org.superbiz</groupId>
   <artifactId>schedule-methods</artifactId>
   <packaging>jar</packaging>
-  <version>8.0.6-SNAPSHOT</version>
+  <version>8.0.7-SNAPSHOT</version>
   <name>TomEE :: Examples :: @Schedule Methods</name>
   <properties>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
@@ -84,7 +84,7 @@
     <dependency>
       <groupId>org.apache.tomee</groupId>
       <artifactId>openejb-core</artifactId>
-      <version>8.0.6-SNAPSHOT</version>
+      <version>8.0.7-SNAPSHOT</version>
       <scope>test</scope>
     </dependency>
   </dependencies>
diff --git a/examples/server-events/pom.xml b/examples/server-events/pom.xml
index 2c63598..08d8085 100644
--- a/examples/server-events/pom.xml
+++ b/examples/server-events/pom.xml
@@ -22,7 +22,7 @@
   <groupId>org.superbiz</groupId>
   <artifactId>server-events</artifactId>
   <packaging>jar</packaging>
-  <version>8.0.6-SNAPSHOT</version>
+  <version>8.0.7-SNAPSHOT</version>
   <name>TomEE :: Examples :: Server Events</name>
   <properties>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
@@ -77,7 +77,7 @@
     <dependency>
       <groupId>org.apache.tomee</groupId>
       <artifactId>openejb-core</artifactId>
-      <version>8.0.6-SNAPSHOT</version>
+      <version>8.0.7-SNAPSHOT</version>
       <scope>provided</scope>
     </dependency>
     <!-- test libs -->
@@ -90,7 +90,7 @@
     <dependency>
       <groupId>org.apache.tomee</groupId>
       <artifactId>arquillian-openejb-embedded</artifactId>
-      <version>8.0.6-SNAPSHOT</version>
+      <version>8.0.7-SNAPSHOT</version>
       <scope>test</scope>
     </dependency>
   </dependencies>
diff --git a/examples/serverless-builder/pom.xml b/examples/serverless-builder/pom.xml
index ef55bd8..a3677a8 100644
--- a/examples/serverless-builder/pom.xml
+++ b/examples/serverless-builder/pom.xml
@@ -20,13 +20,13 @@
   <modelVersion>4.0.0</modelVersion>
   <groupId>org.superbiz</groupId>
   <artifactId>serverless-builder</artifactId>
-  <version>8.0.6-SNAPSHOT</version>
+  <version>8.0.7-SNAPSHOT</version>
 
   <name>TomEE :: Examples :: Serverless Apache TomEE WebProfile</name>
   
   <properties>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
-    <version.tomee>8.0.6-SNAPSHOT</version.tomee>
+    <version.tomee>8.0.7-SNAPSHOT</version.tomee>
   </properties>
   <dependencies>
     <dependency>
diff --git a/examples/serverless-tomee-microprofile/pom.xml b/examples/serverless-tomee-microprofile/pom.xml
index c9742f4..6260a62 100644
--- a/examples/serverless-tomee-microprofile/pom.xml
+++ b/examples/serverless-tomee-microprofile/pom.xml
@@ -20,13 +20,13 @@
   <modelVersion>4.0.0</modelVersion>
   <groupId>org.superbiz</groupId>
   <artifactId>serverless-tomee-microprofile</artifactId>
-  <version>8.0.6-SNAPSHOT</version>
+  <version>8.0.7-SNAPSHOT</version>
 
   <name>TomEE :: Examples :: Serverless Apache TomEE MicroProfile</name>
   
   <properties>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
-    <version.tomee>8.0.6-SNAPSHOT</version.tomee>
+    <version.tomee>8.0.7-SNAPSHOT</version.tomee>
   </properties>
   <dependencies>
     <dependency>
diff --git a/examples/serverless-tomee-plume/pom.xml b/examples/serverless-tomee-plume/pom.xml
index baef22c..ea98c1d 100644
--- a/examples/serverless-tomee-plume/pom.xml
+++ b/examples/serverless-tomee-plume/pom.xml
@@ -20,13 +20,13 @@
   <modelVersion>4.0.0</modelVersion>
   <groupId>org.superbiz</groupId>
   <artifactId>serverless-tomee-plume</artifactId>
-  <version>8.0.6-SNAPSHOT</version>
+  <version>8.0.7-SNAPSHOT</version>
 
   <name>TomEE :: Examples :: Serverless Apache TomEE Plume</name>
   
   <properties>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
-    <version.tomee>8.0.6-SNAPSHOT</version.tomee>
+    <version.tomee>8.0.7-SNAPSHOT</version.tomee>
   </properties>
   <dependencies>
     <dependency>
diff --git a/examples/serverless-tomee-plus/pom.xml b/examples/serverless-tomee-plus/pom.xml
index 4e5de0c..0f48d57 100644
--- a/examples/serverless-tomee-plus/pom.xml
+++ b/examples/serverless-tomee-plus/pom.xml
@@ -20,13 +20,13 @@
   <modelVersion>4.0.0</modelVersion>
   <groupId>org.superbiz</groupId>
   <artifactId>serverless-tomee-plus</artifactId>
-  <version>8.0.6-SNAPSHOT</version>
+  <version>8.0.7-SNAPSHOT</version>
 
   <name>TomEE :: Examples :: Serverless Apache TomEE Plus</name>
   
   <properties>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
-    <version.tomee>8.0.6-SNAPSHOT</version.tomee>
+    <version.tomee>8.0.7-SNAPSHOT</version.tomee>
   </properties>
   <dependencies>
     <dependency>
diff --git a/examples/serverless-tomee-webprofile/pom.xml b/examples/serverless-tomee-webprofile/pom.xml
index 7eccc24..2fdec6b 100644
--- a/examples/serverless-tomee-webprofile/pom.xml
+++ b/examples/serverless-tomee-webprofile/pom.xml
@@ -20,7 +20,7 @@
   <modelVersion>4.0.0</modelVersion>
   <groupId>org.superbiz</groupId>
   <artifactId>serverless-tomee-webprofile</artifactId>
-  <version>8.0.6-SNAPSHOT</version>
+  <version>8.0.7-SNAPSHOT</version>
 
   <name>TomEE :: Examples :: Serverless Apache TomEE WebProfile</name>
   
@@ -31,7 +31,7 @@
     <dependency>
       <groupId>org.apache.tomee.bom</groupId>
       <artifactId>tomee-webprofile</artifactId>
-      <version>8.0.6-SNAPSHOT</version>
+      <version>8.0.7-SNAPSHOT</version>
     </dependency>
     <dependency>
       <groupId>junit</groupId>
diff --git a/examples/simple-cdi-interceptor/pom.xml b/examples/simple-cdi-interceptor/pom.xml
index 2ed5214..3439c2b 100644
--- a/examples/simple-cdi-interceptor/pom.xml
+++ b/examples/simple-cdi-interceptor/pom.xml
@@ -16,7 +16,7 @@
   <groupId>org.superbiz</groupId>
   <artifactId>simple-cdi-interceptor</artifactId>
   <packaging>jar</packaging>
-  <version>8.0.6-SNAPSHOT</version>
+  <version>8.0.7-SNAPSHOT</version>
   <name>TomEE :: Examples :: Simple CDI Interceptor</name>
   <properties>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
@@ -76,7 +76,7 @@
     <dependency>
       <groupId>org.apache.tomee</groupId>
       <artifactId>openejb-core</artifactId>
-      <version>8.0.6-SNAPSHOT</version>
+      <version>8.0.7-SNAPSHOT</version>
       <scope>test</scope>
     </dependency>
   </dependencies>
diff --git a/examples/simple-cmp2/pom.xml b/examples/simple-cmp2/pom.xml
index c5568e3..17cd312 100644
--- a/examples/simple-cmp2/pom.xml
+++ b/examples/simple-cmp2/pom.xml
@@ -22,11 +22,11 @@
   <groupId>org.superbiz</groupId>
   <artifactId>simple-cmp2</artifactId>
   <packaging>jar</packaging>
-  <version>8.0.6-SNAPSHOT</version>
+  <version>8.0.7-SNAPSHOT</version>
   <name>TomEE :: Examples :: Simple CMP2 Entity</name>
   <properties>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
-    <tomee.version>8.0.6-SNAPSHOT</tomee.version>
+    <tomee.version>8.0.7-SNAPSHOT</tomee.version>
   </properties>
   <build>
     <defaultGoal>install</defaultGoal>
diff --git a/examples/simple-ear/moviefun-business-logic/pom.xml b/examples/simple-ear/moviefun-business-logic/pom.xml
index 5a23545..422aba9 100644
--- a/examples/simple-ear/moviefun-business-logic/pom.xml
+++ b/examples/simple-ear/moviefun-business-logic/pom.xml
@@ -21,7 +21,7 @@
   <parent>
     <groupId>org.superbiz</groupId>
     <artifactId>moviefun-ear-parent</artifactId>
-    <version>8.0.6-SNAPSHOT</version>
+    <version>8.0.7-SNAPSHOT</version>
   </parent>
   <modelVersion>4.0.0</modelVersion>
   <artifactId>moviefun-business-logic</artifactId>
@@ -95,7 +95,7 @@
     <dependency>
       <groupId>org.apache.tomee</groupId>
       <artifactId>openejb-core</artifactId>
-      <version>8.0.6-SNAPSHOT</version>
+      <version>8.0.7-SNAPSHOT</version>
       <scope>test</scope>
     </dependency>
   </dependencies>
diff --git a/examples/simple-ear/moviefun-business-model/pom.xml b/examples/simple-ear/moviefun-business-model/pom.xml
index 58dbcc9..2af2a3f 100644
--- a/examples/simple-ear/moviefun-business-model/pom.xml
+++ b/examples/simple-ear/moviefun-business-model/pom.xml
@@ -23,7 +23,7 @@
   <parent>
     <groupId>org.superbiz</groupId>
     <artifactId>moviefun-ear-parent</artifactId>
-    <version>8.0.6-SNAPSHOT</version>
+    <version>8.0.7-SNAPSHOT</version>
   </parent>
   <modelVersion>4.0.0</modelVersion>
   <artifactId>moviefun-business-model</artifactId>
diff --git a/examples/simple-ear/moviefun-ear/pom.xml b/examples/simple-ear/moviefun-ear/pom.xml
index 6df7a70..fa9fd4d 100644
--- a/examples/simple-ear/moviefun-ear/pom.xml
+++ b/examples/simple-ear/moviefun-ear/pom.xml
@@ -19,7 +19,7 @@
   <parent>
     <groupId>org.superbiz</groupId>
     <artifactId>moviefun-ear-parent</artifactId>
-    <version>8.0.6-SNAPSHOT</version>
+    <version>8.0.7-SNAPSHOT</version>
   </parent>
   <modelVersion>4.0.0</modelVersion>
   <artifactId>moviefun-ear</artifactId>
diff --git a/examples/simple-ear/moviefun-functional-tests/pom.xml b/examples/simple-ear/moviefun-functional-tests/pom.xml
index c7e3180..a40f9be 100644
--- a/examples/simple-ear/moviefun-functional-tests/pom.xml
+++ b/examples/simple-ear/moviefun-functional-tests/pom.xml
@@ -23,7 +23,7 @@
   <parent>
     <groupId>org.superbiz</groupId>
     <artifactId>moviefun-ear-parent</artifactId>
-    <version>8.0.6-SNAPSHOT</version>
+    <version>8.0.7-SNAPSHOT</version>
   </parent>
   <modelVersion>4.0.0</modelVersion>
   <artifactId>moviefun-functional-test</artifactId>
@@ -81,7 +81,7 @@
     <dependency>
       <groupId>org.apache.tomee</groupId>
       <artifactId>openejb-core</artifactId>
-      <version>8.0.6-SNAPSHOT</version>
+      <version>8.0.7-SNAPSHOT</version>
       <scope>test</scope>
     </dependency>
     <dependency>
@@ -99,7 +99,7 @@
     <dependency>
       <groupId>org.apache.tomee</groupId>
       <artifactId>tomee-embedded</artifactId>
-      <version>8.0.6-SNAPSHOT</version>
+      <version>8.0.7-SNAPSHOT</version>
       <!--<classifier>uber</classifier> -->
       <scope>test</scope>
     </dependency>
@@ -129,7 +129,7 @@
     <dependency>
       <groupId>org.apache.tomee</groupId>
       <artifactId>arquillian-tomee-remote</artifactId>
-      <version>8.0.6-SNAPSHOT</version>
+      <version>8.0.7-SNAPSHOT</version>
       <scope>test</scope>
     </dependency>
   </dependencies>
diff --git a/examples/simple-ear/moviefun-functional-tests/src/test/resources/arquillian.xml b/examples/simple-ear/moviefun-functional-tests/src/test/resources/arquillian.xml
index c726dce..81a9d82 100644
--- a/examples/simple-ear/moviefun-functional-tests/src/test/resources/arquillian.xml
+++ b/examples/simple-ear/moviefun-functional-tests/src/test/resources/arquillian.xml
@@ -25,7 +25,7 @@
       <property name="httpPort">-1</property>
       <property name="stopPort">-1</property>
       <property name="tomcatVersion"></property>
-      <property name="dßßir">target/apache-tomee-remote</property>
+      <property name="dir">target/apache-tomee-remote</property>
       <property name="appWorkingDir">target/arquillian-test-working-dir</property>
     </configuration>
   </container>
diff --git a/examples/simple-ear/moviefun-webapp/pom.xml b/examples/simple-ear/moviefun-webapp/pom.xml
index dea5b2f..04f2f18 100644
--- a/examples/simple-ear/moviefun-webapp/pom.xml
+++ b/examples/simple-ear/moviefun-webapp/pom.xml
@@ -21,7 +21,7 @@
   <parent>
     <groupId>org.superbiz</groupId>
     <artifactId>moviefun-ear-parent</artifactId>
-    <version>8.0.6-SNAPSHOT</version>
+    <version>8.0.7-SNAPSHOT</version>
   </parent>
   <artifactId>moviefun-webapp</artifactId>
   <packaging>war</packaging>
@@ -58,7 +58,7 @@
     <dependency>
       <groupId>org.apache.tomee</groupId>
       <artifactId>openejb-core</artifactId>
-      <version>8.0.6-SNAPSHOT</version>
+      <version>8.0.7-SNAPSHOT</version>
       <scope>test</scope>
     </dependency>
     <dependency>
diff --git a/examples/simple-ear/pom.xml b/examples/simple-ear/pom.xml
index 1bb1960..598ec3a 100644
--- a/examples/simple-ear/pom.xml
+++ b/examples/simple-ear/pom.xml
@@ -21,7 +21,7 @@
   <modelVersion>4.0.0</modelVersion>
   <groupId>org.superbiz</groupId>
   <artifactId>moviefun-ear-parent</artifactId>
-  <version>8.0.6-SNAPSHOT</version>
+  <version>8.0.7-SNAPSHOT</version>
   <packaging>pom</packaging>
   <name>TomEE :: Examples :: Simple EAR</name>
   <modules>
@@ -33,7 +33,7 @@
   </modules>
   <properties>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
-    <tomee.version>8.0.6-SNAPSHOT</tomee.version>
+    <tomee.version>8.0.7-SNAPSHOT</tomee.version>
   </properties>
   <repositories>
     <repository>
diff --git a/examples/simple-jms-context/pom.xml b/examples/simple-jms-context/pom.xml
index fa97600..3b3082c 100644
--- a/examples/simple-jms-context/pom.xml
+++ b/examples/simple-jms-context/pom.xml
@@ -24,13 +24,13 @@
   <groupId>org.superbiz</groupId>
   <artifactId>simple-jms-context</artifactId>
   <packaging>war</packaging>
-  <version>8.0.6-SNAPSHOT</version>
+  <version>8.0.7-SNAPSHOT</version>
   <name>TomEE :: Examples :: Simple JMS Context</name>
 
   <properties>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
     <version.arquillian>1.1.13.Final</version.arquillian>
-    <tomee.version>8.0.6-SNAPSHOT</tomee.version>
+    <tomee.version>8.0.7-SNAPSHOT</tomee.version>
   </properties>
   <build>
     <defaultGoal>install</defaultGoal>
diff --git a/examples/simple-jms/pom.xml b/examples/simple-jms/pom.xml
index 3d15596..7070916 100644
--- a/examples/simple-jms/pom.xml
+++ b/examples/simple-jms/pom.xml
@@ -22,12 +22,12 @@
   <groupId>org.superbiz</groupId>
   <artifactId>simple-jms</artifactId>
   <packaging>war</packaging>
-  <version>8.0.6-SNAPSHOT</version>
+  <version>8.0.7-SNAPSHOT</version>
   <name>TomEE :: Examples :: Simple JMS</name>
   <properties>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
     <version.arquillian>1.1.13.Final</version.arquillian>
-    <tomee.version>8.0.6-SNAPSHOT</tomee.version>
+    <tomee.version>8.0.7-SNAPSHOT</tomee.version>
   </properties>
   <build>
     <defaultGoal>install</defaultGoal>
diff --git a/examples/simple-mdb-and-cdi/pom.xml b/examples/simple-mdb-and-cdi/pom.xml
index 61ed675..96f9ec4 100644
--- a/examples/simple-mdb-and-cdi/pom.xml
+++ b/examples/simple-mdb-and-cdi/pom.xml
@@ -22,7 +22,7 @@
   <groupId>org.superbiz</groupId>
   <artifactId>simple-mdb-and-cdi</artifactId>
   <packaging>jar</packaging>
-  <version>8.0.6-SNAPSHOT</version>
+  <version>8.0.7-SNAPSHOT</version>
   <name>TomEE :: Examples :: Simple MDB With a CDI Injection</name>
   <properties>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
@@ -84,7 +84,7 @@
     <dependency>
       <groupId>org.apache.tomee</groupId>
       <artifactId>openejb-core</artifactId>
-      <version>8.0.6-SNAPSHOT</version>
+      <version>8.0.7-SNAPSHOT</version>
       <scope>test</scope>
     </dependency>
   </dependencies>
diff --git a/examples/simple-mdb-with-descriptor/pom.xml b/examples/simple-mdb-with-descriptor/pom.xml
index 8bb4105..c4311d2 100644
--- a/examples/simple-mdb-with-descriptor/pom.xml
+++ b/examples/simple-mdb-with-descriptor/pom.xml
@@ -22,7 +22,7 @@
   <groupId>org.superbiz</groupId>
   <artifactId>simple-mdb-with-descriptor</artifactId>
   <packaging>jar</packaging>
-  <version>8.0.6-SNAPSHOT</version>
+  <version>8.0.7-SNAPSHOT</version>
   <name>TomEE :: Examples :: Simple MDB Using Deployment Descriptor Example</name>
   <properties>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
@@ -84,7 +84,7 @@
     <dependency>
       <groupId>org.apache.tomee</groupId>
       <artifactId>openejb-core</artifactId>
-      <version>8.0.6-SNAPSHOT</version>
+      <version>8.0.7-SNAPSHOT</version>
       <scope>test</scope>
     </dependency>
   </dependencies>
diff --git a/examples/simple-mdb/pom.xml b/examples/simple-mdb/pom.xml
index 9d599f0..4e27909 100644
--- a/examples/simple-mdb/pom.xml
+++ b/examples/simple-mdb/pom.xml
@@ -22,7 +22,7 @@
   <groupId>org.superbiz</groupId>
   <artifactId>simple-mdb</artifactId>
   <packaging>jar</packaging>
-  <version>8.0.6-SNAPSHOT</version>
+  <version>8.0.7-SNAPSHOT</version>
   <name>TomEE :: Examples :: Simple MDB Example</name>
   <properties>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
@@ -84,7 +84,7 @@
     <dependency>
       <groupId>org.apache.tomee</groupId>
       <artifactId>openejb-core</artifactId>
-      <version>8.0.6-SNAPSHOT</version>
+      <version>8.0.7-SNAPSHOT</version>
       <scope>test</scope>
     </dependency>
   </dependencies>
diff --git a/examples/simple-remote-tomcatusers/pom.xml b/examples/simple-remote-tomcatusers/pom.xml
index 81af935..4da1ed5 100644
--- a/examples/simple-remote-tomcatusers/pom.xml
+++ b/examples/simple-remote-tomcatusers/pom.xml
@@ -22,7 +22,7 @@
   <groupId>org.superbiz</groupId>
   <artifactId>simple-remote-tomcatusers</artifactId>
   <packaging>jar</packaging>
-  <version>8.0.6-SNAPSHOT</version>
+  <version>8.0.7-SNAPSHOT</version>
   <name>TomEE :: Examples :: Simple Remote tomcat-users.xml</name>
   <properties>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
@@ -86,7 +86,7 @@
     <dependency>
       <groupId>org.apache.tomee</groupId>
       <artifactId>arquillian-tomee-remote</artifactId>
-      <version>8.0.6-SNAPSHOT</version>
+      <version>8.0.7-SNAPSHOT</version>
       <scope>test</scope>
       <exclusions>
         <exclusion>
diff --git a/examples/simple-rest/pom.xml b/examples/simple-rest/pom.xml
index 782d906..2746259 100644
--- a/examples/simple-rest/pom.xml
+++ b/examples/simple-rest/pom.xml
@@ -20,7 +20,7 @@
   <modelVersion>4.0.0</modelVersion>
   <groupId>org.superbiz</groupId>
   <artifactId>simple-rest</artifactId>
-  <version>8.0.6-SNAPSHOT</version>
+  <version>8.0.7-SNAPSHOT</version>
   <name>TomEE :: Examples :: Simple REST</name>
   <properties>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
@@ -82,7 +82,7 @@
     <dependency>
       <groupId>org.apache.tomee</groupId>
       <artifactId>openejb-cxf-rs</artifactId>
-      <version>8.0.6-SNAPSHOT</version>
+      <version>8.0.7-SNAPSHOT</version>
       <scope>test</scope>
     </dependency>
   </dependencies>
diff --git a/examples/simple-singleton/pom.xml b/examples/simple-singleton/pom.xml
index aef5994..dd220a8 100644
--- a/examples/simple-singleton/pom.xml
+++ b/examples/simple-singleton/pom.xml
@@ -22,7 +22,7 @@
   <groupId>org.superbiz</groupId>
   <artifactId>simple-singleton</artifactId>
   <packaging>jar</packaging>
-  <version>8.0.6-SNAPSHOT</version>
+  <version>8.0.7-SNAPSHOT</version>
   <name>TomEE :: Examples :: Simple Singleton</name>
   <properties>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
@@ -84,7 +84,7 @@
     <dependency>
       <groupId>org.apache.tomee</groupId>
       <artifactId>openejb-core</artifactId>
-      <version>8.0.6-SNAPSHOT</version>
+      <version>8.0.7-SNAPSHOT</version>
       <scope>test</scope>
     </dependency>
   </dependencies>
diff --git a/examples/simple-stateful-callbacks/pom.xml b/examples/simple-stateful-callbacks/pom.xml
index 7819275..11e90db 100644
--- a/examples/simple-stateful-callbacks/pom.xml
+++ b/examples/simple-stateful-callbacks/pom.xml
@@ -22,7 +22,7 @@
   <groupId>org.superbiz</groupId>
   <artifactId>simple-stateful-callbacks</artifactId>
   <packaging>jar</packaging>
-  <version>8.0.6-SNAPSHOT</version>
+  <version>8.0.7-SNAPSHOT</version>
   <name>TomEE :: Examples :: Simple Stateful Pojo Callbacks</name>
   <properties>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
@@ -74,7 +74,7 @@
     <dependency>
       <groupId>org.apache.tomee.bom</groupId>
       <artifactId>jaxb-runtime</artifactId>
-      <version>8.0.6-SNAPSHOT</version>
+      <version>8.0.7-SNAPSHOT</version>
       <type>pom</type>
     </dependency>
     <dependency>
@@ -90,7 +90,7 @@
     <dependency>
       <groupId>org.apache.tomee</groupId>
       <artifactId>openejb-core</artifactId>
-      <version>8.0.6-SNAPSHOT</version>
+      <version>8.0.7-SNAPSHOT</version>
       <scope>test</scope>
     </dependency>
   </dependencies>
diff --git a/examples/simple-stateful/pom.xml b/examples/simple-stateful/pom.xml
index fc67e06..1f104e9 100644
--- a/examples/simple-stateful/pom.xml
+++ b/examples/simple-stateful/pom.xml
@@ -22,7 +22,7 @@
   <groupId>org.superbiz</groupId>
   <artifactId>simple-stateful</artifactId>
   <packaging>jar</packaging>
-  <version>8.0.6-SNAPSHOT</version>
+  <version>8.0.7-SNAPSHOT</version>
   <name>TomEE :: Examples :: Simple Stateful Pojo</name>
   <properties>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
@@ -84,7 +84,7 @@
     <dependency>
       <groupId>org.apache.tomee</groupId>
       <artifactId>openejb-core</artifactId>
-      <version>8.0.6-SNAPSHOT</version>
+      <version>8.0.7-SNAPSHOT</version>
       <scope>test</scope>
     </dependency>
   </dependencies>
diff --git a/examples/simple-stateless-callbacks/pom.xml b/examples/simple-stateless-callbacks/pom.xml
index ab9a61f..9310b39 100644
--- a/examples/simple-stateless-callbacks/pom.xml
+++ b/examples/simple-stateless-callbacks/pom.xml
@@ -24,7 +24,7 @@
   <groupId>org.superbiz</groupId>
   <artifactId>simple-stateless-callbacks</artifactId>
   <packaging>jar</packaging>
-  <version>8.0.6-SNAPSHOT</version>
+  <version>8.0.7-SNAPSHOT</version>
   <name>TomEE :: Examples :: Simple Stateless Pojo Callbacks</name>
   <properties>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
@@ -71,7 +71,7 @@
     <dependency>
       <groupId>org.apache.tomee</groupId>
       <artifactId>openejb-core</artifactId>
-      <version>8.0.6-SNAPSHOT</version>
+      <version>8.0.7-SNAPSHOT</version>
       <scope>test</scope>
     </dependency>
   </dependencies>
diff --git a/examples/simple-stateless-with-descriptor/pom.xml b/examples/simple-stateless-with-descriptor/pom.xml
index 2bd6f88..5b31973 100644
--- a/examples/simple-stateless-with-descriptor/pom.xml
+++ b/examples/simple-stateless-with-descriptor/pom.xml
@@ -22,7 +22,7 @@
   <groupId>org.superbiz</groupId>
   <artifactId>simple-stateless-with-descriptor</artifactId>
   <packaging>jar</packaging>
-  <version>8.0.6-SNAPSHOT</version>
+  <version>8.0.7-SNAPSHOT</version>
   <name>TomEE :: Examples :: Simple Stateless With Deployment Descriptor</name>
   <properties>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
@@ -84,13 +84,13 @@
     <dependency>
       <groupId>org.apache.tomee</groupId>
       <artifactId>openejb-core</artifactId>
-      <version>8.0.6-SNAPSHOT</version>
+      <version>8.0.7-SNAPSHOT</version>
       <scope>test</scope>
     </dependency>
     <dependency>
       <groupId>org.apache.tomee</groupId>
       <artifactId>openejb-jee-accessors</artifactId>
-      <version>8.0.6-SNAPSHOT</version>
+      <version>8.0.7-SNAPSHOT</version>
       <scope>test</scope>
     </dependency>
   </dependencies>
diff --git a/examples/simple-stateless/pom.xml b/examples/simple-stateless/pom.xml
index 531baa6..af8c631 100644
--- a/examples/simple-stateless/pom.xml
+++ b/examples/simple-stateless/pom.xml
@@ -22,7 +22,7 @@
   <groupId>org.superbiz</groupId>
   <artifactId>simple-stateless</artifactId>
   <packaging>jar</packaging>
-  <version>8.0.6-SNAPSHOT</version>
+  <version>8.0.7-SNAPSHOT</version>
   <name>TomEE :: Examples :: Simple Stateless Pojo</name>
   <properties>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
@@ -84,7 +84,7 @@
     <dependency>
       <groupId>org.apache.tomee</groupId>
       <artifactId>openejb-core</artifactId>
-      <version>8.0.6-SNAPSHOT</version>
+      <version>8.0.7-SNAPSHOT</version>
       <scope>test</scope>
     </dependency>
   </dependencies>
diff --git a/examples/simple-webservice-without-interface/pom.xml b/examples/simple-webservice-without-interface/pom.xml
index 0b20479..c153cd0 100644
--- a/examples/simple-webservice-without-interface/pom.xml
+++ b/examples/simple-webservice-without-interface/pom.xml
@@ -22,7 +22,7 @@
   <groupId>org.superbiz</groupId>
   <artifactId>simple-webservice-without-interface</artifactId>
   <packaging>jar</packaging>
-  <version>8.0.6-SNAPSHOT</version>
+  <version>8.0.7-SNAPSHOT</version>
   <name>TomEE :: Examples :: Simple Webservice Without Interface</name>
   <properties>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
@@ -83,7 +83,7 @@
     <dependency>
       <groupId>org.apache.tomee</groupId>
       <artifactId>openejb-cxf</artifactId>
-      <version>8.0.6-SNAPSHOT</version>
+      <version>8.0.7-SNAPSHOT</version>
       <scope>test</scope>
     </dependency>
     <!-- This is required on IBM JDKs (and potentially others) because saaj-impl depends
diff --git a/examples/simple-webservice/pom.xml b/examples/simple-webservice/pom.xml
index 392d1a8..d0e5331 100644
--- a/examples/simple-webservice/pom.xml
+++ b/examples/simple-webservice/pom.xml
@@ -22,7 +22,7 @@
   <groupId>org.superbiz</groupId>
   <artifactId>simple-webservice</artifactId>
   <packaging>jar</packaging>
-  <version>8.0.6-SNAPSHOT</version>
+  <version>8.0.7-SNAPSHOT</version>
   <name>TomEE :: Examples :: Simple Webservice</name>
   <properties>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
@@ -83,7 +83,7 @@
     <dependency>
       <groupId>org.apache.tomee</groupId>
       <artifactId>openejb-cxf</artifactId>
-      <version>8.0.6-SNAPSHOT</version>
+      <version>8.0.7-SNAPSHOT</version>
       <scope>test</scope>
     </dependency>
     <!-- This is required on IBM JDKs (and potentially others) because saaj-impl depends
diff --git a/examples/singleton-startup-ordering/pom.xml b/examples/singleton-startup-ordering/pom.xml
index cfa2216..3d1baab 100755
--- a/examples/singleton-startup-ordering/pom.xml
+++ b/examples/singleton-startup-ordering/pom.xml
@@ -20,7 +20,7 @@
   <modelVersion>4.0.0</modelVersion>
   <groupId>org.superbiz</groupId>
   <artifactId>singleton-startup-ordering</artifactId>
-  <version>8.0.6-SNAPSHOT</version>
+  <version>8.0.7-SNAPSHOT</version>
   <packaging>war</packaging>
   <name>TomEE :: Examples ::  Singleton startup ordering</name>
   <properties>
diff --git a/examples/spring-data-proxy-meta/pom.xml b/examples/spring-data-proxy-meta/pom.xml
index 4d67e03..127553d 100644
--- a/examples/spring-data-proxy-meta/pom.xml
+++ b/examples/spring-data-proxy-meta/pom.xml
@@ -21,7 +21,7 @@
   <groupId>org.superbiz</groupId>
   <artifactId>spring-data-proxy-meta</artifactId>
   <packaging>jar</packaging>
-  <version>8.0.6-SNAPSHOT</version>
+  <version>8.0.7-SNAPSHOT</version>
   <name>TomEE :: Examples :: Spring Data Meta</name>
   <properties>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
@@ -92,7 +92,7 @@
     <dependency>
       <groupId>org.apache.tomee</groupId>
       <artifactId>openejb-core</artifactId>
-      <version>8.0.6-SNAPSHOT</version>
+      <version>8.0.7-SNAPSHOT</version>
     </dependency>
   </dependencies>
   <!--
diff --git a/examples/spring-data-proxy/pom.xml b/examples/spring-data-proxy/pom.xml
index 02911a9..0b546e8 100644
--- a/examples/spring-data-proxy/pom.xml
+++ b/examples/spring-data-proxy/pom.xml
@@ -21,7 +21,7 @@
   <groupId>org.superbiz</groupId>
   <artifactId>spring-data-proxy</artifactId>
   <packaging>jar</packaging>
-  <version>8.0.6-SNAPSHOT</version>
+  <version>8.0.7-SNAPSHOT</version>
   <name>TomEE :: Examples :: Spring Data</name>
   <properties>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
@@ -92,7 +92,7 @@
     <dependency>
       <groupId>org.apache.tomee</groupId>
       <artifactId>openejb-core</artifactId>
-      <version>8.0.6-SNAPSHOT</version>
+      <version>8.0.7-SNAPSHOT</version>
     </dependency>
   </dependencies>
   <!--
diff --git a/examples/struts/pom.xml b/examples/struts/pom.xml
index 4d29a1d..cecba7d 100644
--- a/examples/struts/pom.xml
+++ b/examples/struts/pom.xml
@@ -19,7 +19,7 @@
   <groupId>org.superbiz.struts</groupId>
   <artifactId>struts</artifactId>
   <packaging>war</packaging>
-  <version>8.0.6-SNAPSHOT</version>
+  <version>8.0.7-SNAPSHOT</version>
   <name>TomEE :: Web Examples :: Struts</name>
   <url>http://tomee.apache.org</url>
   <properties>
diff --git a/examples/telephone-stateful/pom.xml b/examples/telephone-stateful/pom.xml
index e31f098..872bdd1 100644
--- a/examples/telephone-stateful/pom.xml
+++ b/examples/telephone-stateful/pom.xml
@@ -22,7 +22,7 @@
   <groupId>org.superbiz</groupId>
   <artifactId>telephone-stateful</artifactId>
   <packaging>jar</packaging>
-  <version>8.0.6-SNAPSHOT</version>
+  <version>8.0.7-SNAPSHOT</version>
   <name>TomEE :: Examples :: Telephone Stateful Pojo</name>
   <properties>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
@@ -96,7 +96,7 @@
     <dependency>
       <groupId>org.apache.tomee</groupId>
       <artifactId>openejb-ejbd</artifactId>
-      <version>8.0.6-SNAPSHOT</version>
+      <version>8.0.7-SNAPSHOT</version>
       <scope>test</scope>
     </dependency>
     <!-- END SNIPPET: openejbdep -->
diff --git a/examples/testcase-injection/pom.xml b/examples/testcase-injection/pom.xml
index e56ebb5..9129ccb 100644
--- a/examples/testcase-injection/pom.xml
+++ b/examples/testcase-injection/pom.xml
@@ -22,7 +22,7 @@
   <groupId>org.superbiz</groupId>
   <artifactId>testcase-injection</artifactId>
   <packaging>jar</packaging>
-  <version>8.0.6-SNAPSHOT</version>
+  <version>8.0.7-SNAPSHOT</version>
   <name>TomEE :: Examples :: TestCase Injection</name>
   <properties>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
@@ -92,7 +92,7 @@
     <dependency>
       <groupId>org.apache.tomee</groupId>
       <artifactId>openejb-core</artifactId>
-      <version>8.0.6-SNAPSHOT</version>
+      <version>8.0.7-SNAPSHOT</version>
       <scope>test</scope>
     </dependency>
   </dependencies>
diff --git a/examples/testing-security-2/pom.xml b/examples/testing-security-2/pom.xml
index f53af81..0cbf226 100644
--- a/examples/testing-security-2/pom.xml
+++ b/examples/testing-security-2/pom.xml
@@ -22,7 +22,7 @@
   <groupId>org.superbiz</groupId>
   <artifactId>testing-security-2</artifactId>
   <packaging>jar</packaging>
-  <version>8.0.6-SNAPSHOT</version>
+  <version>8.0.7-SNAPSHOT</version>
   <name>TomEE :: Examples :: Testing Security</name>
   <properties>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
@@ -92,7 +92,7 @@
     <dependency>
       <groupId>org.apache.tomee</groupId>
       <artifactId>openejb-core</artifactId>
-      <version>8.0.6-SNAPSHOT</version>
+      <version>8.0.7-SNAPSHOT</version>
       <scope>test</scope>
     </dependency>
   </dependencies>
diff --git a/examples/testing-security-3/pom.xml b/examples/testing-security-3/pom.xml
index f57774d..3f8fa30 100644
--- a/examples/testing-security-3/pom.xml
+++ b/examples/testing-security-3/pom.xml
@@ -22,7 +22,7 @@
   <groupId>org.superbiz</groupId>
   <artifactId>testing-security-3</artifactId>
   <packaging>jar</packaging>
-  <version>8.0.6-SNAPSHOT</version>
+  <version>8.0.7-SNAPSHOT</version>
   <name>TomEE :: Examples :: Testing Security Service Provider</name>
   <properties>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
@@ -92,7 +92,7 @@
     <dependency>
       <groupId>org.apache.tomee</groupId>
       <artifactId>openejb-core</artifactId>
-      <version>8.0.6-SNAPSHOT</version>
+      <version>8.0.7-SNAPSHOT</version>
       <scope>provided</scope>
     </dependency>
   </dependencies>
diff --git a/examples/testing-security-4/pom.xml b/examples/testing-security-4/pom.xml
index 3d53f41..0240504 100644
--- a/examples/testing-security-4/pom.xml
+++ b/examples/testing-security-4/pom.xml
@@ -22,7 +22,7 @@
   <groupId>org.superbiz</groupId>
   <artifactId>testing-security-4</artifactId>
   <packaging>jar</packaging>
-  <version>8.0.6-SNAPSHOT</version>
+  <version>8.0.7-SNAPSHOT</version>
   <name>TomEE :: Examples :: Testing Security Script Service Provider</name>
   <properties>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
@@ -92,7 +92,7 @@
     <dependency>
       <groupId>org.apache.tomee</groupId>
       <artifactId>openejb-core</artifactId>
-      <version>8.0.6-SNAPSHOT</version>
+      <version>8.0.7-SNAPSHOT</version>
       <scope>provided</scope>
     </dependency>
   </dependencies>
diff --git a/examples/testing-security-meta/pom.xml b/examples/testing-security-meta/pom.xml
index 72d5fde..1011867 100644
--- a/examples/testing-security-meta/pom.xml
+++ b/examples/testing-security-meta/pom.xml
@@ -22,7 +22,7 @@
   <groupId>org.superbiz</groupId>
   <artifactId>testing-security-meta</artifactId>
   <packaging>jar</packaging>
-  <version>8.0.6-SNAPSHOT</version>
+  <version>8.0.7-SNAPSHOT</version>
   <name>TomEE :: Examples :: Testing Security (Meta)</name>
   <properties>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
@@ -92,7 +92,7 @@
     <dependency>
       <groupId>org.apache.tomee</groupId>
       <artifactId>openejb-core</artifactId>
-      <version>8.0.6-SNAPSHOT</version>
+      <version>8.0.7-SNAPSHOT</version>
       <scope>test</scope>
     </dependency>
   </dependencies>
diff --git a/examples/testing-security/pom.xml b/examples/testing-security/pom.xml
index ab5e6d4..baaac0e 100644
--- a/examples/testing-security/pom.xml
+++ b/examples/testing-security/pom.xml
@@ -22,7 +22,7 @@
   <groupId>org.superbiz</groupId>
   <artifactId>testing-security</artifactId>
   <packaging>jar</packaging>
-  <version>8.0.6-SNAPSHOT</version>
+  <version>8.0.7-SNAPSHOT</version>
   <name>TomEE :: Examples :: Testing Security</name>
   <properties>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
@@ -92,7 +92,7 @@
     <dependency>
       <groupId>org.apache.tomee</groupId>
       <artifactId>openejb-core</artifactId>
-      <version>8.0.6-SNAPSHOT</version>
+      <version>8.0.7-SNAPSHOT</version>
       <scope>test</scope>
     </dependency>
   </dependencies>
diff --git a/examples/testing-transactions-bmt/pom.xml b/examples/testing-transactions-bmt/pom.xml
index f385309..3643544 100644
--- a/examples/testing-transactions-bmt/pom.xml
+++ b/examples/testing-transactions-bmt/pom.xml
@@ -22,7 +22,7 @@
   <groupId>org.superbiz</groupId>
   <artifactId>testing-transactions-bmt</artifactId>
   <packaging>jar</packaging>
-  <version>8.0.6-SNAPSHOT</version>
+  <version>8.0.7-SNAPSHOT</version>
   <name>TomEE :: Examples :: Testing Transactions BMT</name>
   <properties>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
@@ -92,7 +92,7 @@
     <dependency>
       <groupId>org.apache.tomee</groupId>
       <artifactId>openejb-core</artifactId>
-      <version>8.0.6-SNAPSHOT</version>
+      <version>8.0.7-SNAPSHOT</version>
       <scope>test</scope>
     </dependency>
   </dependencies>
diff --git a/examples/testing-transactions/pom.xml b/examples/testing-transactions/pom.xml
index 8643ed7..5cdcb55 100644
--- a/examples/testing-transactions/pom.xml
+++ b/examples/testing-transactions/pom.xml
@@ -22,7 +22,7 @@
   <groupId>org.superbiz</groupId>
   <artifactId>testing-transactions</artifactId>
   <packaging>jar</packaging>
-  <version>8.0.6-SNAPSHOT</version>
+  <version>8.0.7-SNAPSHOT</version>
   <name>TomEE :: Examples :: Testing Transactions</name>
   <properties>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
@@ -92,7 +92,7 @@
     <dependency>
       <groupId>org.apache.tomee</groupId>
       <artifactId>openejb-core</artifactId>
-      <version>8.0.6-SNAPSHOT</version>
+      <version>8.0.7-SNAPSHOT</version>
       <scope>test</scope>
     </dependency>
   </dependencies>
diff --git a/examples/tomee-jersey-eclipselink/pom.xml b/examples/tomee-jersey-eclipselink/pom.xml
index a4e02d1..9ef7086 100644
--- a/examples/tomee-jersey-eclipselink/pom.xml
+++ b/examples/tomee-jersey-eclipselink/pom.xml
@@ -20,13 +20,13 @@
   <modelVersion>4.0.0</modelVersion>
   <groupId>org.superbiz</groupId>
   <artifactId>tomee-jersey-eclipselink</artifactId>
-  <version>8.0.6-SNAPSHOT</version>
+  <version>8.0.7-SNAPSHOT</version>
   <packaging>war</packaging>
   <name>TomEE :: Examples :: TomEE, Jersey, Eclipselink</name>
   <properties>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
-    <version.eclipselink>2.5.2</version.eclipselink>
-    <tomee.version>8.0.6-SNAPSHOT</tomee.version>
+    <version.eclipselink>2.7.7</version.eclipselink>
+    <tomee.version>8.0.7-SNAPSHOT</tomee.version>
     <arquillian_universe.version>1.2.0.1</arquillian_universe.version>
   </properties>
   <dependencies>
@@ -74,7 +74,7 @@
     <dependency>
       <groupId>org.apache.tomee</groupId>
       <artifactId>openejb-core</artifactId>
-      <version>8.0.6-SNAPSHOT</version>
+      <version>8.0.7-SNAPSHOT</version>
     </dependency>
     <dependency>
       <groupId>junit</groupId>
@@ -132,7 +132,7 @@
       <plugin>
         <groupId>org.apache.tomee.maven</groupId>
         <artifactId>tomee-maven-plugin</artifactId>
-        <version>8.0.6-SNAPSHOT</version>
+        <version>8.0.7-SNAPSHOT</version>
         <configuration>
           <systemVariables>
             <com.sun.jersey.server.impl.cdi.lookupExtensionInBeanManager>true</com.sun.jersey.server.impl.cdi.lookupExtensionInBeanManager>
diff --git a/examples/transaction-rollback/pom.xml b/examples/transaction-rollback/pom.xml
index ebcce23..b5337f3 100644
--- a/examples/transaction-rollback/pom.xml
+++ b/examples/transaction-rollback/pom.xml
@@ -22,7 +22,7 @@
   <groupId>org.superbiz</groupId>
   <artifactId>transaction-rollback</artifactId>
   <packaging>jar</packaging>
-  <version>8.0.6-SNAPSHOT</version>
+  <version>8.0.7-SNAPSHOT</version>
   <name>TomEE :: Examples :: Transaction Rollback</name>
   <properties>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
@@ -89,7 +89,7 @@
     <dependency>
       <groupId>org.apache.tomee</groupId>
       <artifactId>openejb-core</artifactId>
-      <version>8.0.6-SNAPSHOT</version>
+      <version>8.0.7-SNAPSHOT</version>
       <scope>test</scope>
     </dependency>
   </dependencies>
diff --git a/examples/troubleshooting/pom.xml b/examples/troubleshooting/pom.xml
index 508d8f3..f7826ae 100644
--- a/examples/troubleshooting/pom.xml
+++ b/examples/troubleshooting/pom.xml
@@ -22,7 +22,7 @@
   <groupId>org.superbiz</groupId>
   <artifactId>troubleshooting</artifactId>
   <packaging>jar</packaging>
-  <version>8.0.6-SNAPSHOT</version>
+  <version>8.0.7-SNAPSHOT</version>
   <name>TomEE :: Examples :: Troubleshooting</name>
   <properties>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
@@ -89,7 +89,7 @@
     <dependency>
       <groupId>org.apache.tomee</groupId>
       <artifactId>openejb-core</artifactId>
-      <version>8.0.6-SNAPSHOT</version>
+      <version>8.0.7-SNAPSHOT</version>
       <scope>test</scope>
     </dependency>
   </dependencies>
diff --git a/examples/vaadin-lts-v08-simple/pom.xml b/examples/vaadin-lts-v08-simple/pom.xml
index aa17803..b8bd4a2 100644
--- a/examples/vaadin-lts-v08-simple/pom.xml
+++ b/examples/vaadin-lts-v08-simple/pom.xml
@@ -23,7 +23,7 @@
 
   <groupId>org.apache.tomee</groupId>
   <artifactId>vaadin-lts-v08-simple</artifactId>
-  <version>8.0.6-SNAPSHOT</version>
+  <version>8.0.7-SNAPSHOT</version>
 
   <name>TomEE :: Examples :: Vaadin LTS V08</name>
   <packaging>war</packaging>
@@ -106,7 +106,7 @@
     <dependency>
       <groupId>org.apache.tomee</groupId>
       <artifactId>openejb-cxf-rs</artifactId>
-      <version>8.0.6-SNAPSHOT</version>
+      <version>8.0.7-SNAPSHOT</version>
       <scope>test</scope>
     </dependency>
   </dependencies>
diff --git a/examples/vaadin-lts-v10-simple/pom.xml b/examples/vaadin-lts-v10-simple/pom.xml
index 85dc998..71e8053 100644
--- a/examples/vaadin-lts-v10-simple/pom.xml
+++ b/examples/vaadin-lts-v10-simple/pom.xml
@@ -20,7 +20,7 @@
   <modelVersion>4.0.0</modelVersion>
   <groupId>org.apache.tomee</groupId>
   <artifactId>vaadin-lts-v10-simple</artifactId>
-  <version>8.0.6-SNAPSHOT</version>
+  <version>8.0.7-SNAPSHOT</version>
   <name>TomEE :: Examples :: Vaadin LTS V10</name>
   <packaging>war</packaging>
   <!--
diff --git a/examples/vaadin-vxx-simple/pom.xml b/examples/vaadin-vxx-simple/pom.xml
index 5bc977a..e781f2f 100644
--- a/examples/vaadin-vxx-simple/pom.xml
+++ b/examples/vaadin-vxx-simple/pom.xml
@@ -23,7 +23,7 @@
 
   <groupId>org.apache.tomee</groupId>
   <artifactId>vaadin-vxx-simple</artifactId>
-  <version>8.0.6-SNAPSHOT</version>
+  <version>8.0.7-SNAPSHOT</version>
 
   <name>TomEE :: Examples :: Vaadin LATEST</name>
   <packaging>war</packaging>
diff --git a/examples/webservice-attachments/pom.xml b/examples/webservice-attachments/pom.xml
index 674c9aa..10fcae8 100644
--- a/examples/webservice-attachments/pom.xml
+++ b/examples/webservice-attachments/pom.xml
@@ -22,7 +22,7 @@
   <groupId>org.superbiz</groupId>
   <artifactId>webservice-attachments</artifactId>
   <packaging>jar</packaging>
-  <version>8.0.6-SNAPSHOT</version>
+  <version>8.0.7-SNAPSHOT</version>
   <name>TomEE :: Examples :: Webservice Attachments</name>
   <properties>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
@@ -107,7 +107,7 @@
     <dependency>
       <groupId>org.apache.tomee</groupId>
       <artifactId>openejb-cxf</artifactId>
-      <version>8.0.6-SNAPSHOT</version>
+      <version>8.0.7-SNAPSHOT</version>
       <scope>test</scope>
     </dependency>
   </dependencies>
diff --git a/examples/webservice-handlerchain/pom.xml b/examples/webservice-handlerchain/pom.xml
index 74ab575..cf00235 100644
--- a/examples/webservice-handlerchain/pom.xml
+++ b/examples/webservice-handlerchain/pom.xml
@@ -22,7 +22,7 @@
   <groupId>org.superbiz</groupId>
   <artifactId>webservice-handlerchain</artifactId>
   <packaging>jar</packaging>
-  <version>8.0.6-SNAPSHOT</version>
+  <version>8.0.7-SNAPSHOT</version>
   <name>TomEE :: Examples :: Web Service Handlers</name>
   <properties>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
@@ -83,7 +83,7 @@
     <dependency>
       <groupId>org.apache.tomee</groupId>
       <artifactId>openejb-cxf</artifactId>
-      <version>8.0.6-SNAPSHOT</version>
+      <version>8.0.7-SNAPSHOT</version>
       <scope>test</scope>
     </dependency>
     <!-- This is required on IBM JDKs (and potentially others) because saaj-impl depends
diff --git a/examples/webservice-holder/pom.xml b/examples/webservice-holder/pom.xml
index bd78417..4382b5a 100644
--- a/examples/webservice-holder/pom.xml
+++ b/examples/webservice-holder/pom.xml
@@ -22,7 +22,7 @@
   <groupId>org.superbiz</groupId>
   <artifactId>webservice-holder</artifactId>
   <packaging>jar</packaging>
-  <version>8.0.6-SNAPSHOT</version>
+  <version>8.0.7-SNAPSHOT</version>
   <name>TomEE :: Examples :: @WebService Holder</name>
   <properties>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
@@ -83,7 +83,7 @@
     <dependency>
       <groupId>org.apache.tomee</groupId>
       <artifactId>openejb-cxf</artifactId>
-      <version>8.0.6-SNAPSHOT</version>
+      <version>8.0.7-SNAPSHOT</version>
       <scope>test</scope>
     </dependency>
     <!-- This is required on IBM JDKs (and potentially others) because saaj-impl depends
diff --git a/examples/webservice-inheritance/pom.xml b/examples/webservice-inheritance/pom.xml
index 9f11702..1fd639b 100644
--- a/examples/webservice-inheritance/pom.xml
+++ b/examples/webservice-inheritance/pom.xml
@@ -22,7 +22,7 @@
   <groupId>org.superbiz</groupId>
   <artifactId>webservice-inheritance</artifactId>
   <packaging>jar</packaging>
-  <version>8.0.6-SNAPSHOT</version>
+  <version>8.0.7-SNAPSHOT</version>
   <name>TomEE :: Examples :: Webservice Inheritance</name>
   <properties>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
@@ -91,7 +91,7 @@
     <dependency>
       <groupId>org.apache.tomee</groupId>
       <artifactId>openejb-cxf</artifactId>
-      <version>8.0.6-SNAPSHOT</version>
+      <version>8.0.7-SNAPSHOT</version>
       <scope>test</scope>
     </dependency>
     <!-- This is required on IBM JDKs (and potentially others) because saaj-impl depends
diff --git a/examples/webservice-security/pom.xml b/examples/webservice-security/pom.xml
index 27887c3..99fa647 100644
--- a/examples/webservice-security/pom.xml
+++ b/examples/webservice-security/pom.xml
@@ -22,7 +22,7 @@
   <groupId>org.superbiz</groupId>
   <artifactId>webservice-security</artifactId>
   <packaging>jar</packaging>
-  <version>8.0.6-SNAPSHOT</version>
+  <version>8.0.7-SNAPSHOT</version>
   <name>TomEE :: Web Examples :: EJB WebService with Security</name>
   <properties>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
@@ -83,7 +83,7 @@
     <dependency>
       <groupId>org.apache.tomee</groupId>
       <artifactId>openejb-cxf</artifactId>
-      <version>8.0.6-SNAPSHOT</version>
+      <version>8.0.7-SNAPSHOT</version>
       <scope>test</scope>
     </dependency>
     <!-- This is required on IBM JDKs (and potentially others) because saaj-impl depends
diff --git a/examples/webservice-ssl-client-cert/pom.xml b/examples/webservice-ssl-client-cert/pom.xml
index 44a3040..1293905 100644
--- a/examples/webservice-ssl-client-cert/pom.xml
+++ b/examples/webservice-ssl-client-cert/pom.xml
@@ -22,7 +22,7 @@
   <groupId>org.superbiz</groupId>
   <artifactId>webservice-ssl-client-cert</artifactId>
   <packaging>jar</packaging>
-  <version>8.0.6-SNAPSHOT</version>
+  <version>8.0.7-SNAPSHOT</version>
   <name>TomEE :: Web Examples :: EJB WebService with SSL Client Certificate</name>
   <properties>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
@@ -104,7 +104,7 @@
     <dependency>
       <groupId>org.apache.tomee</groupId>
       <artifactId>arquillian-tomee-remote</artifactId>
-      <version>8.0.6-SNAPSHOT</version>
+      <version>8.0.7-SNAPSHOT</version>
       <scope>test</scope>
       <exclusions>
         <exclusion>
@@ -120,7 +120,7 @@
     <dependency>
       <groupId>org.apache.tomee</groupId>
       <artifactId>openejb-cxf</artifactId>
-      <version>8.0.6-SNAPSHOT</version>
+      <version>8.0.7-SNAPSHOT</version>
       <scope>test</scope>
     </dependency>
     <!-- This is required on IBM JDKs (and potentially others) because saaj-impl depends
diff --git a/examples/webservice-ws-security/pom.xml b/examples/webservice-ws-security/pom.xml
index 6fbf14e..666898f 100644
--- a/examples/webservice-ws-security/pom.xml
+++ b/examples/webservice-ws-security/pom.xml
@@ -22,7 +22,7 @@
   <groupId>org.superbiz</groupId>
   <artifactId>webservice-ws-security</artifactId>
   <packaging>jar</packaging>
-  <version>8.0.6-SNAPSHOT</version>
+  <version>8.0.7-SNAPSHOT</version>
   <name>TomEE :: Web Examples :: EJB WebService with WS-Security</name>
   <properties>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
@@ -77,7 +77,7 @@
     <dependency>
       <groupId>org.apache.tomee</groupId>
       <artifactId>openejb-cxf</artifactId>
-      <version>8.0.6-SNAPSHOT</version>
+      <version>8.0.7-SNAPSHOT</version>
       <scope>test</scope>
     </dependency>
   </dependencies>
diff --git a/examples/webservice-ws-with-resources-config/pom.xml b/examples/webservice-ws-with-resources-config/pom.xml
index c27dfa5..b7be578 100644
--- a/examples/webservice-ws-with-resources-config/pom.xml
+++ b/examples/webservice-ws-with-resources-config/pom.xml
@@ -21,7 +21,7 @@
   <groupId>org.superbiz</groupId>
   <artifactId>webservice-ws-with-resources-config</artifactId>
   <packaging>jar</packaging>
-  <version>8.0.6-SNAPSHOT</version>
+  <version>8.0.7-SNAPSHOT</version>
   <name>TomEE :: Web Examples :: EJB WebService WS Security with resources.xml</name>
   <properties>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
@@ -37,7 +37,7 @@
     <dependency>
       <groupId>org.apache.tomee</groupId>
       <artifactId>openejb-cxf</artifactId>
-      <version>8.0.6-SNAPSHOT</version>
+      <version>8.0.7-SNAPSHOT</version>
       <scope>provided</scope>
     </dependency>
     <dependency>
diff --git a/examples/websocket-tls-basic-auth/pom.xml b/examples/websocket-tls-basic-auth/pom.xml
index 0cbc8b5..13b561d 100644
--- a/examples/websocket-tls-basic-auth/pom.xml
+++ b/examples/websocket-tls-basic-auth/pom.xml
@@ -20,7 +20,7 @@
   <modelVersion>4.0.0</modelVersion>
   <groupId>org.superbiz</groupId>
   <artifactId>websocket-tls-basic-auth</artifactId>
-  <version>8.0.6-SNAPSHOT</version>
+  <version>8.0.7-SNAPSHOT</version>
   <packaging>war</packaging>
   <name>TomEE :: Examples :: WebSocket with tls and basic auth Example</name>
   <properties>
diff --git a/examples/xa-datasource/pom.xml b/examples/xa-datasource/pom.xml
index ac1fda2..5c6849f 100644
--- a/examples/xa-datasource/pom.xml
+++ b/examples/xa-datasource/pom.xml
@@ -22,12 +22,12 @@
   <groupId>org.superbiz</groupId>
   <artifactId>xa-datasource</artifactId>
   <packaging>war</packaging>
-  <version>8.0.6-SNAPSHOT</version>
+  <version>8.0.7-SNAPSHOT</version>
   <name>TomEE :: Examples :: XA Datasource configuration and usage</name>
   <properties>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
     <derby.version>10.12.1.1</derby.version>
-    <tomee.version>8.0.6-SNAPSHOT</tomee.version>
+    <tomee.version>8.0.7-SNAPSHOT</tomee.version>
   </properties>
   <build>
     <finalName>dbtest</finalName>
@@ -110,7 +110,7 @@
     <dependency>
       <groupId>org.apache.tomee</groupId>
       <artifactId>openejb-core</artifactId>
-      <version>8.0.6-SNAPSHOT</version>
+      <version>8.0.7-SNAPSHOT</version>
       <scope>test</scope>
     </dependency>
     <dependency>
diff --git a/gradle/gradle-tomee-embedded/pom.xml b/gradle/gradle-tomee-embedded/pom.xml
index 52c2360..53d5ef2 100644
--- a/gradle/gradle-tomee-embedded/pom.xml
+++ b/gradle/gradle-tomee-embedded/pom.xml
@@ -19,7 +19,7 @@
   <parent>
     <artifactId>gradle</artifactId>
     <groupId>org.apache.tomee.gradle</groupId>
-    <version>8.0.6-SNAPSHOT</version>
+    <version>8.0.7-SNAPSHOT</version>
   </parent>
   <modelVersion>4.0.0</modelVersion>
 
diff --git a/gradle/pom.xml b/gradle/pom.xml
index 349d257..91f882b 100644
--- a/gradle/pom.xml
+++ b/gradle/pom.xml
@@ -19,7 +19,7 @@
   <parent>
     <artifactId>tomee-project</artifactId>
     <groupId>org.apache.tomee</groupId>
-    <version>8.0.6-SNAPSHOT</version>
+    <version>8.0.7-SNAPSHOT</version>
   </parent>
   <modelVersion>4.0.0</modelVersion>
 
diff --git a/itests/failover-ejb/pom.xml b/itests/failover-ejb/pom.xml
index 74f0730..fb6bc29 100644
--- a/itests/failover-ejb/pom.xml
+++ b/itests/failover-ejb/pom.xml
@@ -23,7 +23,7 @@
   <parent>
     <artifactId>itests</artifactId>
     <groupId>org.apache.tomee</groupId>
-    <version>8.0.6-SNAPSHOT</version>
+    <version>8.0.7-SNAPSHOT</version>
   </parent>
 
   <groupId>org.apache.openejb.itests</groupId>
diff --git a/itests/failover/pom.xml b/itests/failover/pom.xml
index 31ae723..7f4c039 100644
--- a/itests/failover/pom.xml
+++ b/itests/failover/pom.xml
@@ -23,7 +23,7 @@
   <parent>
     <artifactId>itests</artifactId>
     <groupId>org.apache.tomee</groupId>
-    <version>8.0.6-SNAPSHOT</version>
+    <version>8.0.7-SNAPSHOT</version>
   </parent>
 
   <groupId>org.apache.openejb.itests</groupId>
diff --git a/itests/legacy-client/pom.xml b/itests/legacy-client/pom.xml
index b4b1c7d..878eda5 100644
--- a/itests/legacy-client/pom.xml
+++ b/itests/legacy-client/pom.xml
@@ -21,7 +21,7 @@
   <parent>
     <artifactId>itests</artifactId>
     <groupId>org.apache.tomee</groupId>
-    <version>8.0.6-SNAPSHOT</version>
+    <version>8.0.7-SNAPSHOT</version>
   </parent>
 
   <modelVersion>4.0.0</modelVersion>
diff --git a/itests/legacy-server/pom.xml b/itests/legacy-server/pom.xml
index b4c628c..af66518 100644
--- a/itests/legacy-server/pom.xml
+++ b/itests/legacy-server/pom.xml
@@ -23,7 +23,7 @@
   <parent>
     <artifactId>itests</artifactId>
     <groupId>org.apache.tomee</groupId>
-    <version>8.0.6-SNAPSHOT</version>
+    <version>8.0.7-SNAPSHOT</version>
   </parent>
 
   <groupId>org.apache.openejb.itests</groupId>
diff --git a/itests/microprofile-jwt-itests/pom.xml b/itests/microprofile-jwt-itests/pom.xml
index f197049..912d6e9 100644
--- a/itests/microprofile-jwt-itests/pom.xml
+++ b/itests/microprofile-jwt-itests/pom.xml
@@ -23,7 +23,7 @@
   <parent>
     <artifactId>itests</artifactId>
     <groupId>org.apache.tomee</groupId>
-    <version>8.0.6-SNAPSHOT</version>
+    <version>8.0.7-SNAPSHOT</version>
   </parent>
 
   <artifactId>microprofile-jwt-itests</artifactId>
@@ -53,7 +53,7 @@
     <dependency>
       <groupId>org.apache.tomee</groupId>
       <artifactId>apache-tomee</artifactId>
-      <version>8.0.6-SNAPSHOT</version>
+      <version>8.0.7-SNAPSHOT</version>
       <type>tar.gz</type>
       <classifier>microprofile</classifier>
       <exclusions>
diff --git a/itests/openejb-itests-app/pom.xml b/itests/openejb-itests-app/pom.xml
index 02b3d47..a07f1b5 100644
--- a/itests/openejb-itests-app/pom.xml
+++ b/itests/openejb-itests-app/pom.xml
@@ -25,7 +25,7 @@
   <parent>
     <artifactId>itests</artifactId>
     <groupId>org.apache.tomee</groupId>
-    <version>8.0.6-SNAPSHOT</version>
+    <version>8.0.7-SNAPSHOT</version>
   </parent>
 
   <artifactId>openejb-itests-app</artifactId>
diff --git a/itests/openejb-itests-beans/pom.xml b/itests/openejb-itests-beans/pom.xml
index dfede3a..7e6a42b 100644
--- a/itests/openejb-itests-beans/pom.xml
+++ b/itests/openejb-itests-beans/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <artifactId>itests</artifactId>
     <groupId>org.apache.tomee</groupId>
-    <version>8.0.6-SNAPSHOT</version>
+    <version>8.0.7-SNAPSHOT</version>
   </parent>
 
   <artifactId>openejb-itests-beans</artifactId>
diff --git a/itests/openejb-itests-client/pom.xml b/itests/openejb-itests-client/pom.xml
index 8779002..120a747 100644
--- a/itests/openejb-itests-client/pom.xml
+++ b/itests/openejb-itests-client/pom.xml
@@ -25,7 +25,7 @@
   <parent>
     <artifactId>itests</artifactId>
     <groupId>org.apache.tomee</groupId>
-    <version>8.0.6-SNAPSHOT</version>
+    <version>8.0.7-SNAPSHOT</version>
   </parent>
 
   <artifactId>openejb-itests-client</artifactId>
@@ -79,15 +79,6 @@
           </execution>
         </executions>
       </plugin>
-      <plugin>
-        <groupId>org.codehaus.mojo</groupId>
-        <artifactId>rat-maven-plugin</artifactId>
-        <configuration>
-          <excludes>
-            <exclude>src/main/resources/META-INF/org.apache.openejb.cli/test.help</exclude>
-          </excludes>
-        </configuration>
-      </plugin>
     </plugins>
   </build>
   <dependencies>
diff --git a/itests/openejb-itests-interceptor-beans/pom.xml b/itests/openejb-itests-interceptor-beans/pom.xml
index 88ea079..f7452ed 100644
--- a/itests/openejb-itests-interceptor-beans/pom.xml
+++ b/itests/openejb-itests-interceptor-beans/pom.xml
@@ -25,7 +25,7 @@
   <parent>
     <groupId>org.apache.tomee</groupId>
     <artifactId>itests</artifactId>
-    <version>8.0.6-SNAPSHOT</version>
+    <version>8.0.7-SNAPSHOT</version>
   </parent>
 
   <artifactId>openejb-itests-interceptor-beans</artifactId>
diff --git a/itests/openejb-itests-servlets/pom.xml b/itests/openejb-itests-servlets/pom.xml
index 9bbd2a0..0ff7d48 100644
--- a/itests/openejb-itests-servlets/pom.xml
+++ b/itests/openejb-itests-servlets/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <artifactId>itests</artifactId>
     <groupId>org.apache.tomee</groupId>
-    <version>8.0.6-SNAPSHOT</version>
+    <version>8.0.7-SNAPSHOT</version>
   </parent>
 
   <artifactId>openejb-itests-servlets</artifactId>
diff --git a/itests/openejb-itests-web/pom.xml b/itests/openejb-itests-web/pom.xml
index d875651..9ee568d 100644
--- a/itests/openejb-itests-web/pom.xml
+++ b/itests/openejb-itests-web/pom.xml
@@ -25,7 +25,7 @@
   <parent>
     <artifactId>itests</artifactId>
     <groupId>org.apache.tomee</groupId>
-    <version>8.0.6-SNAPSHOT</version>
+    <version>8.0.7-SNAPSHOT</version>
   </parent>
 
   <artifactId>openejb-itests-web</artifactId>
diff --git a/itests/pom.xml b/itests/pom.xml
index bf36d9a..3b0299b 100644
--- a/itests/pom.xml
+++ b/itests/pom.xml
@@ -24,7 +24,7 @@
   <parent>
     <artifactId>tomee-project</artifactId>
     <groupId>org.apache.tomee</groupId>
-    <version>8.0.6-SNAPSHOT</version>
+    <version>8.0.7-SNAPSHOT</version>
   </parent>
 
   <modelVersion>4.0.0</modelVersion>
diff --git a/itests/tomee-server-composer/pom.xml b/itests/tomee-server-composer/pom.xml
index 8dff65e..ad4e84d 100644
--- a/itests/tomee-server-composer/pom.xml
+++ b/itests/tomee-server-composer/pom.xml
@@ -23,7 +23,7 @@
   <parent>
     <artifactId>itests</artifactId>
     <groupId>org.apache.tomee</groupId>
-    <version>8.0.6-SNAPSHOT</version>
+    <version>8.0.7-SNAPSHOT</version>
   </parent>
 
   <artifactId>tomee-server-composer</artifactId>
diff --git a/itests/tomee-server-version/pom.xml b/itests/tomee-server-version/pom.xml
index 40035c8..5505b7f 100644
--- a/itests/tomee-server-version/pom.xml
+++ b/itests/tomee-server-version/pom.xml
@@ -23,7 +23,7 @@
   <parent>
     <artifactId>itests</artifactId>
     <groupId>org.apache.tomee</groupId>
-    <version>8.0.6-SNAPSHOT</version>
+    <version>8.0.7-SNAPSHOT</version>
   </parent>
 
   <artifactId>tomee-server-version</artifactId>
diff --git a/maven/applicationcomposer-maven-plugin/pom.xml b/maven/applicationcomposer-maven-plugin/pom.xml
index c9dec49..d8bcdc2 100644
--- a/maven/applicationcomposer-maven-plugin/pom.xml
+++ b/maven/applicationcomposer-maven-plugin/pom.xml
@@ -20,13 +20,13 @@
   <parent>
     <artifactId>maven</artifactId>
     <groupId>org.apache.tomee.maven</groupId>
-    <version>8.0.6-SNAPSHOT</version>
+    <version>8.0.7-SNAPSHOT</version>
   </parent>
   <modelVersion>4.0.0</modelVersion>
 
   <artifactId>applicationcomposer-maven-plugin</artifactId>
   <packaging>maven-plugin</packaging>
-  <version>8.0.6-SNAPSHOT</version>
+  <version>8.0.7-SNAPSHOT</version>
   <name>TomEE :: Maven Plugins :: ApplicationComposer Maven Plugin</name>
 
   <dependencies>
diff --git a/maven/jarstxt-maven-plugin/pom.xml b/maven/jarstxt-maven-plugin/pom.xml
index 9f78dd9..63bf702 100644
--- a/maven/jarstxt-maven-plugin/pom.xml
+++ b/maven/jarstxt-maven-plugin/pom.xml
@@ -19,12 +19,12 @@
   <parent>
     <artifactId>maven</artifactId>
     <groupId>org.apache.tomee.maven</groupId>
-    <version>8.0.6-SNAPSHOT</version>
+    <version>8.0.7-SNAPSHOT</version>
   </parent>
   <modelVersion>4.0.0</modelVersion>
 
   <artifactId>jarstxt-maven-plugin</artifactId>
-  <version>8.0.6-SNAPSHOT</version>
+  <version>8.0.7-SNAPSHOT</version>
   <packaging>maven-plugin</packaging>
   <name>TomEE :: Maven Plugins :: jars.txt Maven Plugin</name>
 
diff --git a/maven/maven-util/pom.xml b/maven/maven-util/pom.xml
index f959f03..3b9851e 100644
--- a/maven/maven-util/pom.xml
+++ b/maven/maven-util/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <artifactId>maven</artifactId>
     <groupId>org.apache.tomee.maven</groupId>
-    <version>8.0.6-SNAPSHOT</version>
+    <version>8.0.7-SNAPSHOT</version>
   </parent>
   <modelVersion>4.0.0</modelVersion>
 
diff --git a/maven/openejb-embedded-maven-plugin/pom.xml b/maven/openejb-embedded-maven-plugin/pom.xml
index d9f1958..a7692de 100644
--- a/maven/openejb-embedded-maven-plugin/pom.xml
+++ b/maven/openejb-embedded-maven-plugin/pom.xml
@@ -20,13 +20,13 @@
   <parent>
     <artifactId>maven</artifactId>
     <groupId>org.apache.tomee.maven</groupId>
-    <version>8.0.6-SNAPSHOT</version>
+    <version>8.0.7-SNAPSHOT</version>
   </parent>
   <modelVersion>4.0.0</modelVersion>
 
   <artifactId>openejb-embedded-maven-plugin</artifactId>
   <packaging>maven-plugin</packaging>
-  <version>8.0.6-SNAPSHOT</version>
+  <version>8.0.7-SNAPSHOT</version>
   <name>TomEE :: Maven Plugins :: OpenEJB Embedded Maven Plugin</name>
 
   <dependencies>
diff --git a/maven/pom.xml b/maven/pom.xml
index c1df323..7b23f6f 100644
--- a/maven/pom.xml
+++ b/maven/pom.xml
@@ -21,7 +21,7 @@
   <parent>
     <artifactId>tomee-project</artifactId>
     <groupId>org.apache.tomee</groupId>
-    <version>8.0.6-SNAPSHOT</version>
+    <version>8.0.7-SNAPSHOT</version>
   </parent>
 
   <groupId>org.apache.tomee.maven</groupId>
diff --git a/maven/tomee-embedded-maven-plugin/pom.xml b/maven/tomee-embedded-maven-plugin/pom.xml
index 66ff0a8..0d5225f 100644
--- a/maven/tomee-embedded-maven-plugin/pom.xml
+++ b/maven/tomee-embedded-maven-plugin/pom.xml
@@ -22,11 +22,11 @@
   <parent>
     <artifactId>maven</artifactId>
     <groupId>org.apache.tomee.maven</groupId>
-    <version>8.0.6-SNAPSHOT</version>
+    <version>8.0.7-SNAPSHOT</version>
   </parent>
 
   <artifactId>tomee-embedded-maven-plugin</artifactId>
-  <version>8.0.6-SNAPSHOT</version>
+  <version>8.0.7-SNAPSHOT</version>
   <packaging>maven-plugin</packaging>
   <name>TomEE :: Maven Plugins :: TomEE Embedded Maven Plugin</name>
 
diff --git a/maven/tomee-maven-plugin/pom.xml b/maven/tomee-maven-plugin/pom.xml
index 193b427..1c2533a 100644
--- a/maven/tomee-maven-plugin/pom.xml
+++ b/maven/tomee-maven-plugin/pom.xml
@@ -22,11 +22,11 @@
   <parent>
     <artifactId>maven</artifactId>
     <groupId>org.apache.tomee.maven</groupId>
-    <version>8.0.6-SNAPSHOT</version>
+    <version>8.0.7-SNAPSHOT</version>
   </parent>
 
   <artifactId>tomee-maven-plugin</artifactId>
-  <version>8.0.6-SNAPSHOT</version>
+  <version>8.0.7-SNAPSHOT</version>
   <packaging>maven-plugin</packaging>
   <name>TomEE :: Maven Plugins :: TomEE Maven Plugin</name>
 
diff --git a/maven/tomee-webapp-archetype/pom.xml b/maven/tomee-webapp-archetype/pom.xml
index 83c2268..2ec3ca7 100644
--- a/maven/tomee-webapp-archetype/pom.xml
+++ b/maven/tomee-webapp-archetype/pom.xml
@@ -19,7 +19,7 @@
   <parent>
     <artifactId>maven</artifactId>
     <groupId>org.apache.tomee.maven</groupId>
-    <version>8.0.6-SNAPSHOT</version>
+    <version>8.0.7-SNAPSHOT</version>
   </parent>
   <modelVersion>4.0.0</modelVersion>
 
diff --git a/mp-jwt/pom.xml b/mp-jwt/pom.xml
index 85c7a64..cc0958b 100644
--- a/mp-jwt/pom.xml
+++ b/mp-jwt/pom.xml
@@ -19,7 +19,7 @@
   <parent>
     <artifactId>tomee-project</artifactId>
     <groupId>org.apache.tomee</groupId>
-    <version>8.0.6-SNAPSHOT</version>
+    <version>8.0.7-SNAPSHOT</version>
   </parent>
   <modelVersion>4.0.0</modelVersion>
   <artifactId>mp-jwt</artifactId>
@@ -64,7 +64,6 @@
     <dependency>
       <groupId>org.apache.johnzon</groupId>
       <artifactId>johnzon-jsonb</artifactId>
-      <version>${johnzon.version}</version>
       <scope>provided</scope>
     </dependency>
     <dependency>
diff --git a/pom.xml b/pom.xml
index deb1ad4..7a211bd 100644
--- a/pom.xml
+++ b/pom.xml
@@ -33,7 +33,7 @@
   <groupId>org.apache.tomee</groupId>
   <artifactId>tomee-project</artifactId>
   <packaging>pom</packaging>
-  <version>8.0.6-SNAPSHOT</version>
+  <version>8.0.7-SNAPSHOT</version>
 
   <name>Apache OpenEJB</name>
   <description>Apache OpenEJB is an open source, modular, configurable and extensible EJB Container System and EJB Server.</description>
@@ -98,6 +98,7 @@
     <maven.compiler.source>1.8</maven.compiler.source>
     <maven.compiler.target>1.8</maven.compiler.target>
     <surefire.version>2.21.0</surefire.version>
+    <surefire.junit5.version>3.0.0-M5</surefire.junit5.version>
 
     <!-- for the default name of the module. Needs to be overridden -->
     <tomee.build.name>${project.groupId}.${project.artifactId}</tomee.build.name>
@@ -117,7 +118,8 @@
     <openjpa.version>3.1.2</openjpa.version>
     <openwebbeans.version>2.0.12</openwebbeans.version>
     <jcs.version>2.1</jcs.version>
-    <johnzon.version>1.2.9-SNAPSHOT</johnzon.version>
+    <johnzon.version>1.2.10</johnzon.version>
+    <quartz-openejb-shade.version>2.2.4</quartz-openejb-shade.version>
 
     <!-- Maven module versions -->
     <maven-bundle-plugin.version>3.3.0</maven-bundle-plugin.version>
@@ -145,7 +147,7 @@
     <version.shrinkwrap.descriptor>2.0.0</version.shrinkwrap.descriptor>
     <version.shrinkwrap.shrinkwrap>1.2.6</version.shrinkwrap.shrinkwrap>
 
-    <tomcat.version>9.0.40</tomcat.version>
+    <tomcat.version>9.0.41</tomcat.version>
 
     <cxf.version>3.3.8</cxf.version>
     <ehcache.version>2.10.3</ehcache.version>
@@ -186,9 +188,10 @@
     <commons-net.version>3.7.2</commons-net.version>
 
     <bval.version>2.0.5</bval.version>
-    <org.apache.activemq.version>5.16.0</org.apache.activemq.version>
+    <org.apache.activemq.version>5.16.1</org.apache.activemq.version>
     <org.springframework.version>3.1.4.RELEASE</org.springframework.version>
     <junit.version>4.13.1</junit.version>
+    <junit.jupiter.version>5.7.0</junit.jupiter.version>
     <org.apache.axis2.version>1.4.1</org.apache.axis2.version>
     <scannotation.version>1.0.2</scannotation.version>
     <geronimo.connector.version>3.1.4</geronimo.connector.version>
@@ -204,7 +207,7 @@
     <version.axiom>1.2.20</version.axiom>
     <version.xalan>2.7.2</version.xalan>
     <version.hibernate>5.4.10.Final</version.hibernate>
-    <version.eclipselink>2.7.4</version.eclipselink>
+    <version.eclipselink>2.7.7</version.eclipselink>
     <version.groovy>2.4.12</version.groovy>
 
     <!-- arquillian related -->
@@ -233,13 +236,12 @@
     <opentracing.api>0.31.0</opentracing.api>
 
     <!-- Jackson required by OpenAPI Impl -->
-    <jackson.version>2.12.0-rc1</jackson.version>
-    <jackson.dataformat.version>2.12.0-rc1</jackson.dataformat.version>
+    <jackson.version>2.12.1</jackson.version>
+    <jackson.dataformat.version>2.12.1</jackson.dataformat.version>
 
     <!-- Javadoc & Asciidoclet -->
     <javadoc.version>3.0.1</javadoc.version>
     <asciidoclet.version>1.5.0</asciidoclet.version>
-
   </properties>
 
   <build>
@@ -394,7 +396,10 @@
         <plugin>
           <groupId>org.owasp</groupId>
           <artifactId>dependency-check-maven</artifactId>
-          <version>4.0.0</version>
+          <version>6.0.5</version>
+          <configuration>
+            <suppressionFile>owasp-dc-suppression.xml</suppressionFile>
+          </configuration>
         </plugin>
         <plugin>
           <groupId>org.jacoco</groupId>
@@ -580,6 +585,7 @@
         <activeByDefault>true</activeByDefault>
       </activation>
       <modules>
+        <module>deps</module>
         <module>boms</module>
         <module>itests</module>
         <module>maven</module>
@@ -619,6 +625,7 @@
     <profile>
       <id>no-examples</id>
       <modules>
+        <module>deps</module>
         <module>boms</module>
         <module>itests</module>
         <module>maven</module>
@@ -636,6 +643,7 @@
     <profile>
       <id>quick</id>
       <modules>
+        <module>deps</module>
         <module>boms</module>
         <module>maven</module>
         <module>gradle</module>
@@ -661,13 +669,18 @@
     <profile>
       <id>style</id>
       <modules>
-        <module>container/openejb-core</module>
-        <module>container/openejb-loader</module>
-        <module>container/openejb-junit</module>
-        <module>container/openejb-jpa-integration</module>
-        <module>container/openejb-javaagent</module>
-        <module>container/openejb-api</module>
+        <module>deps</module>
+        <module>boms</module>
+        <module>itests</module>
+        <module>maven</module>
+        <module>gradle</module>
+        <module>container</module>
+        <module>server</module>
+        <module>mp-jwt</module>
+        <module>assembly</module>
+        <module>tck</module>
         <module>arquillian</module>
+        <module>utils</module>
         <module>tomee</module>
       </modules>
       <properties>
@@ -742,7 +755,6 @@
             <configuration>
               <skipProvidedScope>true</skipProvidedScope>
               <skipRuntimeScope>true</skipRuntimeScope>
-              <suppressionFiles>${maven.multiModuleProjectDirectory}/owasp-dc-suppression.xml</suppressionFiles>
             </configuration>
             <executions>
               <execution>
@@ -766,7 +778,6 @@
               <skipProvidedScope>true</skipProvidedScope>
               <skipRuntimeScope>true</skipRuntimeScope>
               <failBuildOnCVSS>8.0</failBuildOnCVSS>
-              <suppressionFiles>${maven.multiModuleProjectDirectory}/owasp-dc-suppression.xml</suppressionFiles>
             </configuration>
             <executions>
               <execution>
@@ -781,18 +792,6 @@
     </profile>
     <profile>
       <id>rat</id>
-      <modules>
-        <module>itests</module>
-        <module>maven</module>
-        <module>gradle</module>
-        <module>container</module>
-        <module>server</module>
-        <module>examples</module>
-        <module>arquillian</module>
-        <module>assembly</module>
-        <module>utils</module>
-        <module>tomee</module>
-      </modules>
       <build>
         <plugins>
           <plugin>
@@ -809,8 +808,38 @@
             <configuration>
               <reportFile>${project.build.directory}/${project.build.finalName}.rat</reportFile>
               <excludes>
+                <exclude>doap_tomee.rdf</exclude>
+                <exclude>.git/**</exclude>
+                <exclude>.github/**</exclude>
                 <exclude>**/target/**/*</exclude>
                 <exclude>**/js/livereload.js</exclude>
+                <exclude>**/*.ser</exclude>
+                <exclude>**/*.pem</exclude>
+                <exclude>**/*.adoc</exclude>
+                <exclude>**/*.md</exclude>
+                <exclude>**/*.log</exclude>
+                <exclude>**/*.json</exclude>
+                <exclude>**/*.jwk</exclude>
+                <exclude>**/src/main/resources/META-INF/**/*.xsd</exclude>
+                <exclude>**/src/main/xsdlist/xsdlist.txt</exclude>
+                <exclude>**/META-INF/services/**</exclude>
+                <exclude>**/META-INF/org.apache.openejb**</exclude>
+                <exclude>**/META-INF/org.apache.openejb**/**</exclude>
+
+                <exclude>**/src/**/*login.config</exclude>
+                <exclude>**/src/main/resources/DATA-README.txt</exclude>
+                <exclude>**/src/test/resources/test.getresources</exclude>
+                <exclude>**/src/test/resources/test/log/localhost_access_log.2014-02-07.txt</exclude>
+                <exclude>**/src/main/resources/service.readme.txt</exclude>
+                <exclude>**/src/main/resources/default.exclusions</exclude>
+                <exclude>**/src/main/resources/default.openejb.conf</exclude>
+                <exclude>**/src/test/resources/altddapp2/META-INF/test.env-entries.properties</exclude>
+                <exclude>**/src/test/resources/META-INF/multiple</exclude>
+                <exclude>**/src/test/resources/openejb.json</exclude>
+                <exclude>**/src/test/resources/appresource.resources.json</exclude>
+
+                <exclude>**/tomee-deb/src/main/resources/**/*.template</exclude>
+                <exclude>**/tomee-deb/**/precompiled-changelog</exclude>
 
                 <!-- left around after creating the site -->
                 <exclude>**/cobertura.ser</exclude>
@@ -820,6 +849,7 @@
                 <exclude>**/hsqldb.log</exclude>
 
                 <!-- IDEA files -->
+                <exclude>.idea/**</exclude>
                 <exclude>**/*.iml</exclude>
                 <exclude>**/*.ipr</exclude>
                 <exclude>**/*.iws</exclude>
@@ -828,6 +858,20 @@
                 <exclude>**/.*</exclude>
                 <exclude>**/.*/*</exclude>
                 <exclude>**/eclipse-classes/**/*</exclude>
+
+                <!-- ASCIIDOC files -->
+                <exclude>docs/**</exclude>
+
+                <!-- examples -->
+                <exclude>examples/**/*.jsp</exclude>
+                <exclude>examples/**/*.css</exclude>
+                <exclude>examples/**/*.properties</exclude>
+                <exclude>examples/**/*.feature</exclude>
+                <exclude>examples/**/placeholder</exclude>
+                <exclude>examples/**/Dockerfile</exclude>
+                <exclude>examples/**/bootstrap/**</exclude>
+                <exclude>examples/**/.idea/**</exclude>
+
               </excludes>
             </configuration>
           </plugin>
@@ -1521,7 +1565,7 @@
       <dependency>
         <groupId>org.apache.openejb.shade</groupId>
         <artifactId>quartz-openejb-shade</artifactId>
-        <version>2.2.1</version>
+        <version>${quartz-openejb-shade.version}</version>
         <exclusions>
           <exclusion>
             <groupId>org.quartz-scheduler</groupId>
@@ -1772,6 +1816,33 @@
           </exclusion>
         </exclusions>
       </dependency>
+
+      <dependency>
+        <groupId>org.apache.johnzon</groupId>
+        <artifactId>johnzon-core</artifactId>
+        <version>${johnzon.version}</version>
+      </dependency>
+      <dependency>
+        <groupId>org.apache.johnzon</groupId>
+        <artifactId>johnzon-mapper</artifactId>
+        <version>${johnzon.version}</version>
+      </dependency>
+      <dependency>
+        <groupId>org.apache.johnzon</groupId>
+        <artifactId>johnzon-jaxrs</artifactId>
+        <version>${johnzon.version}</version>
+      </dependency>
+      <dependency>
+        <groupId>org.apache.johnzon</groupId>
+        <artifactId>johnzon-jsonb</artifactId>
+        <version>${johnzon.version}</version>
+      </dependency>
+      <dependency>
+        <groupId>org.apache.johnzon</groupId>
+        <artifactId>johnzon-jsonp-strict</artifactId>
+        <version>${johnzon.version}</version>
+      </dependency>
+
       <dependency>
         <groupId>org.testng</groupId>
         <artifactId>testng</artifactId>
@@ -1886,13 +1957,13 @@
         <version>1.16</version>
       </dependency>
       <dependency>
-        <groupId>org.apache.taglibs</groupId>
-        <artifactId>taglibs-standard-jstlel</artifactId>
-        <version>1.2.5</version>
+        <groupId>org.apache.tomee</groupId>
+        <artifactId>taglibs-shade</artifactId>
+	<version>${project.version}</version>
         <exclusions>
           <exclusion>
-            <groupId>xalan</groupId>
-            <artifactId>xalan</artifactId>
+            <groupId>*</groupId>
+            <artifactId>*</artifactId>
           </exclusion>
         </exclusions>
       </dependency>
diff --git a/server/openejb-activemq/pom.xml b/server/openejb-activemq/pom.xml
index 889b28e..4d89675 100644
--- a/server/openejb-activemq/pom.xml
+++ b/server/openejb-activemq/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <artifactId>server</artifactId>
     <groupId>org.apache.tomee</groupId>
-    <version>8.0.6-SNAPSHOT</version>
+    <version>8.0.7-SNAPSHOT</version>
   </parent>
   <modelVersion>4.0.0</modelVersion>
   <artifactId>openejb-activemq</artifactId>
diff --git a/server/openejb-axis/pom.xml b/server/openejb-axis/pom.xml
index 829526a..925214b 100644
--- a/server/openejb-axis/pom.xml
+++ b/server/openejb-axis/pom.xml
@@ -23,7 +23,7 @@
   <parent>
     <artifactId>server</artifactId>
     <groupId>org.apache.tomee</groupId>
-    <version>8.0.6-SNAPSHOT</version>
+    <version>8.0.7-SNAPSHOT</version>
   </parent>
   <modelVersion>4.0.0</modelVersion>
   <artifactId>openejb-axis</artifactId>
@@ -46,19 +46,6 @@
     </openejb.osgi.export>
   </properties>
 
-  <build>
-    <plugins>
-      <plugin>
-        <groupId>org.codehaus.mojo</groupId>
-        <artifactId>rat-maven-plugin</artifactId>
-        <configuration>
-          <excludes>
-            <exclude>src/main/resources/META-INF/schema/soap_encoding_1_1.xsd</exclude>
-          </excludes>
-        </configuration>
-      </plugin>
-    </plugins>
-  </build>
   <dependencies>
     <dependency>
       <groupId>${project.groupId}</groupId>
diff --git a/server/openejb-bonecp/pom.xml b/server/openejb-bonecp/pom.xml
index ef5ce12..080e46f 100644
--- a/server/openejb-bonecp/pom.xml
+++ b/server/openejb-bonecp/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <artifactId>server</artifactId>
     <groupId>org.apache.tomee</groupId>
-    <version>8.0.6-SNAPSHOT</version>
+    <version>8.0.7-SNAPSHOT</version>
   </parent>
   <modelVersion>4.0.0</modelVersion>
 
diff --git a/server/openejb-client/pom.xml b/server/openejb-client/pom.xml
index 30c8467..661d68c 100644
--- a/server/openejb-client/pom.xml
+++ b/server/openejb-client/pom.xml
@@ -26,7 +26,7 @@
   <parent>
     <artifactId>server</artifactId>
     <groupId>org.apache.tomee</groupId>
-    <version>8.0.6-SNAPSHOT</version>
+    <version>8.0.7-SNAPSHOT</version>
   </parent>
 
   <artifactId>openejb-client</artifactId>
@@ -97,15 +97,6 @@
           <useFile>false</useFile>
         </configuration>
       </plugin>
-      <plugin>
-        <groupId>org.codehaus.mojo</groupId>
-        <artifactId>rat-maven-plugin</artifactId>
-        <configuration>
-          <excludes>
-            <exclude>src/main/resources/META-INF/org.apache.openejb.client.IdentityResolver/*</exclude>
-          </excludes>
-        </configuration>
-      </plugin>
 
       <plugin>
         <groupId>org.apache.maven.plugins</groupId>
diff --git a/server/openejb-common-cli/pom.xml b/server/openejb-common-cli/pom.xml
index 6c369d6..6b1e07e 100644
--- a/server/openejb-common-cli/pom.xml
+++ b/server/openejb-common-cli/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <artifactId>server</artifactId>
     <groupId>org.apache.tomee</groupId>
-    <version>8.0.6-SNAPSHOT</version>
+    <version>8.0.7-SNAPSHOT</version>
   </parent>
   <modelVersion>4.0.0</modelVersion>
 
diff --git a/server/openejb-cxf-rs/pom.xml b/server/openejb-cxf-rs/pom.xml
index c61fe91..14d7729 100644
--- a/server/openejb-cxf-rs/pom.xml
+++ b/server/openejb-cxf-rs/pom.xml
@@ -19,7 +19,7 @@
   <parent>
     <artifactId>server</artifactId>
     <groupId>org.apache.tomee</groupId>
-    <version>8.0.6-SNAPSHOT</version>
+    <version>8.0.7-SNAPSHOT</version>
   </parent>
   <modelVersion>4.0.0</modelVersion>
 
@@ -179,12 +179,10 @@
     <dependency> <!-- JohnzonProvider, WadlDocumentMessageBodyWriter and JsrProvider -->
       <groupId>org.apache.johnzon</groupId>
       <artifactId>johnzon-jaxrs</artifactId>
-      <version>${johnzon.version}</version>
     </dependency>
     <dependency>
       <groupId>org.apache.johnzon</groupId>
       <artifactId>johnzon-jsonb</artifactId>
-      <version>${johnzon.version}</version>
     </dependency>
     <dependency>
       <groupId>org.codehaus.jettison</groupId>
diff --git a/server/openejb-cxf-rs/src/main/java/org/apache/openejb/server/cxf/rs/Contexts.java b/server/openejb-cxf-rs/src/main/java/org/apache/openejb/server/cxf/rs/Contexts.java
index cfd7257..03c0b58 100644
--- a/server/openejb-cxf-rs/src/main/java/org/apache/openejb/server/cxf/rs/Contexts.java
+++ b/server/openejb-cxf-rs/src/main/java/org/apache/openejb/server/cxf/rs/Contexts.java
@@ -47,6 +47,8 @@
 import javax.ws.rs.core.UriInfo;
 import javax.ws.rs.ext.ContextResolver;
 import javax.ws.rs.ext.Providers;
+import javax.ws.rs.sse.Sse;
+import javax.ws.rs.sse.SseEventSink;
 import java.lang.annotation.Annotation;
 import java.lang.reflect.Field;
 import java.util.Collection;
@@ -102,6 +104,9 @@
         classes.add(ServletConfig.class);
         classes.add(ServletContext.class);
         classes.add(MessageContext.class);
+        classes.add(Sse.class);
+        classes.add(SseEventSink.class);
+
         return classes;
     }
 
diff --git a/server/openejb-cxf-rs/src/main/java/org/apache/openejb/server/cxf/rs/CxfRsHttpListener.java b/server/openejb-cxf-rs/src/main/java/org/apache/openejb/server/cxf/rs/CxfRsHttpListener.java
index 514ea51..1a79dd2 100644
--- a/server/openejb-cxf-rs/src/main/java/org/apache/openejb/server/cxf/rs/CxfRsHttpListener.java
+++ b/server/openejb-cxf-rs/src/main/java/org/apache/openejb/server/cxf/rs/CxfRsHttpListener.java
@@ -38,6 +38,7 @@
 import org.apache.cxf.jaxrs.model.ProviderInfo;
 import org.apache.cxf.jaxrs.provider.ProviderFactory;
 import org.apache.cxf.jaxrs.provider.ServerProviderFactory;
+import org.apache.cxf.jaxrs.sse.SseContextProvider;
 import org.apache.cxf.jaxrs.utils.JAXRSUtils;
 import org.apache.cxf.jaxrs.utils.HttpUtils;
 import org.apache.cxf.jaxrs.validation.JAXRSBeanValidationInInterceptor;
@@ -74,6 +75,7 @@
 import org.apache.openejb.server.cxf.rs.event.ExtensionProviderRegistration;
 import org.apache.openejb.server.cxf.rs.event.ServerCreated;
 import org.apache.openejb.server.cxf.rs.event.ServerDestroyed;
+import org.apache.openejb.server.cxf.rs.sse.TomEESseEventSinkContextProvider;
 import org.apache.openejb.server.cxf.transport.HttpDestination;
 import org.apache.openejb.server.cxf.transport.util.CxfUtil;
 import org.apache.openejb.server.httpd.HttpRequest;
@@ -92,8 +94,11 @@
 import org.apache.webbeans.container.BeanManagerImpl;
 import org.apache.webbeans.context.creational.CreationalContextImpl;
 
+import javax.enterprise.context.Dependent;
 import javax.enterprise.context.spi.CreationalContext;
+import javax.enterprise.inject.InjectionException;
 import javax.enterprise.inject.spi.Bean;
+import javax.inject.Singleton;
 import javax.management.ObjectName;
 import javax.management.openmbean.TabularData;
 import javax.naming.Context;
@@ -109,6 +114,7 @@
 import javax.validation.metadata.MethodDescriptor;
 import javax.ws.rs.ConstrainedTo;
 import javax.ws.rs.RuntimeType;
+import javax.ws.rs.WebApplicationException;
 import javax.ws.rs.client.ClientRequestFilter;
 import javax.ws.rs.core.Application;
 import javax.ws.rs.core.Configuration;
@@ -462,9 +468,11 @@
                 factory.setServiceClass(clazz);
             }
 
-            server = factory.create();
-            destination = (HttpDestination) server.getDestination();
+            factory.setTransportId("http://cxf.apache.org/transports/http/sse");
 
+            server = factory.create();
+
+            destination = (HttpDestination) server.getDestination();
             fireServerCreated(oldLoader);
         } finally {
             if (oldLoader != null) {
@@ -664,6 +672,33 @@
                         final Object proxy = ProxyEJB.subclassProxy(restServiceInfo.context);
                         factory.setResourceProvider(clazz, new NoopResourceProvider(restServiceInfo.context.getBeanClass(), proxy));
                     } else {
+                        // check if its a singleton.
+
+                        if (owbCtx != null) {
+                            final BeanManagerImpl bm = owbCtx.getBeanManagerImpl();
+                            Bean<?> bean = null;
+
+                            if (bm != null && bm.isInUse()) {
+                                try {
+                                    final Set<Bean<?>> beans = bm.getBeans(clazz);
+                                    bean = bm.resolve(beans);
+                                } catch (final InjectionException ie) {
+                                    final String msg = "Resource class " + clazz.getName() + " can not be instantiated";
+                                    LOGGER.warning(msg, ie);
+                                    throw new WebApplicationException(Response.serverError().entity(msg).build());
+                                }
+
+                                if (bean != null && isConsideredSingleton(bean.getScope())) {
+                                    final Object reference = bm.getReference(bean, bean.getBeanClass(), bm.createCreationalContext(bean));
+                                    factory.setResourceProvider(clazz, new CdiSingletonResourceProvider(
+                                            classLoader, clazz, reference, injections, context, owbCtx));
+
+                                    continue;
+                                }
+                            }
+                        }
+
+
                         factory.setResourceProvider(clazz, new OpenEJBPerRequestPojoResourceProvider(
                                 classLoader, clazz, injections, context, owbCtx));
                     }
@@ -708,6 +743,9 @@
             }
 
             try {
+                factory.setProvider(new SseContextProvider());
+                factory.setProvider(new TomEESseEventSinkContextProvider());
+
                 server = factory.create();
                 fixProviderIfKnown();
                 fireServerCreated(oldLoader);
@@ -758,6 +796,10 @@
         }
     }
 
+    private boolean isConsideredSingleton(final Class<?> scope) {
+        return Singleton.class == scope || Dependent.class == scope;
+    }
+
     private void fixProviderIfKnown() {
         final ServerProviderFactory spf = ServerProviderFactory.class.cast(server.getEndpoint().get(ServerProviderFactory.class.getName()));
         for (final String field : asList("messageWriters", "messageReaders")) {
@@ -1193,7 +1235,7 @@
         private static final ClassLoader SYSTEM_LOADER = ClassLoader.getSystemClassLoader();
 
         public DefaultProviderComparator() {
-            super(null);
+            super(CxfUtil.getBus());
         }
 
         @Override
diff --git a/server/openejb-cxf-rs/src/main/java/org/apache/openejb/server/cxf/rs/johnzon/TomEEJsonbProvider.java b/server/openejb-cxf-rs/src/main/java/org/apache/openejb/server/cxf/rs/johnzon/TomEEJsonbProvider.java
index f7d37c9..841cea9 100644
--- a/server/openejb-cxf-rs/src/main/java/org/apache/openejb/server/cxf/rs/johnzon/TomEEJsonbProvider.java
+++ b/server/openejb-cxf-rs/src/main/java/org/apache/openejb/server/cxf/rs/johnzon/TomEEJsonbProvider.java
@@ -19,10 +19,19 @@
 import org.apache.johnzon.jaxrs.jsonb.jaxrs.JsonbJaxrsProvider;
 import org.apache.johnzon.mapper.access.AccessMode;
 
+import javax.activation.DataSource;
 import javax.json.bind.JsonbConfig;
 import javax.ws.rs.Consumes;
 import javax.ws.rs.Produces;
+import javax.ws.rs.WebApplicationException;
+import javax.ws.rs.core.MediaType;
+import javax.ws.rs.core.MultivaluedMap;
 import javax.ws.rs.ext.Provider;
+import java.io.File;
+import java.io.OutputStream;
+import java.io.Reader;
+import java.lang.annotation.Annotation;
+import java.lang.reflect.Type;
 import java.util.Locale;
 
 @Provider
@@ -35,6 +44,44 @@
         setThrowNoContentExceptionOnEmptyStreams(true); // this is to make TCK tests happy
     }
 
+    @Override
+    public boolean isWriteable(Class<?> type, Type genericType, Annotation[] annotations, MediaType mediaType) {
+        // let the CXF built-in writer handle this one
+        // TODO: add a setting?
+        if (DataSource.class.isAssignableFrom(type)) {
+            return false;
+        }
+
+        if (byte[].class.isAssignableFrom(type)) {
+            return false;
+        }
+
+        if (File.class.isAssignableFrom(type)) {
+            return false;
+        }
+
+        if (Reader.class.isAssignableFrom(type)) {
+            return false;
+        }
+
+        return super.isWriteable(type, genericType, annotations, mediaType);
+    }
+
+    @Override
+    public boolean isReadable(Class<?> type, Type genericType, Annotation[] annotations, MediaType mediaType) {
+        // let the CXF built-in writer handle this one
+        // TODO: add a setting?
+        if (DataSource.class.isAssignableFrom(type)) {
+            return false;
+        }
+
+        if (byte[].class.isAssignableFrom(type)) {
+            return false;
+        }
+
+        return super.isReadable(type, genericType, annotations, mediaType);
+    }
+
     public void setDateFormat(String dateFormat) {
         config.setProperty(JsonbConfig.DATE_FORMAT, dateFormat);
     }
diff --git a/server/openejb-cxf-rs/src/main/java/org/apache/openejb/server/cxf/rs/johnzon/TomEEJsonpProvider.java b/server/openejb-cxf-rs/src/main/java/org/apache/openejb/server/cxf/rs/johnzon/TomEEJsonpProvider.java
index 472fba8..d75b65a 100644
--- a/server/openejb-cxf-rs/src/main/java/org/apache/openejb/server/cxf/rs/johnzon/TomEEJsonpProvider.java
+++ b/server/openejb-cxf-rs/src/main/java/org/apache/openejb/server/cxf/rs/johnzon/TomEEJsonpProvider.java
@@ -18,6 +18,7 @@
 
 import org.apache.johnzon.jaxrs.JsrProvider;
 
+import javax.activation.DataSource;
 import javax.ws.rs.Consumes;
 import javax.ws.rs.Produces;
 import javax.ws.rs.core.MediaType;
@@ -40,6 +41,7 @@
                 && !OutputStream.class.isAssignableFrom(rawType)
                 && !StreamingOutput.class.isAssignableFrom(rawType)
                 && !Writer.class.isAssignableFrom(rawType)
-                && !Response.class.isAssignableFrom(rawType);
+                && !Response.class.isAssignableFrom(rawType)
+                && !DataSource.class.isAssignableFrom(rawType);
     }
 }
diff --git a/server/openejb-cxf-rs/src/main/java/org/apache/openejb/server/cxf/rs/sse/TomEESseEventSinkContextProvider.java b/server/openejb-cxf-rs/src/main/java/org/apache/openejb/server/cxf/rs/sse/TomEESseEventSinkContextProvider.java
new file mode 100644
index 0000000..912a830
--- /dev/null
+++ b/server/openejb-cxf-rs/src/main/java/org/apache/openejb/server/cxf/rs/sse/TomEESseEventSinkContextProvider.java
@@ -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.
+ */
+package org.apache.openejb.server.cxf.rs.sse;
+
+import org.apache.cxf.jaxrs.ext.ContextProvider;
+import org.apache.cxf.jaxrs.sse.SseEventSinkContextProvider;
+import org.apache.cxf.jaxrs.sse.SseEventSinkImpl;
+
+import javax.servlet.AsyncContext;
+import javax.servlet.http.HttpServletRequest;
+import javax.ws.rs.container.AsyncResponse;
+import javax.ws.rs.ext.MessageBodyWriter;
+import javax.ws.rs.sse.OutboundSseEvent;
+import javax.ws.rs.sse.SseEventSink;
+import java.util.concurrent.CompletionStage;
+
+public class TomEESseEventSinkContextProvider extends SseEventSinkContextProvider implements ContextProvider<SseEventSink> {
+    @Override
+    protected SseEventSink createSseEventSink(final HttpServletRequest request,
+                                              final MessageBodyWriter<OutboundSseEvent> writer,
+                                              final AsyncResponse async, final Integer bufferSize) {
+        if (bufferSize != null) {
+            return new TomEESseEventSink(writer, async, request.getAsyncContext(), bufferSize);
+        } else {
+            return new TomEESseEventSink(writer, async, request.getAsyncContext());
+        }
+    }
+
+    public static class TomEESseEventSink extends SseEventSinkImpl implements SseEventSink {
+        public TomEESseEventSink(final MessageBodyWriter<OutboundSseEvent> writer, final AsyncResponse async, final AsyncContext ctx) {
+            super(writer, async, ctx);
+        }
+
+        public TomEESseEventSink(final MessageBodyWriter<OutboundSseEvent> writer, final AsyncResponse async, final AsyncContext ctx, final int bufferSize) {
+            super(writer, async, ctx, bufferSize);
+        }
+
+        @Override
+        public CompletionStage<?> send(OutboundSseEvent event) {
+            if (isClosed()) {
+                throw new IllegalStateException("The event sink is closed");
+            }
+
+            return super.send(event);
+        }
+    }
+}
diff --git a/server/openejb-cxf-rs/src/test/java/org/apache/openejb/server/cxf/rs/CDISSEApplicationTest.java b/server/openejb-cxf-rs/src/test/java/org/apache/openejb/server/cxf/rs/CDISSEApplicationTest.java
new file mode 100644
index 0000000..362af83
--- /dev/null
+++ b/server/openejb-cxf-rs/src/test/java/org/apache/openejb/server/cxf/rs/CDISSEApplicationTest.java
@@ -0,0 +1,212 @@
+/*
+ *     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.
+ */
+package org.apache.openejb.server.cxf.rs;
+
+import org.apache.openejb.jee.WebApp;
+import org.apache.openejb.junit.ApplicationComposer;
+import org.apache.openejb.testing.Classes;
+import org.apache.openejb.testing.Configuration;
+import org.apache.openejb.testing.EnableServices;
+import org.apache.openejb.testing.Module;
+import org.apache.openejb.testng.PropertiesBuilder;
+import org.apache.openejb.util.NetworkUtil;
+import org.junit.BeforeClass;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+import javax.enterprise.context.ApplicationScoped;
+import javax.enterprise.event.Event;
+import javax.enterprise.event.Observes;
+import javax.inject.Inject;
+import javax.inject.Singleton;
+import javax.servlet.http.HttpServletRequest;
+import javax.ws.rs.GET;
+import javax.ws.rs.Path;
+import javax.ws.rs.Produces;
+import javax.ws.rs.client.Client;
+import javax.ws.rs.client.ClientBuilder;
+import javax.ws.rs.client.WebTarget;
+import javax.ws.rs.core.Application;
+import javax.ws.rs.core.Context;
+import javax.ws.rs.core.MediaType;
+import javax.ws.rs.sse.*;
+import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+import java.util.Properties;
+import java.util.concurrent.CountDownLatch;
+import java.util.concurrent.TimeUnit;
+import java.util.concurrent.atomic.AtomicBoolean;
+import java.util.concurrent.atomic.AtomicLong;
+
+import static org.junit.Assert.assertEquals;
+
+@EnableServices("jax-rs")
+@RunWith(ApplicationComposer.class)
+public class CDISSEApplicationTest {
+
+    private static int port = -1;
+
+    @BeforeClass
+    public static void beforeClass() {
+        port = NetworkUtil.getNextAvailablePort();
+    }
+
+    @Configuration
+    public Properties props() {
+        return new PropertiesBuilder().p("httpejbd.port", Integer.toString(port)).build();
+    }
+
+    @Module
+    @Classes(cdi = true, value = {MyCdiRESTApplication.class, Resource.class})
+    public WebApp war() {
+        return new WebApp()
+            .contextRoot("foo")
+            .addServlet("REST Application", Application.class.getName())
+            .addInitParam("REST Application", "javax.ws.rs.Application", MyCdiRESTApplication.class.getName());
+    }
+
+    @Inject
+    private Event<Message> messageEvent;
+
+    @Test
+    public void testSse() throws Exception {
+        final List<Message> messages = new ArrayList<>();
+
+        final Runnable r = () -> {
+            final Client client = ClientBuilder.newClient();
+            final WebTarget target = client.target("http://localhost:" + port + "/foo/sse");
+
+            final SseEventSource source = SseEventSource
+                    .target(target)
+                    .reconnectingEvery(500, TimeUnit.MILLISECONDS)
+                    .build();
+
+            source.register((inboundSseEvent) -> {
+                final Message message = inboundSseEvent.readData(Message.class);
+                messages.add(message);
+            });
+
+            source.open();
+        };
+
+        new Thread(r).start();
+
+        Control.getInstance().waitUntilListening();
+        messageEvent.fire(new Message(new Date().getTime(), "Hello"));
+    }
+
+    public static class MyCdiRESTApplication extends Application {
+
+    }
+
+    @Path("sse")
+    @Singleton
+    public static class Resource {
+
+        private SseBroadcaster broadcaster;
+        private OutboundSseEvent.Builder builder;
+        private AtomicLong eventId = new AtomicLong();
+        private HttpServletRequest request;
+
+        public Resource() {
+            System.out.println("Resource created");
+        }
+
+        @Context
+        public void setHttpRequest(final HttpServletRequest request) {
+            this.request = request;
+        }
+
+        @Context
+        public void setSse(final Sse sse) {
+            this.broadcaster = sse.newBroadcaster();
+            this.builder = sse.newEventBuilder();
+        }
+
+        public void send(@Observes final Message message) {
+            broadcaster.broadcast(createEvent(builder, eventId.incrementAndGet(), message));
+        }
+
+        @GET
+        @Produces(MediaType.SERVER_SENT_EVENTS)
+        public void stats(final @Context SseEventSink sink) {
+            broadcaster.register(sink);
+            Control.getInstance().listening();
+        }
+
+        private static OutboundSseEvent createEvent(final OutboundSseEvent.Builder builder, final long eventId, final Message message) {
+            return builder
+                    .id("" + eventId)
+                    .data(Message.class, message)
+                    .mediaType(MediaType.APPLICATION_JSON_TYPE)
+                    .build();
+        }
+    }
+
+    public static class Message implements Serializable {
+        private static final long serialVersionUID = -6705829915457870975L;
+
+        private long timestamp;
+        private String text;
+
+        public Message() {
+        }
+
+        public Message(final long timestamp, final String text) {
+            this.timestamp = timestamp;
+            this.text = text;
+        }
+
+        public long getTimestamp() {
+            return timestamp;
+        }
+
+        public void setTimestamp(final long timestamp) {
+            this.timestamp = timestamp;
+        }
+
+        public String getText() {
+            return text;
+        }
+
+        public void setText(final String text) {
+            this.text = text;
+        }
+    }
+
+    public static class Control {
+        private static final Control INSTANCE = new Control();
+        private final CountDownLatch listen = new CountDownLatch(1);
+
+        private Control() {
+        }
+
+        public static Control getInstance() {
+            return INSTANCE;
+        }
+
+        public void listening() {
+            listen.countDown();
+        }
+
+        public void waitUntilListening() throws InterruptedException {
+            listen.await(1, TimeUnit.MINUTES);
+        }
+    }
+}
diff --git a/server/openejb-cxf-transport/pom.xml b/server/openejb-cxf-transport/pom.xml
index 77078c0..3c1acec 100644
--- a/server/openejb-cxf-transport/pom.xml
+++ b/server/openejb-cxf-transport/pom.xml
@@ -19,7 +19,7 @@
   <parent>
     <artifactId>server</artifactId>
     <groupId>org.apache.tomee</groupId>
-    <version>8.0.6-SNAPSHOT</version>
+    <version>8.0.7-SNAPSHOT</version>
   </parent>
   <modelVersion>4.0.0</modelVersion>
 
diff --git a/server/openejb-cxf/pom.xml b/server/openejb-cxf/pom.xml
index b5c8030..efb664d 100644
--- a/server/openejb-cxf/pom.xml
+++ b/server/openejb-cxf/pom.xml
@@ -23,7 +23,7 @@
   <parent>
     <artifactId>server</artifactId>
     <groupId>org.apache.tomee</groupId>
-    <version>8.0.6-SNAPSHOT</version>
+    <version>8.0.7-SNAPSHOT</version>
   </parent>
 
   <modelVersion>4.0.0</modelVersion>
@@ -95,7 +95,7 @@
     <dependency>
       <groupId>org.bouncycastle</groupId>
       <artifactId>bcprov-jdk15on</artifactId>
-      <version>1.64</version>
+      <version>1.67</version>
     </dependency>
     <dependency>
       <groupId>org.apache.wss4j</groupId>
diff --git a/server/openejb-daemon/pom.xml b/server/openejb-daemon/pom.xml
index c07e5e9..f65add4 100644
--- a/server/openejb-daemon/pom.xml
+++ b/server/openejb-daemon/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <artifactId>server</artifactId>
     <groupId>org.apache.tomee</groupId>
-    <version>8.0.6-SNAPSHOT</version>
+    <version>8.0.7-SNAPSHOT</version>
   </parent>
   <modelVersion>4.0.0</modelVersion>
   <artifactId>openejb-daemon</artifactId>
diff --git a/server/openejb-derbynet/pom.xml b/server/openejb-derbynet/pom.xml
index c2ea95c..4b30ac8 100644
--- a/server/openejb-derbynet/pom.xml
+++ b/server/openejb-derbynet/pom.xml
@@ -24,7 +24,7 @@
   <parent>
     <artifactId>server</artifactId>
     <groupId>org.apache.tomee</groupId>
-    <version>8.0.6-SNAPSHOT</version>
+    <version>8.0.7-SNAPSHOT</version>
   </parent>
   <modelVersion>4.0.0</modelVersion>
   <artifactId>openejb-derbynet</artifactId>
diff --git a/server/openejb-ejbd/pom.xml b/server/openejb-ejbd/pom.xml
index ee5f3f7..ab39e96 100644
--- a/server/openejb-ejbd/pom.xml
+++ b/server/openejb-ejbd/pom.xml
@@ -26,7 +26,7 @@
   <parent>
     <artifactId>server</artifactId>
     <groupId>org.apache.tomee</groupId>
-    <version>8.0.6-SNAPSHOT</version>
+    <version>8.0.7-SNAPSHOT</version>
   </parent>
 
   <artifactId>openejb-ejbd</artifactId>
diff --git a/server/openejb-hessian/pom.xml b/server/openejb-hessian/pom.xml
index 8e09dab..a922409 100644
--- a/server/openejb-hessian/pom.xml
+++ b/server/openejb-hessian/pom.xml
@@ -23,7 +23,7 @@
   <parent>
     <artifactId>server</artifactId>
     <groupId>org.apache.tomee</groupId>
-    <version>8.0.6-SNAPSHOT</version>
+    <version>8.0.7-SNAPSHOT</version>
   </parent>
 
   <artifactId>openejb-hessian</artifactId>
@@ -36,7 +36,7 @@
     <dependency>
       <groupId>${project.groupId}</groupId>
       <artifactId>openejb-http</artifactId>
-      <version>8.0.6-SNAPSHOT</version>
+      <version>8.0.7-SNAPSHOT</version>
       <scope>provided</scope>
     </dependency>
     <dependency>
diff --git a/server/openejb-hsql/pom.xml b/server/openejb-hsql/pom.xml
index 68e41a5..531ee8e 100644
--- a/server/openejb-hsql/pom.xml
+++ b/server/openejb-hsql/pom.xml
@@ -24,7 +24,7 @@
   <parent>
     <artifactId>server</artifactId>
     <groupId>org.apache.tomee</groupId>
-    <version>8.0.6-SNAPSHOT</version>
+    <version>8.0.7-SNAPSHOT</version>
   </parent>
   <modelVersion>4.0.0</modelVersion>
   <artifactId>openejb-hsql</artifactId>
diff --git a/server/openejb-http/pom.xml b/server/openejb-http/pom.xml
index 0d83b5e..bfe7da2 100644
--- a/server/openejb-http/pom.xml
+++ b/server/openejb-http/pom.xml
@@ -26,7 +26,7 @@
   <parent>
     <artifactId>server</artifactId>
     <groupId>org.apache.tomee</groupId>
-    <version>8.0.6-SNAPSHOT</version>
+    <version>8.0.7-SNAPSHOT</version>
   </parent>
 
   <artifactId>openejb-http</artifactId>
diff --git a/server/openejb-http/src/main/java/org/apache/openejb/server/httpd/EEFilter.java b/server/openejb-http/src/main/java/org/apache/openejb/server/httpd/EEFilter.java
index 18050c7..38ed02f 100644
--- a/server/openejb-http/src/main/java/org/apache/openejb/server/httpd/EEFilter.java
+++ b/server/openejb-http/src/main/java/org/apache/openejb/server/httpd/EEFilter.java
@@ -38,8 +38,9 @@
 import javax.servlet.http.HttpServletRequestWrapper;
 import java.io.IOException;
 import java.util.Properties;
+import java.util.concurrent.atomic.AtomicReference;
 
-// its pupose is to start/stop request scope in async tasks
+// its purpose is to start/stop request scope in async tasks
 // and ensure logout is propagated to security service
 public class EEFilter implements Filter {
     private SecurityService securityService;
@@ -93,11 +94,26 @@
                 filter.onLogout(HttpServletRequest.class.cast(getRequest()));
             }
         }
+
+        @Override
+        public int hashCode() {
+            // unwrap and delegate
+            return getRequest().hashCode();
+        }
+
+        @Override
+        public boolean equals(final Object obj) {
+            // unwrap and delegate
+            return getRequest().equals(obj);
+        }
     }
 
     public static class CdiRequest extends NoCdiRequest {
         private final WebBeansContext webBeansContext;
 
+        // it's a request so not multi-threaded
+        private final AtomicReference<AsynContextWrapper> asyncContextWrapperReference = new AtomicReference<>();
+
         public CdiRequest(final HttpServletRequest cast, final WebBeansContext webBeansContext, final EEFilter filter) {
             super(cast, filter);
             this.webBeansContext = webBeansContext;
@@ -105,12 +121,22 @@
 
         @Override
         public AsyncContext startAsync() throws IllegalStateException {
-            return new AsynContextWrapper(super.startAsync(), this, webBeansContext);
+            asyncContextWrapperReference.compareAndSet(null,
+                                                       new AsynContextWrapper(super.startAsync(), this, webBeansContext));
+            return asyncContextWrapperReference.get();
         }
 
         @Override
         public AsyncContext startAsync(final ServletRequest servletRequest, final ServletResponse servletResponse) throws IllegalStateException {
-            return new AsynContextWrapper(super.startAsync(servletRequest, servletResponse), servletRequest, webBeansContext);
+            asyncContextWrapperReference.compareAndSet(null,
+                                                       new AsynContextWrapper(super.startAsync(servletRequest, servletResponse), servletRequest, webBeansContext));
+            return asyncContextWrapperReference.get();
+        }
+
+        @Override
+        public AsyncContext getAsyncContext() {
+            // tomcat won't return our wrapper
+            return asyncContextWrapperReference.get();
         }
     }
 
@@ -163,7 +189,16 @@
 
         @Override
         public boolean hasOriginalRequestAndResponse() {
-            return delegate.hasOriginalRequestAndResponse();
+            final boolean tomcatHasOriginalRequestAndResponse = delegate.hasOriginalRequestAndResponse();
+            if (!tomcatHasOriginalRequestAndResponse) {
+                // unfortunately in the startAsync() Tomcat computes the hasOriginalRequestAndResponse flag
+                // Unfortunately we pass in the wrapped request so the flag is false
+                // we need to override the value returned by Tomcat in case we are wrapping the request
+                if (request instanceof NoCdiRequest) { // and CdiRequest
+                    return request == delegate.getRequest(); // Tomcat should have this as the request and not the RequestFacade
+                }
+            }
+            return tomcatHasOriginalRequestAndResponse;
         }
 
         @Override
diff --git a/server/openejb-multicast/pom.xml b/server/openejb-multicast/pom.xml
index 6d6b726..3ca5340 100644
--- a/server/openejb-multicast/pom.xml
+++ b/server/openejb-multicast/pom.xml
@@ -21,7 +21,7 @@
   <parent>
     <artifactId>server</artifactId>
     <groupId>org.apache.tomee</groupId>
-    <version>8.0.6-SNAPSHOT</version>
+    <version>8.0.7-SNAPSHOT</version>
     <relativePath>../pom.xml</relativePath>
   </parent>
 
diff --git a/server/openejb-rest/pom.xml b/server/openejb-rest/pom.xml
index 44835d7..2b24b30 100644
--- a/server/openejb-rest/pom.xml
+++ b/server/openejb-rest/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <artifactId>server</artifactId>
     <groupId>org.apache.tomee</groupId>
-    <version>8.0.6-SNAPSHOT</version>
+    <version>8.0.7-SNAPSHOT</version>
   </parent>
   <modelVersion>4.0.0</modelVersion>
 
diff --git a/server/openejb-server/pom.xml b/server/openejb-server/pom.xml
index 5d66ad8..e4f260a 100644
--- a/server/openejb-server/pom.xml
+++ b/server/openejb-server/pom.xml
@@ -24,7 +24,7 @@
   <parent>
     <artifactId>server</artifactId>
     <groupId>org.apache.tomee</groupId>
-    <version>8.0.6-SNAPSHOT</version>
+    <version>8.0.7-SNAPSHOT</version>
   </parent>
   <modelVersion>4.0.0</modelVersion>
   <artifactId>openejb-server</artifactId>
@@ -38,15 +38,6 @@
     </resources>
     <plugins>
       <plugin>
-        <groupId>org.codehaus.mojo</groupId>
-        <artifactId>rat-maven-plugin</artifactId>
-        <configuration>
-          <excludes>
-            <exclude>src/main/resources/META-INF/org.apache.openejb.cli/*</exclude>
-          </excludes>
-        </configuration>
-      </plugin>
-      <plugin>
         <groupId>org.apache.felix</groupId>
         <artifactId>maven-bundle-plugin</artifactId>
         <configuration>
diff --git a/server/openejb-ssh/pom.xml b/server/openejb-ssh/pom.xml
index 6440a33..79fd77a 100644
--- a/server/openejb-ssh/pom.xml
+++ b/server/openejb-ssh/pom.xml
@@ -21,7 +21,7 @@
   <parent>
     <artifactId>server</artifactId>
     <groupId>org.apache.tomee</groupId>
-    <version>8.0.6-SNAPSHOT</version>
+    <version>8.0.7-SNAPSHOT</version>
   </parent>
   <modelVersion>4.0.0</modelVersion>
 
diff --git a/server/openejb-webservices/pom.xml b/server/openejb-webservices/pom.xml
index fc57cbc..a5f15bd 100644
--- a/server/openejb-webservices/pom.xml
+++ b/server/openejb-webservices/pom.xml
@@ -23,7 +23,7 @@
   <parent>
     <artifactId>server</artifactId>
     <groupId>org.apache.tomee</groupId>
-    <version>8.0.6-SNAPSHOT</version>
+    <version>8.0.7-SNAPSHOT</version>
   </parent>
   <modelVersion>4.0.0</modelVersion>
   <artifactId>openejb-webservices</artifactId>
diff --git a/server/pom.xml b/server/pom.xml
index 3a157d7..d13d84a 100644
--- a/server/pom.xml
+++ b/server/pom.xml
@@ -23,7 +23,7 @@
   <parent>
     <artifactId>tomee-project</artifactId>
     <groupId>org.apache.tomee</groupId>
-    <version>8.0.6-SNAPSHOT</version>
+    <version>8.0.7-SNAPSHOT</version>
   </parent>
 
   <artifactId>server</artifactId>
diff --git a/tck/bval-embedded/pom.xml b/tck/bval-embedded/pom.xml
index 0a9c439..69ff718 100644
--- a/tck/bval-embedded/pom.xml
+++ b/tck/bval-embedded/pom.xml
@@ -19,7 +19,7 @@
   <parent>
     <artifactId>tck</artifactId>
     <groupId>org.apache.tomee</groupId>
-    <version>8.0.6-SNAPSHOT</version>
+    <version>8.0.7-SNAPSHOT</version>
   </parent>
   <modelVersion>4.0.0</modelVersion>
 
diff --git a/tck/bval-signature-test/pom.xml b/tck/bval-signature-test/pom.xml
index 9009991..6a84743 100644
--- a/tck/bval-signature-test/pom.xml
+++ b/tck/bval-signature-test/pom.xml
@@ -19,7 +19,7 @@
   <parent>
     <artifactId>tck</artifactId>
     <groupId>org.apache.tomee</groupId>
-    <version>8.0.6-SNAPSHOT</version>
+    <version>8.0.7-SNAPSHOT</version>
   </parent>
   <modelVersion>4.0.0</modelVersion>
 
@@ -76,7 +76,7 @@
         <artifactId>maven-surefire-plugin</artifactId>
         <configuration>
           <useFile>false</useFile>
-          <disableXmlReport>true</disableXmlReport>
+          <disableXmlReport>false</disableXmlReport>
           <skip>true</skip>
         </configuration>
       </plugin>
diff --git a/tck/bval-tomee/pom.xml b/tck/bval-tomee/pom.xml
index 7a56c66..707636d 100644
--- a/tck/bval-tomee/pom.xml
+++ b/tck/bval-tomee/pom.xml
@@ -19,7 +19,7 @@
   <parent>
     <artifactId>tck</artifactId>
     <groupId>org.apache.tomee</groupId>
-    <version>8.0.6-SNAPSHOT</version>
+    <version>8.0.7-SNAPSHOT</version>
   </parent>
   <modelVersion>4.0.0</modelVersion>
 
@@ -113,7 +113,7 @@
         <artifactId>maven-surefire-plugin</artifactId>
         <configuration>
           <useFile>false</useFile>
-          <disableXmlReport>true</disableXmlReport>
+          <disableXmlReport>false</disableXmlReport>
           <skip>true</skip>
         </configuration>
       </plugin>
diff --git a/tck/cdi-embedded/pom.xml b/tck/cdi-embedded/pom.xml
index 2c09e41..f53ec62 100644
--- a/tck/cdi-embedded/pom.xml
+++ b/tck/cdi-embedded/pom.xml
@@ -19,13 +19,13 @@
   <parent>
     <artifactId>tck</artifactId>
     <groupId>org.apache.tomee</groupId>
-    <version>8.0.6-SNAPSHOT</version>
+    <version>8.0.7-SNAPSHOT</version>
   </parent>
   <modelVersion>4.0.0</modelVersion>
   <artifactId>cdi-embedded</artifactId>
   <packaging>jar</packaging>
   <name>TomEE :: TCK :: CDI Embedded</name>
-  <version>8.0.6-SNAPSHOT</version>
+  <version>8.0.7-SNAPSHOT</version>
 
   <properties>
     <testngSuiteXml>src/test/resources/passing.xml</testngSuiteXml>
@@ -68,17 +68,18 @@
       <scope>test</scope>
     </dependency>
     <dependency>
-      <groupId>org.apache.taglibs</groupId>
-      <artifactId>taglibs-standard-jstlel</artifactId>
+      <groupId>org.apache.tomee</groupId>
+      <artifactId>taglibs-shade</artifactId>
+      <version>${project.version}</version>
       <scope>test</scope>
+      <exclusions>
+        <exclusion>
+          <groupId>*</groupId>
+          <artifactId>*</artifactId>
+        </exclusion>
+      </exclusions>
     </dependency>
     <dependency>
-      <groupId>xalan</groupId>
-      <artifactId>xalan</artifactId>
-      <scope>test</scope>
-    </dependency>
-
-    <dependency>
       <groupId>junit</groupId>
       <artifactId>junit</artifactId>
       <scope>test</scope>
@@ -203,7 +204,7 @@
           <forkCount>1</forkCount>
           <argLine>${surefire.argline}</argLine>
           <useFile>false</useFile>
-          <disableXmlReport>true</disableXmlReport>
+          <disableXmlReport>false</disableXmlReport>
           <suiteXmlFiles>
             <suiteXmlFile>${testngSuiteXml}</suiteXmlFile>
           </suiteXmlFiles>
diff --git a/tck/cdi-signature-test/pom.xml b/tck/cdi-signature-test/pom.xml
index 746cf6f..0eafa2b 100644
--- a/tck/cdi-signature-test/pom.xml
+++ b/tck/cdi-signature-test/pom.xml
@@ -19,7 +19,7 @@
   <parent>
     <artifactId>tck</artifactId>
     <groupId>org.apache.tomee</groupId>
-    <version>8.0.6-SNAPSHOT</version>
+    <version>8.0.7-SNAPSHOT</version>
   </parent>
 
   <modelVersion>4.0.0</modelVersion>
diff --git a/tck/cdi-tomee/pom.xml b/tck/cdi-tomee/pom.xml
index 804d3d4..3f9c1c4 100644
--- a/tck/cdi-tomee/pom.xml
+++ b/tck/cdi-tomee/pom.xml
@@ -19,7 +19,7 @@
   <parent>
     <artifactId>tck</artifactId>
     <groupId>org.apache.tomee</groupId>
-    <version>8.0.6-SNAPSHOT</version>
+    <version>8.0.7-SNAPSHOT</version>
   </parent>
 
   <modelVersion>4.0.0</modelVersion>
@@ -225,7 +225,7 @@
           <reuseForks>true</reuseForks>
           <forkCount>1</forkCount>
           <useFile>false</useFile>
-          <disableXmlReport>true</disableXmlReport>
+          <disableXmlReport>false</disableXmlReport>
           <suiteXmlFiles>
             <suiteXmlFile>src/test/resources/${suite.name}.xml</suiteXmlFile>
           </suiteXmlFiles>
diff --git a/tck/microprofile-tck/config/pom.xml b/tck/microprofile-tck/config/pom.xml
index c18232e..1a95f0a 100644
--- a/tck/microprofile-tck/config/pom.xml
+++ b/tck/microprofile-tck/config/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.tomee</groupId>
     <artifactId>microprofile-tck</artifactId>
-    <version>8.0.6-SNAPSHOT</version>
+    <version>8.0.7-SNAPSHOT</version>
   </parent>
 
   <artifactId>microprofile-config-tck</artifactId>
diff --git a/tck/microprofile-tck/fault-tolerance/pom.xml b/tck/microprofile-tck/fault-tolerance/pom.xml
index b9eb85f..e46b92a 100644
--- a/tck/microprofile-tck/fault-tolerance/pom.xml
+++ b/tck/microprofile-tck/fault-tolerance/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.tomee</groupId>
     <artifactId>microprofile-tck</artifactId>
-    <version>8.0.6-SNAPSHOT</version>
+    <version>8.0.7-SNAPSHOT</version>
   </parent>
 
   <artifactId>microprofile-fault-tolerance-tck</artifactId>
diff --git a/tck/microprofile-tck/health/pom.xml b/tck/microprofile-tck/health/pom.xml
index 4df3417..824a51b 100644
--- a/tck/microprofile-tck/health/pom.xml
+++ b/tck/microprofile-tck/health/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.tomee</groupId>
     <artifactId>microprofile-tck</artifactId>
-    <version>8.0.6-SNAPSHOT</version>
+    <version>8.0.7-SNAPSHOT</version>
   </parent>
 
   <artifactId>microprofile-health-tck</artifactId>
diff --git a/tck/microprofile-tck/jwt/pom.xml b/tck/microprofile-tck/jwt/pom.xml
index 7ef6607..0436277 100644
--- a/tck/microprofile-tck/jwt/pom.xml
+++ b/tck/microprofile-tck/jwt/pom.xml
@@ -19,7 +19,7 @@
   <parent>
     <groupId>org.apache.tomee</groupId>
     <artifactId>microprofile-tck</artifactId>
-    <version>8.0.6-SNAPSHOT</version>
+    <version>8.0.7-SNAPSHOT</version>
   </parent>
   <modelVersion>4.0.0</modelVersion>
   <artifactId>microprofile-jwt-tck</artifactId>
@@ -78,7 +78,6 @@
     <dependency>
       <groupId>org.apache.johnzon</groupId>
       <artifactId>johnzon-core</artifactId>
-      <version>${johnzon.version}</version>
       <scope>test</scope>
     </dependency>
 
diff --git a/tck/microprofile-tck/metrics/pom.xml b/tck/microprofile-tck/metrics/pom.xml
index 2ac001b..de8e615 100644
--- a/tck/microprofile-tck/metrics/pom.xml
+++ b/tck/microprofile-tck/metrics/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.tomee</groupId>
     <artifactId>microprofile-tck</artifactId>
-    <version>8.0.6-SNAPSHOT</version>
+    <version>8.0.7-SNAPSHOT</version>
   </parent>
 
   <artifactId>microprofile-metrics-tck</artifactId>
diff --git a/tck/microprofile-tck/openapi/pom.xml b/tck/microprofile-tck/openapi/pom.xml
index 53dfa1c..39c5687 100644
--- a/tck/microprofile-tck/openapi/pom.xml
+++ b/tck/microprofile-tck/openapi/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.tomee</groupId>
     <artifactId>microprofile-tck</artifactId>
-    <version>8.0.6-SNAPSHOT</version>
+    <version>8.0.7-SNAPSHOT</version>
   </parent>
 
   <artifactId>microprofile-openapi-tck</artifactId>
diff --git a/tck/microprofile-tck/opentracing/pom.xml b/tck/microprofile-tck/opentracing/pom.xml
index 40d1668..95fbc3c 100644
--- a/tck/microprofile-tck/opentracing/pom.xml
+++ b/tck/microprofile-tck/opentracing/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.tomee</groupId>
     <artifactId>microprofile-tck</artifactId>
-    <version>8.0.6-SNAPSHOT</version>
+    <version>8.0.7-SNAPSHOT</version>
   </parent>
 
   <artifactId>microprofile-opentracing-tck</artifactId>
diff --git a/tck/microprofile-tck/pom.xml b/tck/microprofile-tck/pom.xml
index 466c97e..53e8e5b 100644
--- a/tck/microprofile-tck/pom.xml
+++ b/tck/microprofile-tck/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.tomee</groupId>
     <artifactId>tck</artifactId>
-    <version>8.0.6-SNAPSHOT</version>
+    <version>8.0.7-SNAPSHOT</version>
   </parent>
 
   <artifactId>microprofile-tck</artifactId>
diff --git a/tck/microprofile-tck/rest-client/pom.xml b/tck/microprofile-tck/rest-client/pom.xml
index d3e6c8c..c3c96a1 100644
--- a/tck/microprofile-tck/rest-client/pom.xml
+++ b/tck/microprofile-tck/rest-client/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <groupId>org.apache.tomee</groupId>
     <artifactId>microprofile-tck</artifactId>
-    <version>8.0.6-SNAPSHOT</version>
+    <version>8.0.7-SNAPSHOT</version>
   </parent>
 
   <artifactId>microprofile-rest-client-tck</artifactId>
@@ -238,7 +238,6 @@
     <dependency>
       <groupId>org.apache.johnzon</groupId>
       <artifactId>johnzon-core</artifactId>
-      <version>${johnzon.version}</version>
       <scope>test</scope>
     </dependency>
 
diff --git a/tck/pom.xml b/tck/pom.xml
index de17232..b313d72 100644
--- a/tck/pom.xml
+++ b/tck/pom.xml
@@ -19,7 +19,7 @@
   <parent>
     <artifactId>tomee-project</artifactId>
     <groupId>org.apache.tomee</groupId>
-    <version>8.0.6-SNAPSHOT</version>
+    <version>8.0.7-SNAPSHOT</version>
   </parent>
   <modelVersion>4.0.0</modelVersion>
   <artifactId>tck</artifactId>
diff --git a/tck/tck-common/pom.xml b/tck/tck-common/pom.xml
index 95b4d24..374f3ef 100644
--- a/tck/tck-common/pom.xml
+++ b/tck/tck-common/pom.xml
@@ -19,7 +19,7 @@
   <parent>
     <artifactId>tck</artifactId>
     <groupId>org.apache.tomee</groupId>
-    <version>8.0.6-SNAPSHOT</version>
+    <version>8.0.7-SNAPSHOT</version>
   </parent>
   <modelVersion>4.0.0</modelVersion>
   <artifactId>tck-common</artifactId>
@@ -79,7 +79,7 @@
         <artifactId>maven-surefire-plugin</artifactId>
         <configuration>
           <useFile>false</useFile>
-          <disableXmlReport>true</disableXmlReport>
+          <disableXmlReport>false</disableXmlReport>
         </configuration>
       </plugin>
     </plugins>
diff --git a/tomee/apache-tomee/pom.xml b/tomee/apache-tomee/pom.xml
index e82010e..ba3b706 100644
--- a/tomee/apache-tomee/pom.xml
+++ b/tomee/apache-tomee/pom.xml
@@ -23,7 +23,7 @@
   <parent>
     <artifactId>tomee</artifactId>
     <groupId>org.apache.tomee</groupId>
-    <version>8.0.6-SNAPSHOT</version>
+    <version>8.0.7-SNAPSHOT</version>
   </parent>
 
   <modelVersion>4.0.0</modelVersion>
diff --git a/tomee/pom.xml b/tomee/pom.xml
index 4efc52a..c100496 100644
--- a/tomee/pom.xml
+++ b/tomee/pom.xml
@@ -25,7 +25,7 @@
   <parent>
     <artifactId>tomee-project</artifactId>
     <groupId>org.apache.tomee</groupId>
-    <version>8.0.6-SNAPSHOT</version>
+    <version>8.0.7-SNAPSHOT</version>
   </parent>
   
   <artifactId>tomee</artifactId>
diff --git a/tomee/tomee-bootstrap/pom.xml b/tomee/tomee-bootstrap/pom.xml
index 650725d..4d57f22 100644
--- a/tomee/tomee-bootstrap/pom.xml
+++ b/tomee/tomee-bootstrap/pom.xml
@@ -23,7 +23,7 @@
   <parent>
     <artifactId>tomee</artifactId>
     <groupId>org.apache.tomee</groupId>
-    <version>8.0.6-SNAPSHOT</version>
+    <version>8.0.7-SNAPSHOT</version>
   </parent>
 
   <modelVersion>4.0.0</modelVersion>
@@ -36,6 +36,35 @@
     <tomee.build.name>${project.groupId}.tomee.catalina</tomee.build.name>
   </properties>
 
+  <build>
+    <testResources>
+      <testResource>
+        <directory>src/test/resources</directory>
+        <filtering>true</filtering>
+      </testResource>
+    </testResources>
+    <plugins>
+      <plugin>
+        <groupId>org.codehaus.mojo</groupId>
+        <artifactId>exec-maven-plugin</artifactId>
+        <version>3.0.0</version>
+        <executions>
+          <execution>
+            <!--<phase>package</phase>-->
+            <goals>
+              <goal>java</goal>
+            </goals>
+          </execution>
+        </executions>
+        <configuration>
+          <includeProjectDependencies>true</includeProjectDependencies>
+          <includePluginDependencies>false</includePluginDependencies>
+          <classpathScope>test</classpathScope>
+          <mainClass>org.apache.tomee.bootstrap.GenerateBoms</mainClass>
+        </configuration>
+      </plugin>
+    </plugins>
+  </build>
   <dependencies>
     <dependency>
       <groupId>org.apache.tomcat</groupId>
diff --git a/tomee/tomee-bootstrap/src/test/java/org/apache/tomee/bootstrap/GenerateBoms.java b/tomee/tomee-bootstrap/src/test/java/org/apache/tomee/bootstrap/GenerateBoms.java
index 735350f..215aab7 100644
--- a/tomee/tomee-bootstrap/src/test/java/org/apache/tomee/bootstrap/GenerateBoms.java
+++ b/tomee/tomee-bootstrap/src/test/java/org/apache/tomee/bootstrap/GenerateBoms.java
@@ -521,21 +521,18 @@
          * and all such data would be in the parent pom.
          */
         public String asBomDep() {
-            final String g = groupId;
-            final String a = artifactId;
-            final String v = version;
             return "" +
-                    "    <dependency>\n" +
-                    "      <groupId>" + g + "</groupId>\n" +
-                    "      <artifactId>" + a + "</artifactId>\n" +
-                    "      <version>" + v + "</version>\n" +
-                    "      <exclusions>\n" +
-                    "        <exclusion>\n" +
-                    "          <artifactId>*</artifactId>\n" +
-                    "          <groupId>*</groupId>\n" +
-                    "        </exclusion>\n" +
-                    "      </exclusions>\n" +
-                    "    </dependency>\n";
+                   "    <dependency>\n" +
+                   "      <groupId>" + groupId + "</groupId>\n" +
+                   "      <artifactId>" + artifactId + "</artifactId>\n" +
+                   "      <version>" + version + "</version>\n" +
+                   "      <exclusions>\n" +
+                   "        <exclusion>\n" +
+                   "          <artifactId>*</artifactId>\n" +
+                   "          <groupId>*</groupId>\n" +
+                   "        </exclusion>\n" +
+                   "      </exclusions>\n" +
+                   "    </dependency>\n";
         }
 
         /**
@@ -544,15 +541,12 @@
          * the dependencies needed, but not duplicate the version information.
          */
         public String asManagedDep() {
-            final String g = groupId;
-            final String a = artifactId;
-            final String v = version;
             return "" +
-                    "    <dependency>\n" +
-                    "      <groupId>" + g + "</groupId>\n" +
-                    "      <artifactId>" + a + "</artifactId>\n" +
-                    "      <version>" + v + "</version>\n" +
-                    "    </dependency>\n";
+                   "    <dependency>\n" +
+                   "      <groupId>" + groupId + "</groupId>\n" +
+                   "      <artifactId>" + artifactId + "</artifactId>\n" +
+                   "      <version>" + version + "</version>\n" +
+                   "    </dependency>\n";
         }
     }
 
diff --git a/tomee/tomee-bootstrap/src/test/resources/pom-template.xml b/tomee/tomee-bootstrap/src/test/resources/pom-template.xml
index d357b9f..0560f01 100644
--- a/tomee/tomee-bootstrap/src/test/resources/pom-template.xml
+++ b/tomee/tomee-bootstrap/src/test/resources/pom-template.xml
@@ -31,7 +31,7 @@
   <parent>
     <groupId>org.apache.tomee.bom</groupId>
     <artifactId>boms</artifactId>
-    <version>8.0.5-SNAPSHOT</version>
+    <version>${project.version}</version>
   </parent>
 
   <modelVersion>4.0.0</modelVersion>
diff --git a/tomee/tomee-catalina/pom.xml b/tomee/tomee-catalina/pom.xml
index 23678f3..8b2552a 100644
--- a/tomee/tomee-catalina/pom.xml
+++ b/tomee/tomee-catalina/pom.xml
@@ -23,7 +23,7 @@
   <parent>
     <artifactId>tomee</artifactId>
     <groupId>org.apache.tomee</groupId>
-    <version>8.0.6-SNAPSHOT</version>
+    <version>8.0.7-SNAPSHOT</version>
   </parent>
 
   <modelVersion>4.0.0</modelVersion>
@@ -46,19 +46,6 @@
     </plugins>
   </reporting>
 
-  <build>
-    <plugins>
-      <plugin>
-        <groupId>org.codehaus.mojo</groupId>
-        <artifactId>rat-maven-plugin</artifactId>
-        <configuration>
-          <excludes>
-            <exclude>src/main/resources/META-INF/org.apache.openejb.tomcat/ServerClassLoader</exclude>
-          </excludes>
-        </configuration>
-      </plugin>
-    </plugins>
-  </build>
   <dependencies>
     <dependency>
       <groupId>${project.groupId}</groupId>
diff --git a/tomee/tomee-common/pom.xml b/tomee/tomee-common/pom.xml
index a7ac109..3d00d45 100644
--- a/tomee/tomee-common/pom.xml
+++ b/tomee/tomee-common/pom.xml
@@ -23,7 +23,7 @@
   <parent>
     <artifactId>tomee</artifactId>
     <groupId>org.apache.tomee</groupId>
-    <version>8.0.6-SNAPSHOT</version>
+    <version>8.0.7-SNAPSHOT</version>
   </parent>
   <modelVersion>4.0.0</modelVersion>
   <artifactId>tomee-common</artifactId>
diff --git a/tomee/tomee-common/src/main/java/org/apache/tomee/installer/Installer.java b/tomee/tomee-common/src/main/java/org/apache/tomee/installer/Installer.java
index 2cc8008..df409c5 100644
--- a/tomee/tomee-common/src/main/java/org/apache/tomee/installer/Installer.java
+++ b/tomee/tomee-common/src/main/java/org/apache/tomee/installer/Installer.java
@@ -234,6 +234,22 @@
         if (!tomeeXml.exists()) {
             Installers.writeAll(tomeeXml,
                     "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" +
+                            "<!--\n" +
+                            "    Licensed to the Apache Software Foundation (ASF) under one or more\n" +
+                            "    contributor license agreements.  See the NOTICE file distributed with\n" +
+                            "    this work for additional information regarding copyright ownership.\n" +
+                            "    The ASF licenses this file to You under the Apache License, Version 2.0\n" +
+                            "    (the \"License\"); you may not use this file except in compliance with\n" +
+                            "    the License.  You may obtain a copy of the License at\n" +
+                            "\n" +
+                            "       http://www.apache.org/licenses/LICENSE-2.0\n" +
+                            "\n" +
+                            "    Unless required by applicable law or agreed to in writing, software\n" +
+                            "    distributed under the License is distributed on an \"AS IS\" BASIS,\n" +
+                            "    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n" +
+                            "    See the License for the specific language governing permissions and\n" +
+                            "    limitations under the License.\n" +
+                            "-->\n" +
                             "<tomee>\n" +
                             "  <!-- see http://tomee.apache.org/containers-and-resources.html -->\n\n" +
                             "  <!-- activate next line to be able to deploy applications in apps -->\n" +
@@ -705,6 +721,23 @@
             try {
                 systemPropertiesWriter = new FileWriter(openejbSystemProperties);
 
+                systemPropertiesWriter.write("# Licensed to the Apache Software Foundation (ASF) under one or more\n" +
+                                             "# contributor license agreements.  See the NOTICE file distributed with\n" +
+                                             "# this work for additional information regarding copyright ownership.\n" +
+                                             "# The ASF licenses this file to You under the Apache License, Version 2.0\n" +
+                                             "# (the \"License\"); you may not use this file except in compliance with\n" +
+                                             "# the License.  You may obtain a copy of the License at\n" +
+                                             "#\n" +
+                                             "#     http://www.apache.org/licenses/LICENSE-2.0\n" +
+                                             "#\n" +
+                                             "# Unless required by applicable law or agreed to in writing, software\n" +
+                                             "# distributed under the License is distributed on an \"AS IS\" BASIS,\n" +
+                                             "# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n" +
+                                             "# See the License for the specific language governing permissions and\n" +
+                                             "# limitations under the License.\n" +
+                                             "\n");
+
+
                 systemPropertiesWriter.write("# all this properties are added at JVM system properties at startup\n");
                 systemPropertiesWriter.write("# here some default Apache TomEE system properties\n");
                 systemPropertiesWriter.write("# for more information please see http://tomee.apache.org/properties-listing.html\n");
diff --git a/tomee/tomee-config/pom.xml b/tomee/tomee-config/pom.xml
index 781c994..80bca5b 100644
--- a/tomee/tomee-config/pom.xml
+++ b/tomee/tomee-config/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <artifactId>tomee</artifactId>
     <groupId>org.apache.tomee</groupId>
-    <version>8.0.6-SNAPSHOT</version>
+    <version>8.0.7-SNAPSHOT</version>
   </parent>
   <modelVersion>4.0.0</modelVersion>
 
diff --git a/tomee/tomee-embedded/pom.xml b/tomee/tomee-embedded/pom.xml
index af0d75c..1650151 100644
--- a/tomee/tomee-embedded/pom.xml
+++ b/tomee/tomee-embedded/pom.xml
@@ -24,22 +24,18 @@
   <parent>
     <artifactId>tomee</artifactId>
     <groupId>org.apache.tomee</groupId>
-    <version>8.0.6-SNAPSHOT</version>
+    <version>8.0.7-SNAPSHOT</version>
   </parent>
 
   <modelVersion>4.0.0</modelVersion>
   <artifactId>tomee-embedded</artifactId>
   <packaging>jar</packaging>
   <name>TomEE :: TomEE :: TomEE Embedded</name>
-  <version>8.0.6-SNAPSHOT</version>
+  <version>8.0.7-SNAPSHOT</version>
 
   <build>
     <plugins>
       <plugin>
-        <groupId>org.codehaus.mojo</groupId>
-        <artifactId>rat-maven-plugin</artifactId>
-      </plugin>
-      <plugin>
         <groupId>org.apache.maven.plugins</groupId>
         <artifactId>maven-jar-plugin</artifactId>
         <configuration>
@@ -332,13 +328,16 @@
       <groupId>commons-beanutils</groupId>
     </dependency>
     <dependency>
-      <groupId>org.apache.taglibs</groupId>
-      <artifactId>taglibs-standard-jstlel</artifactId>
+      <groupId>org.apache.tomee</groupId>
+      <artifactId>taglibs-shade</artifactId>
+      <version>${project.version}</version>
+      <exclusions>
+        <exclusion>
+          <groupId>*</groupId>
+          <artifactId>*</artifactId>
+        </exclusion>
+      </exclusions>
     </dependency>
-    <!--<dependency>
-      <groupId>xalan</groupId>
-      <artifactId>xalan</artifactId>
-    </dependency>-->
     <dependency>
       <groupId>org.apache.tomcat</groupId>
       <artifactId>tomcat-jdbc</artifactId>
diff --git a/tomee/tomee-jaxrs/pom.xml b/tomee/tomee-jaxrs/pom.xml
index 37df840..f774357 100644
--- a/tomee/tomee-jaxrs/pom.xml
+++ b/tomee/tomee-jaxrs/pom.xml
@@ -21,7 +21,7 @@
   <parent>
     <artifactId>tomee</artifactId>
     <groupId>org.apache.tomee</groupId>
-    <version>8.0.6-SNAPSHOT</version>
+    <version>8.0.7-SNAPSHOT</version>
   </parent>
   <modelVersion>4.0.0</modelVersion>
 
diff --git a/tomee/tomee-jdbc/pom.xml b/tomee/tomee-jdbc/pom.xml
index b3dce4b..b9e2cab 100644
--- a/tomee/tomee-jdbc/pom.xml
+++ b/tomee/tomee-jdbc/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <artifactId>tomee</artifactId>
     <groupId>org.apache.tomee</groupId>
-    <version>8.0.6-SNAPSHOT</version>
+    <version>8.0.7-SNAPSHOT</version>
   </parent>
   <modelVersion>4.0.0</modelVersion>
 
diff --git a/tomee/tomee-juli/pom.xml b/tomee/tomee-juli/pom.xml
index 554ae5e..719fc45 100644
--- a/tomee/tomee-juli/pom.xml
+++ b/tomee/tomee-juli/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <artifactId>tomee</artifactId>
     <groupId>org.apache.tomee</groupId>
-    <version>8.0.6-SNAPSHOT</version>
+    <version>8.0.7-SNAPSHOT</version>
   </parent>
 
   <modelVersion>4.0.0</modelVersion>
diff --git a/tomee/tomee-loader/pom.xml b/tomee/tomee-loader/pom.xml
index 68f22d6..7a97530 100644
--- a/tomee/tomee-loader/pom.xml
+++ b/tomee/tomee-loader/pom.xml
@@ -24,7 +24,7 @@
   <parent>
     <artifactId>tomee</artifactId>
     <groupId>org.apache.tomee</groupId>
-    <version>8.0.6-SNAPSHOT</version>
+    <version>8.0.7-SNAPSHOT</version>
   </parent>
 
   <modelVersion>4.0.0</modelVersion>
diff --git a/tomee/tomee-microprofile/mp-common/pom.xml b/tomee/tomee-microprofile/mp-common/pom.xml
index b0b66ca..f5da14f 100644
--- a/tomee/tomee-microprofile/mp-common/pom.xml
+++ b/tomee/tomee-microprofile/mp-common/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <artifactId>tomee-microprofile</artifactId>
     <groupId>org.apache.tomee</groupId>
-    <version>8.0.6-SNAPSHOT</version>
+    <version>8.0.7-SNAPSHOT</version>
   </parent>
   <modelVersion>4.0.0</modelVersion>
 
diff --git a/tomee/tomee-microprofile/pom.xml b/tomee/tomee-microprofile/pom.xml
index 7d6decb..0ab482b 100644
--- a/tomee/tomee-microprofile/pom.xml
+++ b/tomee/tomee-microprofile/pom.xml
@@ -20,7 +20,7 @@
     <parent>
         <artifactId>tomee</artifactId>
         <groupId>org.apache.tomee</groupId>
-        <version>8.0.6-SNAPSHOT</version>
+        <version>8.0.7-SNAPSHOT</version>
     </parent>
     <modelVersion>4.0.0</modelVersion>
 
diff --git a/tomee/tomee-microprofile/tomee-microprofile-webapp/pom.xml b/tomee/tomee-microprofile/tomee-microprofile-webapp/pom.xml
index 868569f..c3b076b 100644
--- a/tomee/tomee-microprofile/tomee-microprofile-webapp/pom.xml
+++ b/tomee/tomee-microprofile/tomee-microprofile-webapp/pom.xml
@@ -24,7 +24,7 @@
   <parent>
     <artifactId>tomee-microprofile</artifactId>
     <groupId>org.apache.tomee</groupId>
-    <version>8.0.6-SNAPSHOT</version>
+    <version>8.0.7-SNAPSHOT</version>
   </parent>
 
   <modelVersion>4.0.0</modelVersion>
diff --git a/tomee/tomee-mojarra/pom.xml b/tomee/tomee-mojarra/pom.xml
index d356fc5..b117fb6 100644
--- a/tomee/tomee-mojarra/pom.xml
+++ b/tomee/tomee-mojarra/pom.xml
@@ -21,7 +21,7 @@
   <parent>
     <artifactId>tomee</artifactId>
     <groupId>org.apache.tomee</groupId>
-    <version>8.0.6-SNAPSHOT</version>
+    <version>8.0.7-SNAPSHOT</version>
   </parent>
 
   <modelVersion>4.0.0</modelVersion>
diff --git a/tomee/tomee-myfaces/pom.xml b/tomee/tomee-myfaces/pom.xml
index 3dda150..3bb4329 100644
--- a/tomee/tomee-myfaces/pom.xml
+++ b/tomee/tomee-myfaces/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <artifactId>tomee</artifactId>
     <groupId>org.apache.tomee</groupId>
-    <version>8.0.6-SNAPSHOT</version>
+    <version>8.0.7-SNAPSHOT</version>
   </parent>
 
   <artifactId>tomee-myfaces</artifactId>
diff --git a/tomee/tomee-overlay-runner/pom.xml b/tomee/tomee-overlay-runner/pom.xml
index dd0f9f4..2aed0bc 100644
--- a/tomee/tomee-overlay-runner/pom.xml
+++ b/tomee/tomee-overlay-runner/pom.xml
@@ -21,7 +21,7 @@
   <parent>
     <artifactId>tomee</artifactId>
     <groupId>org.apache.tomee</groupId>
-    <version>8.0.6-SNAPSHOT</version>
+    <version>8.0.7-SNAPSHOT</version>
   </parent>
   <modelVersion>4.0.0</modelVersion>
 
diff --git a/tomee/tomee-plume-webapp/pom.xml b/tomee/tomee-plume-webapp/pom.xml
index 9f38768..db57087 100644
--- a/tomee/tomee-plume-webapp/pom.xml
+++ b/tomee/tomee-plume-webapp/pom.xml
@@ -24,7 +24,7 @@
   <parent>
     <artifactId>tomee</artifactId>
     <groupId>org.apache.tomee</groupId>
-    <version>8.0.6-SNAPSHOT</version>
+    <version>8.0.7-SNAPSHOT</version>
   </parent>
 
   <modelVersion>4.0.0</modelVersion>
@@ -192,7 +192,7 @@
 
   <build>
     <plugins>
-      <!-- Looks like the war still have myfaces or openjpa because of the overlay with tomee-webapp -->
+      <!-- Looks like the war still have myfaces because of the overlay with tomee-webapp -->
       <plugin>
         <groupId>org.apache.maven.plugins</groupId>
         <artifactId>maven-war-plugin</artifactId>
@@ -200,11 +200,9 @@
         <configuration>
           <dependentWarExcludes>
             %regex[(WEB-INF/)?lib/(tomee-)?myfaces(-api|-impl)?-.*.jar],
-            %regex[(WEB-INF/)?lib/openjpa-.*.jar]
           </dependentWarExcludes>
           <packagingExcludes>
             %regex[(WEB-INF/)?lib/(tomee-)?myfaces(-api|-impl)?-.*.jar],
-            %regex[(WEB-INF/)?lib/openjpa-.*.jar]
           </packagingExcludes>
         </configuration>
       </plugin>
diff --git a/tomee/tomee-plume-webapp/src/main/assembly/war.xml b/tomee/tomee-plume-webapp/src/main/assembly/war.xml
index 60f5f82..9ecfa25 100644
--- a/tomee/tomee-plume-webapp/src/main/assembly/war.xml
+++ b/tomee/tomee-plume-webapp/src/main/assembly/war.xml
@@ -72,7 +72,6 @@
       </includes>
       <excludes>
         <exclude>%regex[(WEB-INF/)?lib/(tomee-)?myfaces(-api|-impl)?-.*.jar]</exclude>
-        <exclude>%regex[(WEB-INF/)?lib/openjpa-.*.jar]</exclude>
       </excludes>
     </fileSet>
   </fileSets>
@@ -86,7 +85,6 @@
         <!-- provided -->
         <exclude>org.apache.tomcat:*</exclude>
         <exclude>org.apache.myfaces:*</exclude>
-        <exclude>org.apache.openjpa:*</exclude>
 
         <!-- should be in a pom exclusion but it does perfectly the trick -->
         <exclude>org.springframework:*</exclude>
diff --git a/tomee/tomee-plus-webapp/pom.xml b/tomee/tomee-plus-webapp/pom.xml
index 7f95599..c89cb65 100644
--- a/tomee/tomee-plus-webapp/pom.xml
+++ b/tomee/tomee-plus-webapp/pom.xml
@@ -23,7 +23,7 @@
   <parent>
     <artifactId>tomee</artifactId>
     <groupId>org.apache.tomee</groupId>
-    <version>8.0.6-SNAPSHOT</version>
+    <version>8.0.7-SNAPSHOT</version>
   </parent>
 
   <modelVersion>4.0.0</modelVersion>
diff --git a/tomee/tomee-security/pom.xml b/tomee/tomee-security/pom.xml
index a9150fe..43adfe0 100644
--- a/tomee/tomee-security/pom.xml
+++ b/tomee/tomee-security/pom.xml
@@ -23,7 +23,7 @@
   <parent>
     <artifactId>tomee</artifactId>
     <groupId>org.apache.tomee</groupId>
-    <version>8.0.6-SNAPSHOT</version>
+    <version>8.0.7-SNAPSHOT</version>
   </parent>
 
   <modelVersion>4.0.0</modelVersion>
diff --git a/tomee/tomee-security/src/main/java/org/apache/tomee/security/identitystore/TomEEDatabaseIdentityStore.java b/tomee/tomee-security/src/main/java/org/apache/tomee/security/identitystore/TomEEDatabaseIdentityStore.java
index de34da6..e52e3f5 100644
--- a/tomee/tomee-security/src/main/java/org/apache/tomee/security/identitystore/TomEEDatabaseIdentityStore.java
+++ b/tomee/tomee-security/src/main/java/org/apache/tomee/security/identitystore/TomEEDatabaseIdentityStore.java
@@ -16,8 +16,6 @@
  */
 package org.apache.tomee.security.identitystore;
 
-import org.apache.openjpa.lib.util.StringUtil;
-
 import javax.annotation.PostConstruct;
 import javax.el.ELProcessor;
 import javax.enterprise.context.ApplicationScoped;
@@ -160,7 +158,7 @@
     }
 
     public static DataSource lookup(final String name) {
-        if (StringUtil.isEmpty(name)) {
+        if (name == null || name.trim().equals("")) {
             throw new RuntimeException(
                 "Can't lookup datasource because dataSourceLookup is null/empty in DatabaseIdentityStoreDefinition.");
         }
diff --git a/tomee/tomee-util/pom.xml b/tomee/tomee-util/pom.xml
index 69b3ee4..b35713a 100644
--- a/tomee/tomee-util/pom.xml
+++ b/tomee/tomee-util/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <artifactId>tomee</artifactId>
     <groupId>org.apache.tomee</groupId>
-    <version>8.0.6-SNAPSHOT</version>
+    <version>8.0.7-SNAPSHOT</version>
   </parent>
   <modelVersion>4.0.0</modelVersion>
 
diff --git a/tomee/tomee-webaccess/pom.xml b/tomee/tomee-webaccess/pom.xml
index 701b9b1..a9caff0 100644
--- a/tomee/tomee-webaccess/pom.xml
+++ b/tomee/tomee-webaccess/pom.xml
@@ -17,7 +17,7 @@
   <parent>
     <artifactId>tomee</artifactId>
     <groupId>org.apache.tomee</groupId>
-    <version>8.0.6-SNAPSHOT</version>
+    <version>8.0.7-SNAPSHOT</version>
   </parent>
   <artifactId>tomee-webaccess</artifactId>
   <packaging>war</packaging>
diff --git a/tomee/tomee-webaccess/src/main/webapp/app/js/templates/container.handlebars b/tomee/tomee-webaccess/src/main/webapp/app/js/templates/container.handlebars
index ed1be6f..847c9b6 100644
--- a/tomee/tomee-webaccess/src/main/webapp/app/js/templates/container.handlebars
+++ b/tomee/tomee-webaccess/src/main/webapp/app/js/templates/container.handlebars
@@ -1,3 +1,19 @@
+<!--
+  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.
+-->
 <nav class="navbar navbar-inverse navbar-fixed-top">
     <div class="navbar-header">
         <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-ex8-collapse">
diff --git a/tomee/tomee-webaccess/src/main/webapp/app/js/templates/contexts.handlebars b/tomee/tomee-webaccess/src/main/webapp/app/js/templates/contexts.handlebars
index d9745c2..b9aacb9 100644
--- a/tomee/tomee-webaccess/src/main/webapp/app/js/templates/contexts.handlebars
+++ b/tomee/tomee-webaccess/src/main/webapp/app/js/templates/contexts.handlebars
@@ -1,3 +1,19 @@
+<!--
+  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.
+-->
 <div class="ux-contexts-panel panel panel-default">
     <div class="panel-heading">
         <h3 class="panel-title">{{i18n "contexts"}}</h3>
diff --git a/tomee/tomee-webaccess/src/main/webapp/app/js/templates/growl-container.handlebars b/tomee/tomee-webaccess/src/main/webapp/app/js/templates/growl-container.handlebars
index 76dea29..15836e1 100644
--- a/tomee/tomee-webaccess/src/main/webapp/app/js/templates/growl-container.handlebars
+++ b/tomee/tomee-webaccess/src/main/webapp/app/js/templates/growl-container.handlebars
@@ -1,2 +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.
+-->
 <div class="growl-container">
 </div>
\ No newline at end of file
diff --git a/tomee/tomee-webaccess/src/main/webapp/app/js/templates/growl.handlebars b/tomee/tomee-webaccess/src/main/webapp/app/js/templates/growl.handlebars
index 0d92d36..cfa81e2 100644
--- a/tomee/tomee-webaccess/src/main/webapp/app/js/templates/growl.handlebars
+++ b/tomee/tomee-webaccess/src/main/webapp/app/js/templates/growl.handlebars
@@ -1,3 +1,19 @@
+<!--
+  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.
+-->
 <div class="growl alert alert-block {{messageType}}">
     <button type="button" class="close" data-dismiss="alert">×</button>
     <div class="message">{{messageText}}</div>
diff --git a/tomee/tomee-webaccess/src/main/webapp/app/js/templates/logfile-link.handlebars b/tomee/tomee-webaccess/src/main/webapp/app/js/templates/logfile-link.handlebars
index c16a247..22c5f95 100644
--- a/tomee/tomee-webaccess/src/main/webapp/app/js/templates/logfile-link.handlebars
+++ b/tomee/tomee-webaccess/src/main/webapp/app/js/templates/logfile-link.handlebars
@@ -1 +1,17 @@
+<!--
+  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.
+-->
 <li><a class="ux-log-file-link" href="{{href}}">{{href}}</a></li>
\ No newline at end of file
diff --git a/tomee/tomee-webaccess/src/main/webapp/app/js/templates/logfiles.handlebars b/tomee/tomee-webaccess/src/main/webapp/app/js/templates/logfiles.handlebars
index bceacf1..e02a0c4 100644
--- a/tomee/tomee-webaccess/src/main/webapp/app/js/templates/logfiles.handlebars
+++ b/tomee/tomee-webaccess/src/main/webapp/app/js/templates/logfiles.handlebars
@@ -1,3 +1,19 @@
+<!--
+  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.
+-->
 <div class="panel panel-default ux-logfile-output">
     <div class="panel-heading">
         <h3 class="panel-title">
diff --git a/tomee/tomee-webaccess/src/main/webapp/app/js/templates/script-sample-groovy.handlebars b/tomee/tomee-webaccess/src/main/webapp/app/js/templates/script-sample-groovy.handlebars
index 6a7ca40..7ceae55 100644
--- a/tomee/tomee-webaccess/src/main/webapp/app/js/templates/script-sample-groovy.handlebars
+++ b/tomee/tomee-webaccess/src/main/webapp/app/js/templates/script-sample-groovy.handlebars
@@ -1,3 +1,19 @@
+<!--
+  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.
+-->
 ctx.list('').each {
   println "[entry] ${it.name}"
 }
diff --git a/tomee/tomee-webaccess/src/main/webapp/app/js/templates/script-sample-javascript.handlebars b/tomee/tomee-webaccess/src/main/webapp/app/js/templates/script-sample-javascript.handlebars
index 5292825..62ea4b5 100644
--- a/tomee/tomee-webaccess/src/main/webapp/app/js/templates/script-sample-javascript.handlebars
+++ b/tomee/tomee-webaccess/src/main/webapp/app/js/templates/script-sample-javascript.handlebars
@@ -1,6 +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.
+-->
 var pairs = ctx.list('');
 while(pairs.hasMore()) {
-  println('[entry] ' + pairs.next().getName());
+  print('[entry] ' + pairs.next().getName());
 }
 var user = ctx.lookup('java:comp/EJBContext').getCallerPrincipal().getName();
-println("Logged user: '" + user + "'");
\ No newline at end of file
+print("Logged user: '" + user + "'");
diff --git a/tomee/tomee-webaccess/src/main/webapp/app/js/templates/scripting-user.handlebars b/tomee/tomee-webaccess/src/main/webapp/app/js/templates/scripting-user.handlebars
index 186e912..92788a8 100644
--- a/tomee/tomee-webaccess/src/main/webapp/app/js/templates/scripting-user.handlebars
+++ b/tomee/tomee-webaccess/src/main/webapp/app/js/templates/scripting-user.handlebars
@@ -1,3 +1,19 @@
+<!--
+  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.
+-->
 <form role="form">
     <div class="form-group">
         <input type="text" class="form-control ux-context-user" placeholder="{{i18n 'scripting.user.name'}}">
diff --git a/tomee/tomee-webaccess/src/main/webapp/app/js/templates/scripting.handlebars b/tomee/tomee-webaccess/src/main/webapp/app/js/templates/scripting.handlebars
index f0dde4e..f6a8edb 100644
--- a/tomee/tomee-webaccess/src/main/webapp/app/js/templates/scripting.handlebars
+++ b/tomee/tomee-webaccess/src/main/webapp/app/js/templates/scripting.handlebars
@@ -1,3 +1,19 @@
+<!--
+  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.
+-->
 <div class="panel panel-default ux-script ux-script-output ux-normal">
     <div class="panel-heading">
         <h3 class="panel-title">{{i18n "output"}}</h3>
diff --git a/tomee/tomee-webaccess/src/main/webapp/app/js/templates/sessions.handlebars b/tomee/tomee-webaccess/src/main/webapp/app/js/templates/sessions.handlebars
index 5b9ffb1..7374785 100644
--- a/tomee/tomee-webaccess/src/main/webapp/app/js/templates/sessions.handlebars
+++ b/tomee/tomee-webaccess/src/main/webapp/app/js/templates/sessions.handlebars
@@ -1,3 +1,19 @@
+<!--
+  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.
+-->
 <div class="ux-sessions-panel panel panel-default">
     <div class="panel-heading">
         <h3 class="panel-title">{{i18n "sessions"}}</h3>
diff --git a/tomee/tomee-webapp/pom.xml b/tomee/tomee-webapp/pom.xml
index d300652..15bb62c 100644
--- a/tomee/tomee-webapp/pom.xml
+++ b/tomee/tomee-webapp/pom.xml
@@ -24,7 +24,7 @@
   <parent>
     <artifactId>tomee</artifactId>
     <groupId>org.apache.tomee</groupId>
-    <version>8.0.6-SNAPSHOT</version>
+    <version>8.0.7-SNAPSHOT</version>
   </parent>
   <modelVersion>4.0.0</modelVersion>
   <artifactId>tomee-webapp</artifactId>
@@ -117,6 +117,7 @@
           </sourceFolders>
         </configuration>
       </plugin>
+
     </plugins>
   </build>
   <dependencies>
@@ -172,13 +173,16 @@
       <version>${commons-beanutils.version}</version>
     </dependency>
     <dependency>
-      <groupId>org.apache.taglibs</groupId>
-      <artifactId>taglibs-standard-jstlel</artifactId>
+      <groupId>org.apache.tomee</groupId>
+      <artifactId>taglibs-shade</artifactId>
+      <version>${project.version}</version>
+      <exclusions>
+        <exclusion>
+          <groupId>*</groupId>
+          <artifactId>*</artifactId>
+        </exclusion>
+      </exclusions>
     </dependency>
-    <!--<dependency>
-      <groupId>xalan</groupId>
-      <artifactId>xalan</artifactId>
-    </dependency>-->
     <dependency>
       <groupId>${project.groupId}</groupId>
       <artifactId>javaee-api</artifactId>
@@ -396,5 +400,9 @@
         </exclusion>
       </exclusions>
     </dependency>
+    <dependency>
+      <groupId>org.apache.johnzon</groupId>
+      <artifactId>johnzon-jsonp-strict</artifactId>
+    </dependency>
   </dependencies>
 </project>
diff --git a/tomee/tomee-webservices/pom.xml b/tomee/tomee-webservices/pom.xml
index f75871c..a4dfbe7 100644
--- a/tomee/tomee-webservices/pom.xml
+++ b/tomee/tomee-webservices/pom.xml
@@ -23,7 +23,7 @@
   <parent>
     <artifactId>tomee</artifactId>
     <groupId>org.apache.tomee</groupId>
-    <version>8.0.6-SNAPSHOT</version>
+    <version>8.0.7-SNAPSHOT</version>
   </parent>
   <modelVersion>4.0.0</modelVersion>
   <artifactId>tomee-webservices</artifactId>
@@ -33,19 +33,6 @@
   <properties>
     <tomee.build.name>${project.groupId}.tomee.webservices</tomee.build.name>
   </properties>
-  <build>
-    <plugins>
-      <plugin>
-        <groupId>org.codehaus.mojo</groupId>
-        <artifactId>rat-maven-plugin</artifactId>
-        <configuration>
-          <excludes>
-            <exclude>src/main/resources/META-INF/org.apache.openejb.tomcat/ServerClassLoader</exclude>
-          </excludes>
-        </configuration>
-      </plugin>
-    </plugins>
-  </build>
   <dependencies>
     <dependency>
       <groupId>${project.groupId}</groupId>
diff --git a/utils/livereload-tomee/pom.xml b/utils/livereload-tomee/pom.xml
index 88de3d0..7a036dc 100644
--- a/utils/livereload-tomee/pom.xml
+++ b/utils/livereload-tomee/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <artifactId>utils</artifactId>
     <groupId>org.apache.tomee</groupId>
-    <version>8.0.6-SNAPSHOT</version>
+    <version>8.0.7-SNAPSHOT</version>
   </parent>
   <modelVersion>4.0.0</modelVersion>
 
@@ -46,7 +46,6 @@
     <dependency>
       <groupId>org.apache.johnzon</groupId>
       <artifactId>johnzon-mapper</artifactId>
-      <version>${johnzon.version}</version>
     </dependency>
     <dependency>
       <groupId>${project.groupId}</groupId>
diff --git a/utils/log4j2-tomee/pom.xml b/utils/log4j2-tomee/pom.xml
index eba4915..7f58952 100644
--- a/utils/log4j2-tomee/pom.xml
+++ b/utils/log4j2-tomee/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <artifactId>utils</artifactId>
     <groupId>org.apache.tomee</groupId>
-    <version>8.0.6-SNAPSHOT</version>
+    <version>8.0.7-SNAPSHOT</version>
   </parent>
   <modelVersion>4.0.0</modelVersion>
 
diff --git a/utils/openejb-core-eclipselink/pom.xml b/utils/openejb-core-eclipselink/pom.xml
index 1ece75d1..f420322 100644
--- a/utils/openejb-core-eclipselink/pom.xml
+++ b/utils/openejb-core-eclipselink/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <artifactId>utils</artifactId>
     <groupId>org.apache.tomee</groupId>
-    <version>8.0.6-SNAPSHOT</version>
+    <version>8.0.7-SNAPSHOT</version>
   </parent>
   <modelVersion>4.0.0</modelVersion>
 
diff --git a/utils/openejb-core-hibernate/pom.xml b/utils/openejb-core-hibernate/pom.xml
index a7acbe3..906f6f1 100644
--- a/utils/openejb-core-hibernate/pom.xml
+++ b/utils/openejb-core-hibernate/pom.xml
@@ -23,7 +23,7 @@
   <parent>
     <artifactId>utils</artifactId>
     <groupId>org.apache.tomee</groupId>
-    <version>8.0.6-SNAPSHOT</version>
+    <version>8.0.7-SNAPSHOT</version>
   </parent>
 
   <artifactId>openejb-core-hibernate</artifactId>
diff --git a/utils/openejb-mockito/pom.xml b/utils/openejb-mockito/pom.xml
index 5179701..e89e1c1 100644
--- a/utils/openejb-mockito/pom.xml
+++ b/utils/openejb-mockito/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <artifactId>utils</artifactId>
     <groupId>org.apache.tomee</groupId>
-    <version>8.0.6-SNAPSHOT</version>
+    <version>8.0.7-SNAPSHOT</version>
   </parent>
   <modelVersion>4.0.0</modelVersion>
 
diff --git a/utils/openejb-provisionning/pom.xml b/utils/openejb-provisionning/pom.xml
index 3b9cbf2..1387722 100644
--- a/utils/openejb-provisionning/pom.xml
+++ b/utils/openejb-provisionning/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <artifactId>utils</artifactId>
     <groupId>org.apache.tomee</groupId>
-    <version>8.0.6-SNAPSHOT</version>
+    <version>8.0.7-SNAPSHOT</version>
   </parent>
   <modelVersion>4.0.0</modelVersion>
 
diff --git a/utils/pom.xml b/utils/pom.xml
index 57c65a7..3e06e01 100644
--- a/utils/pom.xml
+++ b/utils/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <artifactId>tomee-project</artifactId>
     <groupId>org.apache.tomee</groupId>
-    <version>8.0.6-SNAPSHOT</version>
+    <version>8.0.7-SNAPSHOT</version>
   </parent>
   <modelVersion>4.0.0</modelVersion>
   <artifactId>utils</artifactId>
diff --git a/utils/webdeployer/pom.xml b/utils/webdeployer/pom.xml
index a4967c0..e789603 100644
--- a/utils/webdeployer/pom.xml
+++ b/utils/webdeployer/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <artifactId>utils</artifactId>
     <groupId>org.apache.tomee</groupId>
-    <version>8.0.6-SNAPSHOT</version>
+    <version>8.0.7-SNAPSHOT</version>
   </parent>
 
   <artifactId>webdeployer</artifactId>
