3 Replies Latest reply on Jan 8, 2008 7:33 PM by starksm64

    loader-repository name required in JBAS5

    ccrouch

      Using r68653 of JBAS

      Deploying a .war with a jboss-web.xml of

      <jboss-web>
       <context-root>/jboss-as5-testsuite</context-root>
      
       <class-loading>
       <loader-repository>
       <loader-repository-config>java2ParentDelegation=false</loader-repository-config>
       </loader-repository>
       </class-loading>
      </jboss-web>
      


      produces the following, where as in JBAS4.2 it worked fine...

      19:49:52,828 ERROR [AbstractKernelController] Error installing to Parse: name=vfsfile:/C:/usr/apps/jboss/jboss-5.0.0.r68653/
      server/default/deploy/jboss-as5-testsuite.war state=Not Installed mode=Manual requiredState=Parse
      org.jboss.deployers.spi.DeploymentException: Error creating managed object for vfsfile:/C:/usr/apps/jboss/jboss-5.0.0.r68653
      /server/default/deploy/jboss-as5-testsuite.war
       at org.jboss.deployers.spi.DeploymentException.rethrowAsDeploymentException(DeploymentException.java:49)
       at org.jboss.deployers.spi.deployer.helpers.AbstractParsingDeployerWithOutput.createMetaData(AbstractParsingDeployer
      WithOutput.java:232)
       at org.jboss.deployment.JBossWebAppParsingDeployer.createMetaData(JBossWebAppParsingDeployer.java:140)
       at org.jboss.deployers.spi.deployer.helpers.AbstractParsingDeployerWithOutput.createMetaData(AbstractParsingDeployer
      WithOutput.java:199)
       at org.jboss.deployment.JBossWebAppParsingDeployer.createMetaData(JBossWebAppParsingDeployer.java:87)
       at org.jboss.deployers.spi.deployer.helpers.AbstractParsingDeployerWithOutput.deploy(AbstractParsingDeployerWithOutp
      ut.java:162)
       at org.jboss.deployers.plugins.deployers.DeployerWrapper.deploy(DeployerWrapper.java:169)
       at org.jboss.deployers.plugins.deployers.DeployersImpl.doInstallParentFirst(DeployersImpl.java:853)
       at org.jboss.deployers.plugins.deployers.DeployersImpl.install(DeployersImpl.java:794)
       at org.jboss.dependency.plugins.AbstractControllerContext.install(AbstractControllerContext.java:327)
       at org.jboss.dependency.plugins.AbstractController.install(AbstractController.java:1309)
       at org.jboss.dependency.plugins.AbstractController.incrementState(AbstractController.java:734)
       at org.jboss.dependency.plugins.AbstractController.resolveContexts(AbstractController.java:862)
       at org.jboss.dependency.plugins.AbstractController.resolveContexts(AbstractController.java:784)
       at org.jboss.dependency.plugins.AbstractController.change(AbstractController.java:622)
       at org.jboss.dependency.plugins.AbstractController.change(AbstractController.java:411)
       at org.jboss.deployers.plugins.deployers.DeployersImpl.process(DeployersImpl.java:498)
       at org.jboss.deployers.plugins.main.MainDeployerImpl.process(MainDeployerImpl.java:506)
       at org.jboss.system.server.profileservice.ProfileServiceBootstrap.loadProfile(ProfileServiceBootstrap.java:245)
       at org.jboss.system.server.profileservice.ProfileServiceBootstrap.start(ProfileServiceBootstrap.java:131)
       at org.jboss.bootstrap.AbstractServerImpl.start(AbstractServerImpl.java:408)
       at org.jboss.Main.boot(Main.java:208)
       at org.jboss.Main$1.run(Main.java:534)
       at java.lang.Thread.run(Thread.java:595)
      Caused by: java.lang.NullPointerException: name cannot be null
       at javax.management.ObjectName.construct(ObjectName.java:342)
       at javax.management.ObjectName.<init>(ObjectName.java:1304)
       at org.jboss.deployment.JBossWebAppParsingDeployer.init(JBossWebAppParsingDeployer.java:121)
       at org.jboss.deployment.JBossWebAppParsingDeployer.init(JBossWebAppParsingDeployer.java:50)
       at org.jboss.deployers.vfs.spi.deployer.AbstractVFSParsingDeployer.parse(AbstractVFSParsingDeployer.java:88)
       at org.jboss.deployers.spi.deployer.helpers.AbstractParsingDeployerWithOutput.createMetaData(AbstractParsingDeployer
      WithOutput.java:223)
       ... 22 more
      


      Giving the loader-repository a name makes everything happy:

      <jboss-web>
       <context-root>/jboss-as5-testsuite</context-root>
      
       <class-loading>
       <loader-repository>
       jboss.on.org:loader=jboss-as5-test
       <loader-repository-config>java2ParentDelegation=false</loader-repository-config>
       </loader-repository>
       </class-loading>
      </jboss-web>




        • 1. Re: loader-repository name required in JBAS5
          ccrouch

          Looking at

          http://fisheye.jboss.com/browse/JBossAS/trunk/server/src/main/org/jboss/deployment/JBossWebAppParsingDeployer.java?r=66523

          it appears that line 121 prevents the loader-repository name from ever being null

          109 protected void init(VFSDeploymentUnit unit, JBossWebMetaData metaData, VirtualFile file) throws Exception
          110 {
          111 // Add the loader repository config
          112 ClassLoadingMetaData classLoading = metaData.getClassLoading();
          113 LoaderRepositoryMetaData lrmd = null;
          114 if(classLoading != null)
          115 lrmd = classLoading.getLoaderRepository();
          116 if (lrmd != null)
          117 {
          118 LoaderRepositoryConfig loaderConfig = new LoaderRepositoryConfig();
          119
          120 loaderConfig.repositoryClassName = lrmd.getLoaderRepositoryClass();
          121 loaderConfig.repositoryName = new ObjectName(lrmd.getName());
          122 Set<LoaderRepositoryConfigMetaData> configs = lrmd.getLoaderRepositoryConfig();
          123 if (configs != null && configs.isEmpty() == false)
          124 {
          125 LoaderRepositoryConfigMetaData config = configs.iterator().next();
          126 loaderConfig.configParserClassName = config.getConfigParserClass();
          127 loaderConfig.repositoryConfig = config.getConfig();
          128 }
          129 unit.addAttachment(LoaderRepositoryConfig.class, loaderConfig);
          130 }
          131 }


          • 2. Re: loader-repository name required in JBAS5
            starksm64

            Must be a change related to the metadata extraction. I'll create a test to validate what's changed.

            • 3. Re: loader-repository name required in JBAS5
              starksm64

              Fixed in trunk. Just needed to validate the name and not create an ObjectName if null.