Details

    • Type: Bug Bug
    • Status: Resolved
    • Priority: Major Major
    • Resolution: Fixed
    • Affects Version/s: 3.1.1_b09, 3.1.1_b10, 3.1.1_b11, 3.1.1_b12, 3.1.1
    • Fix Version/s: 3.1.2_b14, 4.0
    • Component/s: cdi
    • Labels:
      None
    • Environment:

      Windows 7 x64

      Description

      I have an EAR that deploys without problems in GF 3.0.1. Now that we want to upgrade to GF 3.1.1 we are testing our apps on GF 3.1.1.
      One specific app doesn't deploy, it fails with the messages in server.log listed below. No clue whatsoever.

      SEVERE: Exception while loading the app
      
      SEVERE: Exception while shutting down application container
      SEVERE: Exception while shutting down application container
      SEVERE: Exception while shutting down application container
      SEVERE: Exception while shutting down application container
      INFO: No timers to be deleted for id: 86444029077618688
      INFO: No timers to be deleted for id: 86444029077618688
      INFO: No timers to be deleted for id: 86444029077618688
      SEVERE: Exception while shutting down application container : java.lang.NullPointerException</code>
      

      After many trail and error sessions, I finally found that my EAR deploys on GF 3.1.1-b08 but not on GF 3.1.1-b09. So I looked up the differences in svn and after some testing I found that a change in class org.glassfish.weld.WeldDeployer is responsible for the failed deploy:

      http://java.net/projects/glassfish/sources/svn/revision/47614

      GLASSFISH-16730: The weld-integration module wasn't firing ProcessInjectionTargetEvents to MessageDriven Beans. So, reference to Beans that are injected through Portable Extensions weren't satisfied as the Extension wasn't receiving ProcessInjectionTarget Events for MDBs. Support for JMS message listeners is added

      After adding a try/catch + exception log in method WeldDeployer.firePITEvent(), the following error is shown

      WELD-001508 Cannot create an InjectionTarget from public abstract interface class <MyInterface> as it is an interface|#]
      

      To my basic Weld knowledge, the error seems perfectly legal since it's trying to handle an interface class.

      I have two issues:

      • this error should be logged in server.log
      • interfaces that extend javax.jms.MessageListener should not be given to Weld in this case

        Activity

        Hide
        Bas van Gils added a comment -

        Any idea if a fix will be included in 3.1.2?

        Show
        Bas van Gils added a comment - Any idea if a fix will be included in 3.1.2?
        Hide
        Sivakumar Thyagarajan added a comment -

        dj_canard: Yes, we are working on a fix for this issue for 3.1.2.

        Show
        Sivakumar Thyagarajan added a comment - dj_canard: Yes, we are working on a fix for this issue for 3.1.2.
        Hide
        Sivakumar Thyagarajan added a comment -

        Request Kshitiz to handle this issue in 3.1.2 and trunk.

        Show
        Sivakumar Thyagarajan added a comment - Request Kshitiz to handle this issue in 3.1.2 and trunk.
        Hide
        kshitiz_saxena added a comment -

        Now in firePITEvent method, it is checked whether BDA(Bean Deployment Archive) class is a interface. If it is a interface, then PIT event is not fired.

        checkin logs :
        Sending weld-integration/src/main/java/org/glassfish/weld/WeldDeployer.java
        Transmitting file data .
        Committed revision 51474.

        For logging, I found following SEVERE message is logged in server logs which in my view is sufficient
        [#|2011-12-12T17:15:07.707+0530|SEVERE|glassfish3.1.2|javax.enterprise.system.tools.admin.org.glassfish.deployment.admin|_ThreadID=19;_ThreadName=Thread-2;|Exception while loading the app : WELD-001508 Cannot create an InjectionTarget from public abstract interface class com.sun.s1asdev.cdi.hello.mdb.MyMessageListener as it is an interface
        org.jboss.weld.exceptions.DefinitionException: WELD-001508 Cannot create an InjectionTarget from public abstract interface class com.sun.s1asdev.cdi.hello.mdb.MyMessageListener as it is an interface
        at org.jboss.weld.manager.SimpleInjectionTarget.<init>(SimpleInjectionTarget.java:65)
        at org.jboss.weld.manager.BeanManagerImpl.createInjectionTarget(BeanManagerImpl.java:906)
        at org.jboss.weld.manager.BeanManagerImpl.fireProcessInjectionTarget(BeanManagerImpl.java:1055)
        at org.glassfish.weld.WeldDeployer.firePITEvent(WeldDeployer.java:303)
        at org.glassfish.weld.WeldDeployer.fireProcessInjectionTargetEvents(WeldDeployer.java:293)
        at org.glassfish.weld.WeldDeployer.event(WeldDeployer.java:178)
        at org.glassfish.kernel.event.EventsImpl.send(EventsImpl.java:128)
        at org.glassfish.internal.data.ApplicationInfo.load(ApplicationInfo.java:277)
        at com.sun.enterprise.v3.server.ApplicationLifecycle.deploy(ApplicationLifecycle.java:461)
        at com.sun.enterprise.v3.server.ApplicationLifecycle.deploy(ApplicationLifecycle.java:240)
        at org.glassfish.deployment.admin.DeployCommand.execute(DeployCommand.java:389)
        at com.sun.enterprise.v3.admin.CommandRunnerImpl$1.execute(CommandRunnerImpl.java:348)
        at com.sun.enterprise.v3.admin.CommandRunnerImpl.doCommand(CommandRunnerImpl.java:363)
        at com.sun.enterprise.v3.admin.CommandRunnerImpl.doCommand(CommandRunnerImpl.java:1085)
        at com.sun.enterprise.v3.admin.CommandRunnerImpl.access$1200(CommandRunnerImpl.java:95)
        at com.sun.enterprise.v3.admin.CommandRunnerImpl$ExecutionContext.execute(CommandRunnerImpl.java:1291)
        at com.sun.enterprise.v3.admin.CommandRunnerImpl$ExecutionContext.execute(CommandRunnerImpl.java:1259)
        at com.sun.enterprise.v3.admin.AdminAdapter.doCommand(AdminAdapter.java:461)
        at com.sun.enterprise.v3.admin.AdminAdapter.service(AdminAdapter.java:212)
        at com.sun.grizzly.tcp.http11.GrizzlyAdapter.service(GrizzlyAdapter.java:179)
        at com.sun.enterprise.v3.server.HK2Dispatcher.dispath(HK2Dispatcher.java:117)
        at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:238)
        at com.sun.grizzly.http.ProcessorTask.invokeAdapter(ProcessorTask.java:849)
        at com.sun.grizzly.http.ProcessorTask.doProcess(ProcessorTask.java:746)
        at com.sun.grizzly.http.ProcessorTask.process(ProcessorTask.java:1045)
        at com.sun.grizzly.http.DefaultProtocolFilter.execute(DefaultProtocolFilter.java:228)
        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:680)

        #]

        Probably it is fixed in latest weld integration

        Show
        kshitiz_saxena added a comment - Now in firePITEvent method, it is checked whether BDA(Bean Deployment Archive) class is a interface. If it is a interface, then PIT event is not fired. checkin logs : Sending weld-integration/src/main/java/org/glassfish/weld/WeldDeployer.java Transmitting file data . Committed revision 51474. For logging, I found following SEVERE message is logged in server logs which in my view is sufficient [#|2011-12-12T17:15:07.707+0530|SEVERE|glassfish3.1.2|javax.enterprise.system.tools.admin.org.glassfish.deployment.admin|_ThreadID=19;_ThreadName=Thread-2;|Exception while loading the app : WELD-001508 Cannot create an InjectionTarget from public abstract interface class com.sun.s1asdev.cdi.hello.mdb.MyMessageListener as it is an interface org.jboss.weld.exceptions.DefinitionException: WELD-001508 Cannot create an InjectionTarget from public abstract interface class com.sun.s1asdev.cdi.hello.mdb.MyMessageListener as it is an interface at org.jboss.weld.manager.SimpleInjectionTarget.<init>(SimpleInjectionTarget.java:65) at org.jboss.weld.manager.BeanManagerImpl.createInjectionTarget(BeanManagerImpl.java:906) at org.jboss.weld.manager.BeanManagerImpl.fireProcessInjectionTarget(BeanManagerImpl.java:1055) at org.glassfish.weld.WeldDeployer.firePITEvent(WeldDeployer.java:303) at org.glassfish.weld.WeldDeployer.fireProcessInjectionTargetEvents(WeldDeployer.java:293) at org.glassfish.weld.WeldDeployer.event(WeldDeployer.java:178) at org.glassfish.kernel.event.EventsImpl.send(EventsImpl.java:128) at org.glassfish.internal.data.ApplicationInfo.load(ApplicationInfo.java:277) at com.sun.enterprise.v3.server.ApplicationLifecycle.deploy(ApplicationLifecycle.java:461) at com.sun.enterprise.v3.server.ApplicationLifecycle.deploy(ApplicationLifecycle.java:240) at org.glassfish.deployment.admin.DeployCommand.execute(DeployCommand.java:389) at com.sun.enterprise.v3.admin.CommandRunnerImpl$1.execute(CommandRunnerImpl.java:348) at com.sun.enterprise.v3.admin.CommandRunnerImpl.doCommand(CommandRunnerImpl.java:363) at com.sun.enterprise.v3.admin.CommandRunnerImpl.doCommand(CommandRunnerImpl.java:1085) at com.sun.enterprise.v3.admin.CommandRunnerImpl.access$1200(CommandRunnerImpl.java:95) at com.sun.enterprise.v3.admin.CommandRunnerImpl$ExecutionContext.execute(CommandRunnerImpl.java:1291) at com.sun.enterprise.v3.admin.CommandRunnerImpl$ExecutionContext.execute(CommandRunnerImpl.java:1259) at com.sun.enterprise.v3.admin.AdminAdapter.doCommand(AdminAdapter.java:461) at com.sun.enterprise.v3.admin.AdminAdapter.service(AdminAdapter.java:212) at com.sun.grizzly.tcp.http11.GrizzlyAdapter.service(GrizzlyAdapter.java:179) at com.sun.enterprise.v3.server.HK2Dispatcher.dispath(HK2Dispatcher.java:117) at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:238) at com.sun.grizzly.http.ProcessorTask.invokeAdapter(ProcessorTask.java:849) at com.sun.grizzly.http.ProcessorTask.doProcess(ProcessorTask.java:746) at com.sun.grizzly.http.ProcessorTask.process(ProcessorTask.java:1045) at com.sun.grizzly.http.DefaultProtocolFilter.execute(DefaultProtocolFilter.java:228) 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:680) #] Probably it is fixed in latest weld integration

          People

          • Assignee:
            kshitiz_saxena
            Reporter:
            Bas van Gils
          • Votes:
            1 Vote for this issue
            Watchers:
            2 Start watching this issue

            Dates

            • Created:
              Updated:
              Resolved: