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