3 Replies Latest reply on May 23, 2011 1:03 PM by alesj

    complete Classloading isolation

    minimike

      Hi there,

       

      I'm something confused about the different documentations about classloading inside Jboss.

      I've got a ear called hippo-quickstart-ear-2.18.04-SNAPSHOT.ear they is included my stuff with WAR's JAR's and everything

       

      So I have to prevent now that the my app loads any classes from Jboss. I don't want delete JAR's or modify something on my app

       

      Im using Jboss 5.1 and I've tryed a jboss-classloading.xml there contents

       

       

      <classloading xmlns="urn:jboss:classloading:1.0"

                    parent-first="false"

                    domain="DefaultDomain"

                    top-level-classloader="true"

                    parent-domain="Ignored"

                    export-all="NON_EMPTY"

                    import-all="true">

      </classloading>

       

      but that doesn't work.

       

      8:37:58,072 INFO  [LogNotificationListener] Adding notification listener for logging mbean "jboss.system:service=Logging,type=Log4jService" to server org.jboss.mx.server.MBeanServerImpl@50b2fb1e[ defaultDomain='jboss' ]
      18:38:09,549 ERROR [AbstractKernelController] Error installing to Parse: name=vfszip:/home/darko/JAVA/Project_Hippo/Appserver/jboss-5.1.0.GA/server/default/deploy/hippo-quickstart-ear-2.18.04-SNAPSHOT.ear/ state=Not Installed mode=Manual requiredState=Parse
      org.jboss.deployers.spi.DeploymentException: Error creating managed object for vfszip:/home/darko/JAVA/Project_Hippo/Appserver/jboss-5.1.0.GA/server/default/deploy/hippo-quickstart-ear-2.18.04-SNAPSHOT.ear/hippo-repository-application-2.18.03.war/
      at org.jboss.deployers.spi.DeploymentException.rethrowAsDeploymentException(DeploymentException.java:49)
      at org.jboss.deployers.spi.deployer.helpers.AbstractParsingDeployerWithOutput.createMetaData(AbstractParsingDeployerWithOutput.java:362)
      at org.jboss.deployers.spi.deployer.helpers.AbstractParsingDeployerWithOutput.createMetaData(AbstractParsingDeployerWithOutput.java:322)
      at org.jboss.deployers.spi.deployer.helpers.AbstractParsingDeployerWithOutput.createMetaData(AbstractParsingDeployerWithOutput.java:294)
      at org.jboss.deployers.spi.deployer.helpers.AbstractParsingDeployerWithOutput.deploy(AbstractParsingDeployerWithOutput.java:234)
      at org.jboss.deployers.plugins.deployers.DeployerWrapper.deploy(DeployerWrapper.java:171)
      at org.jboss.deployers.plugins.deployers.DeployersImpl.doDeploy(DeployersImpl.java:1439)
      at org.jboss.deployers.plugins.deployers.DeployersImpl.doInstallParentFirst(DeployersImpl.java:1157)
      at org.jboss.deployers.plugins.deployers.DeployersImpl.doInstallParentFirst(DeployersImpl.java:1210)
      at org.jboss.deployers.plugins.deployers.DeployersImpl.install(DeployersImpl.java:1098)
      at org.jboss.dependency.plugins.AbstractControllerContext.install(AbstractControllerContext.java:348)
      at org.jboss.dependency.plugins.AbstractController.install(AbstractController.java:1631)
      at org.jboss.dependency.plugins.AbstractController.incrementState(AbstractController.java:934)
      at org.jboss.dependency.plugins.AbstractController.resolveContexts(AbstractController.java:1082)
      at org.jboss.dependency.plugins.AbstractController.resolveContexts(AbstractController.java:984)
      at org.jboss.dependency.plugins.AbstractController.change(AbstractController.java:822)
      at org.jboss.dependency.plugins.AbstractController.change(AbstractController.java:553)
      at org.jboss.deployers.plugins.deployers.DeployersImpl.process(DeployersImpl.java:781)
      at org.jboss.deployers.plugins.main.MainDeployerImpl.process(MainDeployerImpl.java:702)
      at org.jboss.system.server.profileservice.repository.MainDeployerAdapter.process(MainDeployerAdapter.java:117)
      at org.jboss.system.server.profileservice.repository.ProfileDeployAction.install(ProfileDeployAction.java:70)
      at org.jboss.system.server.profileservice.repository.AbstractProfileAction.install(AbstractProfileAction.java:53)
      at org.jboss.system.server.profileservice.repository.AbstractProfileService.install(AbstractProfileService.java:361)
      at org.jboss.dependency.plugins.AbstractControllerContext.install(AbstractControllerContext.java:348)
      at org.jboss.dependency.plugins.AbstractController.install(AbstractController.java:1631)
      at org.jboss.dependency.plugins.AbstractController.incrementState(AbstractController.java:934)
      at org.jboss.dependency.plugins.AbstractController.resolveContexts(AbstractController.java:1082)
      at org.jboss.dependency.plugins.AbstractController.resolveContexts(AbstractController.java:984)
      at org.jboss.dependency.plugins.AbstractController.change(AbstractController.java:822)
      at org.jboss.dependency.plugins.AbstractController.change(AbstractController.java:553)
      at org.jboss.system.server.profileservice.repository.AbstractProfileService.activateProfile(AbstractProfileService.java:306)
      at org.jboss.system.server.profileservice.ProfileServiceBootstrap.start(ProfileServiceBootstrap.java:271)
      at org.jboss.bootstrap.AbstractServerImpl.start(AbstractServerImpl.java:461)
      at org.jboss.Main.boot(Main.java:221)
      at org.jboss.Main$1.run(Main.java:556)
      at java.lang.Thread.run(Thread.java:636)
      Caused by: org.jboss.xb.binding.JBossXBException: Failed to parse source: The content of element type "servlet" must match "(icon?,servlet-name,display-name?,description?,(servlet-class|jsp-file),init-param*,load-on-startup?,run-as?,security-role-ref*)". @ vfszip:/home/darko/JAVA/Project_Hippo/Appserver/jboss-5.1.0.GA/server/default/deploy/hippo-quickstart-ear-2.18.04-SNAPSHOT.ear/hippo-repository-application-2.18.03.war/WEB-INF/web.xml[56,13]
      at org.jboss.xb.binding.parser.sax.SaxJBossXBParser.parse(SaxJBossXBParser.java:203)
      at org.jboss.xb.binding.UnmarshallerImpl.unmarshal(UnmarshallerImpl.java:168)
      at org.jboss.xb.util.JBossXBHelper.parse(JBossXBHelper.java:189)
      at org.jboss.xb.util.JBossXBHelper.parse(JBossXBHelper.java:166)
      at org.jboss.deployers.vfs.spi.deployer.SchemaResolverDeployer.parse(SchemaResolverDeployer.java:137)
      at org.jboss.deployers.vfs.spi.deployer.SchemaResolverDeployer.parse(SchemaResolverDeployer.java:121)
      at org.jboss.deployers.vfs.spi.deployer.AbstractVFSParsingDeployer.parseAndInit(AbstractVFSParsingDeployer.java:256)
      at org.jboss.deployers.vfs.spi.deployer.AbstractVFSParsingDeployer.parse(AbstractVFSParsingDeployer.java:188)
      at org.jboss.deployers.spi.deployer.helpers.AbstractParsingDeployerWithOutput.createMetaData(AbstractParsingDeployerWithOutput.java:348)
      ... 34 more
      Caused by: org.xml.sax.SAXException: The content of element type "servlet" must match "(icon?,servlet-name,display-name?,description?,(servlet-class|jsp-file),init-param*,load-on-startup?,run-as?,security-role-ref*)". @ vfszip:/home/darko/JAVA/Project_Hippo/Appserver/jboss-5.1.0.GA/server/default/deploy/hippo-quickstart-ear-2.18.04-SNAPSHOT.ear/hippo-repository-application-2.18.03.war/WEB-INF/web.xml[56,13]
      at org.jboss.xb.binding.parser.sax.SaxJBossXBParser$MetaDataErrorHandler.error(SaxJBossXBParser.java:426)
      at org.apache.xerces.util.ErrorHandlerWrapper.error(Unknown Source)
      at org.apache.xerces.impl.XMLErrorReporter.reportError(Unknown Source)
      at org.apache.xerces.impl.XMLErrorReporter.reportError(Unknown Source)
      at org.apache.xerces.impl.XMLErrorReporter.reportError(Unknown Source)
      at org.apache.xerces.impl.dtd.XMLDTDValidator.handleEndElement(Unknown Source)
      at org.apache.xerces.impl.dtd.XMLDTDValidator.endElement(Unknown Source)
      at org.apache.xerces.impl.XMLNSDocumentScannerImpl.scanEndElement(Unknown Source)
      at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl$FragmentContentDispatcher.dispatch(Unknown Source)
      at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown Source)
      at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
      at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
      at org.apache.xerces.parsers.XMLParser.parse(Unknown Source)
      at org.apache.xerces.parsers.AbstractSAXParser.parse(Unknown Source)
      at org.apache.xerces.jaxp.SAXParserImpl$JAXPSAXParser.parse(Unknown Source)
      at org.jboss.xb.binding.parser.sax.SaxJBossXBParser.parse(SaxJBossXBParser.java:199)
      ... 42 more

       

       

      I think there beginning to hang on a xerces.jar inside the ear

       

      So how I could load my EAR and its classes first for coexisting with there from Jboss?

        • 1. complete Classloading isolation
          alesj

          Excluding already bundled AS libs is always a pita.

          Search this forum for similar issues.

          We've added some a-bit-better support for it in AS6, but it's still a pita.

           

          Perhaps try AS7, which is 100% modular, hence easily supports user bundled over-lapping libs.

          • 2. complete Classloading isolation
            minimike

            Sorry thats impossible Currently I only got Jboss 5.1 maintained for FreeBSD my target plattform. So I'm fixated on Jboss 5.1

            • 3. complete Classloading isolation
              alesj

              You can programatically create and control new CL domain.

              e.g. filter parent lookups, etc

               

              Then from your deployment you use that CL domain as your domain.

              This should then to some extent allow for JBoss lib exclusion.

               

              But it might introduce some other problems;

              e.g. integration code expects to run on its own libs, but somehow your lib leaks in