Details

    • Type: Bug Bug
    • Status: Resolved
    • Priority: Major Major
    • Resolution: Fixed
    • Affects Version/s: 3.1
    • Fix Version/s: 3.1.1
    • Component/s: cdi
    • Labels:
      None

      Description

      Having two CDI Beans:

      public class ClassUnavailableAtRuntime {}

      public class OptionalService extends ClassUnavailableAtRuntime {}

      A deployment of a web application that bundles OptionalService but does not bundle ClassUnavailableAtRuntime fails, although the OptionalService is not used.

      What should actually happen is that the ClassNotFoundException should be suppressed by the deployer and the OptionalService should not be registered as a CDI bean, instead of failing the entire deployment.

      [#|2011-04-06T15:49:12.785+0200|SEVERE|glassfish3.1|javax.enterprise.system.tools.admin.org.glassfish.deployment.admin|_ThreadID=58;_ThreadName=Thread-1;|Exception while loading the app : org/jboss/seam/compat/scanning/ClassUnavailableAtRuntime
      java.lang.ClassNotFoundException: org.jboss.seam.compat.scanning.ClassUnavailableAtRuntime
      at org.glassfish.web.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1518)
      at org.glassfish.web.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1368)
      at java.lang.ClassLoader.defineClass1(Native Method)
      at java.lang.ClassLoader.defineClassCond(ClassLoader.java:632)
      at java.lang.ClassLoader.defineClass(ClassLoader.java:616)
      at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:141)
      at org.glassfish.web.loader.WebappClassLoader.findClass(WebappClassLoader.java:925)
      at org.glassfish.web.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1485)
      at org.glassfish.web.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1368)
      at org.glassfish.weld.BeanDeploymentArchiveImpl.populate(BeanDeploymentArchiveImpl.java:340)
      at org.glassfish.weld.BeanDeploymentArchiveImpl.<init>(BeanDeploymentArchiveImpl.java:148)
      at org.glassfish.weld.BeanDeploymentArchiveImpl.<init>(BeanDeploymentArchiveImpl.java:128)
      at org.glassfish.weld.DeploymentImpl.<init>(DeploymentImpl.java:120)
      at org.glassfish.weld.WeldDeployer.load(WeldDeployer.java:334)
      at org.glassfish.weld.WeldDeployer.load(WeldDeployer.java:99)
      at org.glassfish.internal.data.ModuleInfo.load(ModuleInfo.java:186)
      at org.glassfish.internal.data.ApplicationInfo.load(ApplicationInfo.java:249)
      at com.sun.enterprise.v3.server.ApplicationLifecycle.deploy(ApplicationLifecycle.java:460)
      at com.sun.enterprise.v3.server.ApplicationLifecycle.deploy(ApplicationLifecycle.java:240)
      at org.glassfish.deployment.admin.DeployCommand.execute(DeployCommand.java:370)
      at com.sun.enterprise.v3.admin.CommandRunnerImpl$1.execute(CommandRunnerImpl.java:355)
      at com.sun.enterprise.v3.admin.CommandRunnerImpl.doCommand(CommandRunnerImpl.java:370)
      at com.sun.enterprise.v3.admin.CommandRunnerImpl.doCommand(CommandRunnerImpl.java:1067)
      at com.sun.enterprise.v3.admin.CommandRunnerImpl.access$1200(CommandRunnerImpl.java:96)
      at com.sun.enterprise.v3.admin.CommandRunnerImpl$ExecutionContext.execute(CommandRunnerImpl.java:1247)
      at com.sun.enterprise.v3.admin.CommandRunnerImpl$ExecutionContext.execute(CommandRunnerImpl.java:1235)
      at org.glassfish.admin.rest.ResourceUtil.runCommand(ResourceUtil.java:202)
      at org.glassfish.admin.rest.ResourceUtil.runCommand(ResourceUtil.java:195)
      at org.glassfish.admin.rest.resources.TemplateListOfResource.createResource(TemplateListOfResource.java:331)
      at org.glassfish.admin.rest.resources.TemplateListOfResource.post(TemplateListOfResource.java:190)
      at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
      at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
      at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
      at java.lang.reflect.Method.invoke(Method.java:597)
      at com.sun.jersey.server.impl.model.method.dispatch.AbstractResourceMethodDispatchProvider$ResponseOutInvoker._dispatch(AbstractResourceMethodDispatchProvider.java:186)
      at com.sun.jersey.server.impl.model.method.dispatch.ResourceJavaMethodDispatcher.dispatch(ResourceJavaMethodDispatcher.java:70)
      at com.sun.jersey.server.impl.uri.rules.HttpMethodRule.accept(HttpMethodRule.java:279)
      at com.sun.jersey.server.impl.uri.rules.SubLocatorRule.accept(SubLocatorRule.java:121)
      at com.sun.jersey.server.impl.uri.rules.RightHandPathRule.accept(RightHandPathRule.java:136)
      at com.sun.jersey.server.impl.uri.rules.SubLocatorRule.accept(SubLocatorRule.java:121)
      at com.sun.jersey.server.impl.uri.rules.RightHandPathRule.accept(RightHandPathRule.java:136)
      at com.sun.jersey.server.impl.uri.rules.ResourceClassRule.accept(ResourceClassRule.java:86)
      at com.sun.jersey.server.impl.uri.rules.RightHandPathRule.accept(RightHandPathRule.java:136)
      at com.sun.jersey.server.impl.uri.rules.RootResourceClassesRule.accept(RootResourceClassesRule.java:74)
      at com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1347)
      at com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1279)
      at com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1229)
      at com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1219)
      at com.sun.jersey.server.impl.container.grizzly.GrizzlyContainer._service(GrizzlyContainer.java:180)
      at com.sun.jersey.server.impl.container.grizzly.GrizzlyContainer.service(GrizzlyContainer.java:145)
      at org.glassfish.admin.rest.adapter.RestAdapter.service(RestAdapter.java:177)
      at com.sun.grizzly.tcp.http11.GrizzlyAdapter.service(GrizzlyAdapter.java:168)
      at com.sun.enterprise.v3.server.HK2Dispatcher.dispath(HK2Dispatcher.java:117)
      at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:234)
      at com.sun.grizzly.http.ProcessorTask.invokeAdapter(ProcessorTask.java:822)
      at com.sun.grizzly.http.ProcessorTask.doProcess(ProcessorTask.java:719)
      at com.sun.grizzly.http.ProcessorTask.process(ProcessorTask.java:1013)
      at com.sun.grizzly.http.DefaultProtocolFilter.execute(DefaultProtocolFilter.java:225)
      at com.sun.grizzly.DefaultProtocolChain.executeProtocolFilter(DefaultProtocolChain.java:137)
      at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:104)
      at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:90)
      at com.sun.grizzly.http.HttpProtocolChain.execute(HttpProtocolChain.java:79)
      at com.sun.grizzly.ProtocolChainContextTask.doCall(ProtocolChainContextTask.java:54)
      at com.sun.grizzly.SelectionKeyContextTask.call(SelectionKeyContextTask.java:59)
      at com.sun.grizzly.ContextTask.run(ContextTask.java:71)
      at com.sun.grizzly.util.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:532)
      at com.sun.grizzly.util.AbstractThreadPool$Worker.run(AbstractThreadPool.java:513)
      at java.lang.Thread.run(Thread.java:662)

      #]
      1. GLASSFISH-16318.patch
        1 kB
        Sivakumar Thyagarajan

        Activity

        Show
        Jozef Hartinger added a comment - Test application source code https://github.com/seam/compatibility/tree/master/src/test/java/org/jboss/seam/compat/scanning
        Hide
        Sivakumar Thyagarajan added a comment -

        Attached an initial patch to fix this issue

        Show
        Sivakumar Thyagarajan added a comment - Attached an initial patch to fix this issue
        Hide
        Sivakumar Thyagarajan added a comment -

        In BeanDeploymentArchiveImpl.populate, we were eagerly evaluating the linkage and loadable nature of every Bean in the BDA. In the scenario discussed in this issue, this eager evaluation caused the deployment to fail. Fix involves ignoring Beans that cannot be loaded.

        Show
        Sivakumar Thyagarajan added a comment - In BeanDeploymentArchiveImpl.populate, we were eagerly evaluating the linkage and loadable nature of every Bean in the BDA. In the scenario discussed in this issue, this eager evaluation caused the deployment to fail. Fix involves ignoring Beans that cannot be loaded.
        Hide
        Sivakumar Thyagarajan added a comment -

        Component Name: OSGi-CDI
        Issue: http://java.net/jira/browse/GLASSFISH-16318

        • Why fix this issue in 3.1.1?

        Affects CDI bean archives which have some Bean classes that cannot be loaded.

        • Which is the targeted build of 3.1.1 for this fix?

        3.1.1 b08

        • Do regression tests exist for this issue?

        Yes, the test included in this bug report. I will also add a developer test in the CDI devtests suite to cover this optional unbundled beans scenario.

        • Which tests should QA (re)run to verify the fix did not destabilize GlassFish?

        The test included in this issue and the optional-unbundled-beans test in the CDI developer test suite.

        Show
        Sivakumar Thyagarajan added a comment - Component Name: OSGi-CDI Issue: http://java.net/jira/browse/GLASSFISH-16318 Why fix this issue in 3.1.1? Affects CDI bean archives which have some Bean classes that cannot be loaded. Which is the targeted build of 3.1.1 for this fix? 3.1.1 b08 Do regression tests exist for this issue? Yes, the test included in this bug report. I will also add a developer test in the CDI devtests suite to cover this optional unbundled beans scenario. Which tests should QA (re)run to verify the fix did not destabilize GlassFish? The test included in this issue and the optional-unbundled-beans test in the CDI developer test suite.
        Hide
        Sivakumar Thyagarajan added a comment -

        Fixed in 3.1.1 as part of svn commit 47614 and in trunk as part of svn commit 47615

        Show
        Sivakumar Thyagarajan added a comment - Fixed in 3.1.1 as part of svn commit 47614 and in trunk as part of svn commit 47615
        Hide
        Sivakumar Thyagarajan added a comment -

        Marked fix version as 3.1.1

        Show
        Sivakumar Thyagarajan added a comment - Marked fix version as 3.1.1

          People

          • Assignee:
            Sivakumar Thyagarajan
            Reporter:
            Jozef Hartinger
          • Votes:
            9 Vote for this issue
            Watchers:
            5 Start watching this issue

            Dates

            • Created:
              Updated:
              Resolved: