Explicit listing of Boot Classpath
alrubinger Mar 30, 2009 2:19 AMCame across 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