Uploaded image for project: 'WildFly'
  1. WildFly
  2. WFLY-12689

WAR deployment fails due to NPE when both MBean and persistence-unit are packaged

XMLWordPrintable

    • Hide

      1. Add the following persistence.xml to helloworld-mbean-webapp in WildFly QuickStarts "helloworld-mbean"

      helloworld-mbean-webapp/src/main/resources/META-INF/persistence.xml
      <?xml version="1.0" encoding="UTF-8"?>
      <persistence version="2.1"
          xmlns="http://xmlns.jcp.org/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="
              http://xmlns.jcp.org/xml/ns/persistence
              http://xmlns.jcp.org/xml/ns/persistence/persistence_2_1.xsd">
          <persistence-unit name="example">
              <jta-data-source>java:jboss/datasources/ExampleDS</jta-data-source>
              <properties>
                  <!-- Properties for Hibernate -->
                  <!-- <property name="hibernate.hbm2ddl.auto" value="create-drop" /> -->
                  <property name="hibernate.show_sql" value="false" />
              </properties>
          </persistence-unit>
      </persistence>
      

      2. Build and deploy helloworld-mbean-webapp.war to WildFly 18.0.0.Final

      3. Start WildFly 18.0.0.Final

      You will see that the deployment fails due to NullPointerException.

      Show
      1. Add the following persistence.xml to helloworld-mbean-webapp in WildFly QuickStarts "helloworld-mbean" helloworld-mbean-webapp/src/main/resources/META-INF/persistence.xml <?xml version= "1.0" encoding= "UTF-8" ?> <persistence version= "2.1" xmlns= "http: //xmlns.jcp.org/xml/ns/persistence" xmlns:xsi= "http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation=" http: //xmlns.jcp.org/xml/ns/persistence http: //xmlns.jcp.org/xml/ns/persistence/persistence_2_1.xsd"> <persistence-unit name= "example" > <jta-data-source>java:jboss/datasources/ExampleDS</jta-data-source> <properties> <!-- Properties for Hibernate --> <!-- <property name= "hibernate.hbm2ddl.auto" value= "create-drop" /> --> <property name= "hibernate.show_sql" value= " false " /> </properties> </persistence-unit> </persistence> 2. Build and deploy helloworld-mbean-webapp.war to WildFly 18.0.0.Final 3. Start WildFly 18.0.0.Final You will see that the deployment fails due to NullPointerException.

      When a web application contains both MBean (jboss-service.xml) and persistence-unit (persistence.xml), the WAR deployment fails due to the following NullPointerException:

      11:51:03,041 ERROR [org.jboss.msc.service.fail] (MSC service thread 1-3) MSC000001: Failed to start service jboss.deployment.unit."helloworld-mbean-webapp.war".INSTALL: org.jboss.msc.service.StartException in service jboss.deployment.unit."helloworld-mbean-webapp.war".INSTALL: WFLYSRV0153: Failed to process phase INSTALL of deployment "helloworld-mbean-webapp.war"
      	at org.jboss.as.server.deployment.DeploymentUnitPhaseService.start(DeploymentUnitPhaseService.java:183)
      	at org.jboss.msc.service.ServiceControllerImpl$StartTask.startService(ServiceControllerImpl.java:1739)
      	at org.jboss.msc.service.ServiceControllerImpl$StartTask.execute(ServiceControllerImpl.java:1701)
      	at org.jboss.msc.service.ServiceControllerImpl$ControllerTask.run(ServiceControllerImpl.java:1559)
      	at org.jboss.threads.ContextClassLoaderSavingRunnable.run(ContextClassLoaderSavingRunnable.java:35)
      	at org.jboss.threads.EnhancedQueueExecutor.safeRun(EnhancedQueueExecutor.java:1982)
      	at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.doRunTask(EnhancedQueueExecutor.java:1486)
      	at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1377)
      	at java.lang.Thread.run(Thread.java:748)
      Caused by: java.lang.NullPointerException
      	at org.jboss.as.service.MBeanServices.<init>(MBeanServices.java:107)
      	at org.jboss.as.service.ParsedServiceDeploymentProcessor.addServices(ParsedServiceDeploymentProcessor.java:124)
      	at org.jboss.as.service.ParsedServiceDeploymentProcessor.deploy(ParsedServiceDeploymentProcessor.java:109)
      	at org.jboss.as.server.deployment.DeploymentUnitPhaseService.start(DeploymentUnitPhaseService.java:176)
      	... 8 more
      
      ...(snip)...
      
      11:51:03,687 ERROR [org.jboss.as.controller.management-operation] (Controller Boot Thread) WFLYCTL0013: Operation ("deploy") failed - address: ([("deployment" => "helloworld-mbean-webapp.war")]) - failure description: {
          "WFLYCTL0080: Failed services" => {"jboss.deployment.unit.\"helloworld-mbean-webapp.war\".INSTALL" => "WFLYSRV0153: Failed to process phase INSTALL of deployment \"helloworld-mbean-webapp.war\"
          Caused by: java.lang.NullPointerException"},
          "WFLYCTL0412: Required services that are not installed:" => [
              "jboss.deployment.unit.\"helloworld-mbean-webapp.war\".WeldStartService",
              "jboss.deployment.unit.\"helloworld-mbean-webapp.war\".beanmanager"
          ],
          "WFLYCTL0180: Services with missing/unavailable dependencies" => [
              "jboss.deployment.unit.\"helloworld-mbean-webapp.war\".weld.weldClassIntrospector is missing [jboss.deployment.unit.\"helloworld-mbean-webapp.war\".WeldStartService, jboss.deployment.unit.\"helloworld-mbean-webapp.war\".beanmanager]",
              "jboss.deployment.unit.\"helloworld-mbean-webapp.war\".batch.artifact.factory is missing [jboss.deployment.unit.\"helloworld-mbean-webapp.war\".beanmanager]"
          ]
      }
      

      This NPE happens because WebNonTxEmCloserAction#dependencies() returns null. It should return Collections.emptySet() instead of null.

              rhn-support-mmiura Masafumi Miura
              rhn-support-mmiura Masafumi Miura
              Votes:
              0 Vote for this issue
              Watchers:
              1 Start watching this issue

                Created:
                Updated:
                Resolved: