[jboss-jira] [JBoss JIRA] Created: (JBMICROCONT-101) Need better error reporting of circular dependencies

Scott M Stark (JIRA) jira-events at jboss.com
Thu Aug 10 15:49:15 EDT 2006


Need better error reporting of circular dependencies
----------------------------------------------------

                 Key: JBMICROCONT-101
                 URL: http://jira.jboss.com/jira/browse/JBMICROCONT-101
             Project: JBoss MicroContainer
          Issue Type: Feature Request
          Components: Dependency
    Affects Versions:  JBossMC_2_0_0M1
            Reporter: Scott M Stark
             Fix For:  JBossMC_2_0_0M1


I switched around some dependencies and ended up producing a circular dependency:

<?xml version="1.0" encoding="UTF-8"?>

<!-- A ProfileServiceBootstrap bootstrap descriptor that uses the simple
VFSDeploymentScanner that goes directly to the MainDeployer rather than the
ProfileService.
$Id$
-->
<deployment xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xsi:schemaLocation="urn:jboss:bean-deployer:2.0 bean-deployer_2_0.xsd"
   xmlns="urn:jboss:bean-deployer:2.0">
   <!-- -->
   <bean name="ProfileService" class="org.jboss.system.server.profileservice.ProfileServiceImpl">
      <constructor>
         <parameter>${jboss.server.name}</parameter>
      </constructor>
      <property name="profileRoot">${jboss.server.home.url}/profile</property>
   </bean>

   <!-- The MainDeployer -->
   <bean name="MainDeployer" class="org.jboss.deployers.plugins.MainDeployerImpl">
      <property name="VFSFactory"><inject bean="VFSFactory"/></property>
      <property name="deployers">
         <array class="[Lorg.jboss.deployers.spi.AspectDeployer;" elementClass="org.jboss.deployers.spi.AspectDeployer">
            <inject bean="ClassLoadingDeployer"/>
            <inject bean="BeanDeployer"/>
            <inject bean="SARDeployer"/>
         </array>
      </property>
      <supply>Deployers</supply>
   </bean>
   <!-- The factory for VFS instances -->
   <bean name="VFSFactory" class="org.jboss.vfs.file.DefaultVFSFactory">
   </bean>

   <!-- Deployers. Declaration order defines the deployer chain order
   -->
   <bean name="ClassLoadingDeployer" class="org.jboss.deployers.plugins.classloading.ClassLoadingDeployer">
   </bean>
   <bean name="BeanDeployer" class="org.jboss.deployers.plugins.bean.BeanDeployer">
   </bean>

   <!-- Load the jboss jmx classes -->
   <bean name="JMXClassLoader" class="org.jboss.vfs.classloading.VFSClassLoader">
      <constructor factoryClass="org.jboss.vfs.classloading.VFSClassLoaderFactory"
                   factoryMethod="newClassLoader">
         <parameter class="java.net.URL">${jboss.lib.url}</parameter>
         <parameter>
         	<array class="[Ljava.lang.String;" elementClass="java.lang.String">
	         	<value>dom4j.jar</value>
	         	<value>jboss-j2se.jar</value>
	         	<value>jboss-jmx.jar</value>
	         	<value>jboss-mbeans.jar</value>
	         	<value>jboss-system-jmx.jar</value>
         	</array>
         	</parameter>
         <parameter><inject bean="MainDeployer" property="VFSFactory"/></parameter>
      </constructor>
   </bean>
   <bean name="SARDeployer" class="org.jboss.deployment.SARDeployer">
      <classloader><inject bean="JMXClassLoader"/></classloader>
      <property name="useNamespaceAwareParser">true</property>
      <property name="server"><inject bean="JMXKernel" property="mbeanServer" /></property>
      <property name="serviceController"><inject bean="JMXKernel" property="serviceController" /></property>
   </bean>
	<!-- A bean that setups a jboss-4.0.x type of jmx kernel to support the
		the legacy mbean deployments handled by the SARDeployer
	-->
   <bean name="JMXKernel" class="org.jboss.system.server.jmx.JMXKernel">
      <classloader><inject bean="JMXClassLoader"/></classloader>
      <property name="serverImpl"><inject bean="org.jboss.system.server.Server"/></property>
   </bean>

   <!-- Hot deployment service that directly uses the MainDeployer -->
   <bean name="VFSDeploymentScanner" class="org.jboss.deployers.plugins.scanner.VFSDeploymentScannerImpl">
      <property name="mainDeployer"><inject bean="MainDeployer"/></property>
      <property name="VFSFactory"><inject bean="MainDeployer" property="VFSFactory" /></property>
      <property name="URIList">
         <list elementClass="java.net.URI"><value>${jboss.server.home.url}/deploy/</value></list>
      </property>
      <property name="scanPeriod"><value>500000</value></property>
      <demand state="Instantiated">Deployers</demand>
   </bean>
	
</deployment>

All that was reported was a NPE due to the target of the demand=Deployers not being Instantiated:
12:37:31,477 DEBUG [ServerImpl] Failed to start
java.lang.IllegalArgumentException: Null name
	at org.jboss.dependency.plugins.AbstractController.getContext(AbstractController.java:101)
	at org.jboss.kernel.plugins.dependency.AbstractKernelController.getContext(AbstractKernelController.java:94)
	at org.jboss.kernel.plugins.deployment.AbstractKernelDeployer.internalValidate(AbstractKernelDeployer.java:229)
	at org.jboss.kernel.plugins.deployment.AbstractKernelDeployer.validate(AbstractKernelDeployer.java:161)
	at org.jboss.system.server.profileservice.ProfileServiceBootstrap.bootstrap(ProfileServiceBootstrap.java:202)
	at org.jboss.kernel.plugins.bootstrap.AbstractBootstrap.run(AbstractBootstrap.java:89)
	at org.jboss.system.server.profileservice.ServerImpl.doStart(ServerImpl.java:371)
	at org.jboss.system.server.profileservice.ServerImpl.start(ServerImpl.java:323)
	at org.jboss.Main.boot(Main.java:210)
	at org.jboss.Main$1.run(Main.java:488)
	at java.lang.Thread.run()V(Unknown Source)

What should be reported is the bean which supplies the demand and its state not matching and why.


-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://jira.jboss.com/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        



More information about the jboss-jira mailing list