Uploaded image for project: 'Weld'
  1. Weld
  2. WELD-846

Incorrect handling of cyclic dependencies between BeanDeploymentArchives

    XMLWordPrintable

Details

    • Bug
    • Resolution: Done
    • Major
    • 1.1.1.Final
    • 1.1.0.Final
    • Resolution
    • None
    • Hide
      • Install latest GlassFish 3.1 nightly http://dlc.sun.com.edgesuite.net/glassfish/3.1/nightly/latest-glassfish.zip to $INSTALL_ROOT
      • To see Weld-integration related debug information add the following line to $INSTALL_ROOT/glassfish3/glassfish/domains/domain1/config/logging.properties:
        org.glassfish.weld.level=FINE
        The server logs would be available at $INSTALL_ROOT/glassfish3/glassfish/domains/domain1/logs/server.log
      • start domain and database:
        $INSTALL_ROOT/glassfish3/glassfish/bin/asadmin start-domain domain1
        $INSTALL_ROOT/glassfish3/glassfish/bin/asadmin start-database
      • and execute the following Arquillian tests in Seam Solder
        mvn clean test -Dincontainer-glassfish-rest -Dtest=TypeVisibilityWithinBeanArchiveTest
        mvn clean test -Dincontainer-glassfish-rest -Dtest=TypeVisibilityForExtensionInNonBeanArchiveTest
      Show
      Install latest GlassFish 3.1 nightly http://dlc.sun.com.edgesuite.net/glassfish/3.1/nightly/latest-glassfish.zip to $INSTALL_ROOT To see Weld-integration related debug information add the following line to $INSTALL_ROOT/glassfish3/glassfish/domains/domain1/config/logging.properties: org.glassfish.weld.level=FINE The server logs would be available at $INSTALL_ROOT/glassfish3/glassfish/domains/domain1/logs/server.log start domain and database: $INSTALL_ROOT/glassfish3/glassfish/bin/asadmin start-domain domain1 $INSTALL_ROOT/glassfish3/glassfish/bin/asadmin start-database and execute the following Arquillian tests in Seam Solder mvn clean test -Dincontainer-glassfish-rest -Dtest=TypeVisibilityWithinBeanArchiveTest mvn clean test -Dincontainer-glassfish-rest -Dtest=TypeVisibilityForExtensionInNonBeanArchiveTest

    Description

      This issue occurs in GlassFish with the scenarios discussed in http://java.net/jira/browse/GLASSFISH-15735 and http://java.net/jira/browse/GLASSFISH-15721 when GlassFish provides BDA hierarchies where there are cyclic dependencies between constituent BDAs.

      While constructing BeanDeployments for the deployed BDA in in WeldBootstrap.DeploymentVisitor, and visiting the tree of BDAs, the code appears to incorrectly check for seenBeanDeploymentArchives for adding accessibleBeanManagers for a child BDA.

      GlassFish uses the following BDA hierarchy for a WAR with a bundled library (WEB-INF/lib/*.jar):
      WAR-BDA (accessible-BDAs=WEB-INF/lib/A)

      • WEB-INF/lib/A's BDA (accessible-BDAs=WAR-BDA)

      In WeldBootstrap.DeploymentVisitor.visit(...)
      -. initial invocation:
      managerAwareBeanDeploymentArchives and seenBeanDeploymentArchives are populated with WAR-BDA

      • - then as part of the WAR-BDA's getBeanDeploymentArchives loop:
      • - - visiting WEB-INF/lib/A's BDA
        managerAwareBeanDeploymentArchives and seenBeanDeploymentArchives are now populated with WAR-BDA and WEB-INF/lib/A's BDA
      • - - - then as part of the WEB-INF/lib/A's getBeanDeploymentArchives loop:
      • - - - - WAR BDA is an accessible BDA of WEB-INF/lib/A BDA. However since WAR BDA is in seenBeanDeploymentArchives, WAR-BDA is never added as an accessible BeanManager of WEB-INF/lib/A's BDA

      This prevents Beans from WAR BDA being available in the WEB-INF/lib BDA though it is included as an accessible BDA.

      Attachments

        Activity

          People

            sdouglas1@redhat.com Stuart Douglas
            sivakumart_jira Sivakumar Thyagarajan (Inactive)
            Votes:
            0 Vote for this issue
            Watchers:
            5 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: