diff --git a/core/impl/src/main/java/org/apache/myfaces/extensions/cdi/core/impl/util/ProxyUtils.java b/core/impl/src/main/java/org/apache/myfaces/extensions/cdi/core/impl/util/ProxyUtils.java
index 6b434e4..705f268 100644
--- a/core/impl/src/main/java/org/apache/myfaces/extensions/cdi/core/impl/util/ProxyUtils.java
+++ b/core/impl/src/main/java/org/apache/myfaces/extensions/cdi/core/impl/util/ProxyUtils.java
@@ -52,9 +52,7 @@
      */
     public static boolean isProxiedClass(Class currentClass)
     {
-        return currentClass.getName().contains("$$EnhancerByCGLIB$$") ||
-            currentClass.getName().contains("$$FastClassByCGLIB$$") ||
-            currentClass.getName().contains("_$$_javassist") ||
-            (currentClass.getName().contains("_$$_") && currentClass.getName().contains("-class_"));
+        return currentClass.getName().startsWith(currentClass.getSuperclass().getName()) &&
+            currentClass.getName().contains("$$");
     }
 }
diff --git a/jee-modules/jpa-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/jpa/impl/LegacyTransactionalInterceptorStrategy.java b/jee-modules/jpa-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/jpa/impl/LegacyTransactionalInterceptorStrategy.java
index b8f3cc9..56d396a 100644
--- a/jee-modules/jpa-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/jpa/impl/LegacyTransactionalInterceptorStrategy.java
+++ b/jee-modules/jpa-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/jpa/impl/LegacyTransactionalInterceptorStrategy.java
@@ -140,6 +140,11 @@
         {
             transactionalAnnotation = context.getTarget().getClass().getAnnotation(Transactional.class);
         }
+        //needed by weld
+        if (transactionalAnnotation == null)
+        {
+            transactionalAnnotation = context.getTarget().getClass().getSuperclass().getAnnotation(Transactional.class);
+        }
         return transactionalAnnotation;
     }
 
diff --git a/jee-modules/jpa-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/jpa/impl/transaction/TransactionalInterceptorStrategy.java b/jee-modules/jpa-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/jpa/impl/transaction/TransactionalInterceptorStrategy.java
index 80e369c..4a5228b 100644
--- a/jee-modules/jpa-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/jpa/impl/transaction/TransactionalInterceptorStrategy.java
+++ b/jee-modules/jpa-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/jpa/impl/transaction/TransactionalInterceptorStrategy.java
@@ -380,6 +380,11 @@
         {
             transactionalAnnotation = context.getTarget().getClass().getAnnotation(Transactional.class);
         }
+        //needed by some versions of weld
+        if (transactionalAnnotation == null)
+        {
+            transactionalAnnotation = context.getTarget().getClass().getSuperclass().getAnnotation(Transactional.class);
+        }
         return transactionalAnnotation;
     }
 
diff --git a/jee-modules/jsf-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/jsf/impl/listener/action/CodiActionListener.java b/jee-modules/jsf-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/jsf/impl/listener/action/CodiActionListener.java
index 020341a..4d4f3a2 100644
--- a/jee-modules/jsf-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/jsf/impl/listener/action/CodiActionListener.java
+++ b/jee-modules/jsf-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/jsf/impl/listener/action/CodiActionListener.java
@@ -61,10 +61,10 @@
 
     private ActionListener getWrappedActionListener()
     {
-        SecurityViolationAwareActionListener viewConfigAwareNavigationHandler =
+        SecurityViolationAwareActionListener securityViolationAwareActionListener =
                 new SecurityViolationAwareActionListener(this.wrapped);
 
-        return new ViewControllerActionListener(viewConfigAwareNavigationHandler);
+        return new ViewControllerActionListener(securityViolationAwareActionListener);
     }
 
     /**
diff --git a/pom.xml b/pom.xml
index 15c9022..2960b25 100644
--- a/pom.xml
+++ b/pom.xml
@@ -383,7 +383,7 @@
             <dependency>
                 <groupId>junit</groupId>
                 <artifactId>junit</artifactId>
-                <version>4.8.1</version>
+                <version>4.10</version>
                 <scope>test</scope>
             </dependency>
 
