Uploaded image for project: 'JBoss Transaction Manager'
  1. JBoss Transaction Manager
  2. JBTM-3703

com.arjuna.ats.jta.cdi.DelegatingTransactionManager is not proxyable because it has no no-args constructor

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Unresolved
    • Icon: Major Major
    • None
    • 5.12.5.Final
    • JTS
    • None
    • Hide

      -Deploy a distributable JSF/CDI/ee 8 application to Wildfly 26 server (2 nodes running in cluster)

      -App uses @ViewScoped/@SessionScoped beans with @Transactional

      -Shutdown node 1 causing session replication to node 2

      -Refresh page, exception is thrown and user sessions needs to be removed to continue

      Show
      -Deploy a distributable JSF/CDI/ee 8 application to Wildfly 26 server (2 nodes running in cluster) -App uses @ViewScoped/@SessionScoped beans with @Transactional -Shutdown node 1 causing session replication to node 2 -Refresh page, exception is thrown and user sessions needs to be removed to continue
    • Hide

      Add no-args constructor to DelegatingTransactionManager

      Show
      Add no-args constructor to DelegatingTransactionManager

      The DelegatingTransactionManager does not have a no-args constructor so the subclass NarayanaTransactionManager cannot be proxied.

      When testing Wildfly 26.1.1 Java EE 8 / JSF app in clustered environment, after server failover to a second node we are seeing this exception, any referenced beans that contain the @Transactional annotation cause the exception to be thrown.

      I have built a patched version which contains a no-args constructor and replaced the provided narayana-jts-idlj-5.12.5.Final.jar in Wildfly  and the exception disappears.

       

      [0m [31m11:31:47,479 ERROR [io.undertow.servlet.request] (default task-2) UT015005: Error invoking method requestInitialized on listener class org.jboss.weld.module.web.servlet.WeldInitialListener: org.jboss.weld.exceptions.UnproxyableResolutionException: WELD-001435: Normal scoped bean class com.arjuna.ats.jta.cdi.DelegatingTransactionManager is not proxyable because it has no no-args constructor - Managed Bean [class com.arjuna.ats.jta.cdi.NarayanaTransactionManager] with qualifiers [@Any @Default].

         at org.jboss...@3.1.9.Final//org.jboss.weld.bean.proxy.DefaultProxyInstantiator.validateNoargConstructor(DefaultProxyInstantiator.java:50)

         at org.jboss...@3.1.9.Final//org.jboss.weld.util.Proxies.getUnproxyableClassException(Proxies.java:249)

         at org.jboss...@3.1.9.Final//org.jboss.weld.util.Proxies.getUnproxyableTypeException(Proxies.java:199)

         at org.jboss...@3.1.9.Final//org.jboss.weld.util.Proxies.getUnproxyableTypesExceptionInt(Proxies.java:211)

         at org.jboss...@3.1.9.Final//org.jboss.weld.util.Proxies.getUnproxyableTypesException(Proxies.java:190)

              Unassigned Unassigned
              DavidBaddeley David Baddeley (Inactive)
              Votes:
              0 Vote for this issue
              Watchers:
              3 Start watching this issue

                Created:
                Updated: