[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