[jboss-dev-forums] [Design of POJO Server] - Explicit listing of Boot Classpath

ALRubinger do-not-reply at jboss.com
Mon Mar 30 02:19:50 EDT 2009


Came across some this while addressing: https://jira.jboss.org/jira/browse/JBAS-6698

I was under the impression that anything in $JBOSS_HOME/lib should be on the boot CP.  As such the ServerLoader in jboss-bootstrap constructs the CP by iterating through the contents of "lib" and adding each JAR.

ServerLoader in AS/main instead has an explicit default boot library list:

    /**
  |     * The default list of boot libraries.  Does not include
  |     * the JAXP or JMX impl, users of this class should add the
  |     * proper libraries.
  |     * TODO: use vfs to list the root directory
  |     */
  |    public static final String[] DEFAULT_BOOT_LIBRARY_LIST = {
  |       // Logging
  |       "log4j-boot.jar",
  |       "jboss-logging-spi.jar",
  |       "jboss-logging-log4j.jar",
  |       "jboss-logging-jdk.jar",
  |       "jboss-logmanager.jar",
  |       "jboss-logbridge.jar",
  |       // Common jars
  |       "jboss-common-core.jar",
  |       "jboss-xml-binding.jar",
  |       "jaxb-api.jar",
  |       // Bootstrap
  |       "jboss-bootstrap.jar",
  |       // Microcontainer
  |       "javassist.jar",
  |       "jboss-reflect.jar",
  |       "jboss-mdr.jar",
  |       "jboss-dependency.jar",
  |       "jboss-kernel.jar",
  |       "jboss-metatype.jar",
  |       "jboss-managed.jar",
  |       // Fixme ClassLoading
  |       "jboss-vfs.jar",
  |       "jboss-classloading-spi.jar",
  |       "jboss-classloader.jar",
  |       "jboss-classloading.jar",
  |       "jboss-classloading-vfs.jar",
  |       // Fixme aop
  |       "jboss-aop.jar",
  |       "jboss-aop-mc-int.jar",
  |       "trove.jar",
  |    };

Using the jboss-bootstrap approach leads to:

Failed to boot JBoss:
  | java.lang.RuntimeException: Error creating annotation for @org.jboss.aop.microcontainer.aspects.jmx.JMX(name="jboss.system:service=ServiceBindingManager", exposedInterface=org.jboss.services.binding.ServiceBindingManagerMBean.class, registerDirectly=true)
  | 	at org.jboss.beans.metadata.plugins.AbstractAnnotationMetaData.getAnnotationInstance(AbstractAnnotationMetaData.java:128)
  | 	at org.jboss.beans.metadata.plugins.AbstractAnnotationMetaData.getAnnotationInstance(AbstractAnnotationMetaData.java:100)
  | 	at org.jboss.deployers.plugins.managed.BeanMetaDataICF.getManagedObjectClass(BeanMetaDataICF.java:119)
  | 	at org.jboss.deployers.plugins.managed.BeanMetaDataICF.getManagedObjectClass(BeanMetaDataICF.java:50)
  | 	at org.jboss.managed.plugins.factory.AbstractManagedObjectFactory.initManagedObject(AbstractManagedObjectFactory.java:342)
  | 	at org.jboss.managed.api.factory.ManagedObjectFactory.initManagedObject(ManagedObjectFactory.java:77)
  | 	at org.jboss.system.server.profileservice.ProfileServiceBootstrap.initBootstrapMDs(ProfileServiceBootstrap.java:439)
  | 	at org.jboss.system.server.profileservice.ProfileServiceBootstrap.start(ProfileServiceBootstrap.java:242)
  | 	at org.jboss.bootstrap.AbstractServerImpl.start(AbstractServerImpl.java:461)
  | 	at org.jboss.Main.boot(Main.java:216)
  | 	at org.jboss.Main$1.run(Main.java:546)
  | 	at java.lang.Thread.run(Thread.java:595)
  | Caused by: java.lang.RuntimeException: java.lang.ClassNotFoundException: org.jboss.services.binding.ServiceBindingManagerMBean
  | 	at org.jboss.annotation.factory.AnnotationCreator.visit(AnnotationCreator.java:241)
  | 	at org.jboss.annotation.factory.ast.ASTIdentifier.jjtAccept(ASTIdentifier.java:37)
  | 	at org.jboss.annotation.factory.AnnotationCreator.visit(AnnotationCreator.java:116)
  | 	at org.jboss.annotation.factory.ast.ASTMemberValuePair.jjtAccept(ASTMemberValuePair.java:37)
  | 	at org.jboss.annotation.factory.AnnotationCreator.createAnnotation(AnnotationCreator.java:403)
  | 	at org.jboss.annotation.factory.AnnotationCreator.createAnnotation(AnnotationCreator.java:449)
  | 	at org.jboss.beans.metadata.plugins.AbstractAnnotationMetaData.getAnnotationInstance(AbstractAnnotationMetaData.java:119)
  | 	... 11 more
  | Caused by: java.lang.ClassNotFoundException: org.jboss.services.binding.ServiceBindingManagerMBean
  | 	at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
  | 	at java.security.AccessController.doPrivileged(Native Method)
  | 	at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
  | 	at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
  | 	at java.lang.ClassLoader.loadClass(ClassLoader.java:251)
  | 	at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319)
  | 	at java.lang.Class.forName0(Native Method)
  | 	at java.lang.Class.forName(Class.java:242)
  | 	at org.jboss.annotation.factory.AnnotationCreator.visit(AnnotationCreator.java:175)
  | 	... 17 more

Probably the real issue is not a CNFE a this point, but the loading of some extra JAR is triggering some scanning/deployment prematurely.

What's the correct approach - to stick with this explicit list, or put only stuff in $JBOSS_HOME/lib which can be used at boot?

S,
ALR

View the original post : http://www.jboss.org/index.html?module=bb&op=viewtopic&p=4221825#4221825

Reply to the post : http://www.jboss.org/index.html?module=bb&op=posting&mode=reply&p=4221825



More information about the jboss-dev-forums mailing list