[jboss-dev-forums] [Design the new POJO MicroContainer] - Re: Parallel deployments

kabir.khan@jboss.com do-not-reply at jboss.com
Fri Jul 3 08:19:37 EDT 2009


"smarlow at redhat.com" wrote : 
  | Could you share your AS changes (if you don't check them in)?  I would also like to experiment with using parallel deployment in AS.  
  | -Scott
I currently have a bean for local testing in the server/ module:

  | package org.jboss.executor;
  | 
  | import java.util.concurrent.Executor;
  | 
  | import org.jboss.dependency.plugins.AbstractController;
  | import org.jboss.dependency.spi.ControllerContext;
  | 
  | /**
  |  * Bean used to install an Executor in the controller
  |  * 
  |  * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
  |  * @version $Revision: 1.1 $
  |  */
  | public class ControllerExecutorInstaller
  | {
  |    ControllerContext context;
  | 
  |    Executor executor;
  | 
  |    public ControllerContext getContext()
  |    {
  |       return context;
  |    }
  |    
  |    public void setContext(ControllerContext context)
  |    {
  |       this.context = context;
  |    }
  |    
  |    public Executor getExecutor()
  |    {
  |       return executor;
  |    }
  |    
  |    public void setExecutor(Executor executor)
  |    {
  |       this.executor = executor;
  |    }
  |    
  |    public void start()
  |    {
  |       ((AbstractController)context.getController()).setExecutor(executor);
  |    }
  |    
  |    public void stop()
  |    {
  |       ((AbstractController)context.getController()).setExecutor(null);
  |    }
  | }
  | 
configured via conf/bootstrap/asynch.xml (added to bootstrap.xml)

  | <?xml version="1.0" encoding="UTF-8"?>
  | 
  | <!--
  |    The Executor used by the controller to do asynchronous deployments
  | -->
  | <deployment xmlns="urn:jboss:bean-deployer:2.0">
  |    <classloader><inject bean="asynch-classloader:0.0.0"/></classloader>
  | 
  |    <classloader name="asynch-classloader" xmlns="urn:jboss:classloader:1.0" export-all="NON_EMPTY" import-all="true">
  |       <root>${jboss.common.lib.url}jboss.jar</root>
  |    </classloader>
  | 
  |    <bean name="ControllerExecutorInstaller" class="org.jboss.executor.ControllerExecutorInstaller">
  |       <property name="context"><inject fromContext="context"/></property>
  |       <property name="executor"><inject name="ControllerExecutor"/></property>
  |    </bean>
  | 
  |    <bean name="ControllerExecutor" class="java.util.concurrent.Executor">
  |       <constructor factoryClass="java.util.concurrent.Executors" factoryMethod="newFixedThreadPool">
  |          <parameter>10</parameter>
  |       </constructor>
  |    </bean>
  | </deployment>
  | 

However, it is not working properly in AS yet, I get the following errors for the asynchronous beans

  | 13:13:29,126 ERROR [AbstractKernelController] Error installing to Create: name=CacheManager state=Create mode=Asynchronous requiredState=Installed
  | java.lang.Exception: Error calling callback JMXCreateDestroyAdvice for target context CacheManager
  | 	at org.jboss.dependency.plugins.AbstractLifecycleCallbackItem.install(AbstractLifecycleCallbackItem.java:91)
  | 	at org.jboss.dependency.plugins.AbstractController.handleLifecycleCallbacks(AbstractController.java:1687)
  | 	at org.jboss.dependency.plugins.AbstractController.handleInstallLifecycleCallbacks(AbstractController.java:1652)
  | 	at org.jboss.dependency.plugins.AbstractController.incrementState(AbstractController.java:961)
  | 	at org.jboss.dependency.plugins.AbstractController.executeOrIncrementStateDirectly(AbstractController.java:1187)
  | 	at org.jboss.dependency.plugins.AbstractController.resolveContexts(AbstractController.java:1105)
  | 	at org.jboss.dependency.plugins.AbstractController.resolveContexts(AbstractController.java:1002)
  | 	at org.jboss.dependency.plugins.AbstractController.install(AbstractController.java:792)
  | 	at org.jboss.dependency.plugins.AbstractController.install(AbstractController.java:557)
  | 	at org.jboss.system.ServiceController.doInstall(ServiceController.java:653)
  | 	at org.jboss.system.ServiceController.register(ServiceController.java:356)
  | 	at org.jboss.system.microcontainer.jmx.ServiceControllerRegistrationLifecycleCallback.install(ServiceControllerRegistrationLifecycleCallback.java:104)
  | 	at sun.reflect.GeneratedMethodAccessor243.invoke(Unknown Source)
  | 	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
  | 	at java.lang.reflect.Method.invoke(Method.java:585)
  | 	at org.jboss.reflect.plugins.introspection.ReflectionUtils.invoke(ReflectionUtils.java:59)
  | 	at org.jboss.reflect.plugins.introspection.ReflectMethodInfoImpl.invoke(ReflectMethodInfoImpl.java:150)
  | 	at org.jboss.joinpoint.plugins.BasicMethodJoinPoint.dispatch(BasicMethodJoinPoint.java:66)
  | 	at org.jboss.beans.info.plugins.AbstractBeanInfo.invoke(AbstractBeanInfo.java:300)
  | 	at org.jboss.kernel.plugins.dependency.AbstractKernelControllerContext.invoke(AbstractKernelControllerContext.java:291)
  | 	at org.jboss.dependency.plugins.AbstractLifecycleCallbackItem.install(AbstractLifecycleCallbackItem.java:87)
  | 	at org.jboss.dependency.plugins.AbstractController.handleLifecycleCallbacks(AbstractController.java:1687)
  | 	at org.jboss.dependency.plugins.AbstractController.handleInstallLifecycleCallbacks(AbstractController.java:1652)
  | 	at org.jboss.dependency.plugins.AbstractController.incrementState(AbstractController.java:961)
  | 	at org.jboss.dependency.plugins.AbstractController$InstallControllerContextTask.installMyContext(AbstractController.java:2240)
  | 	at org.jboss.dependency.plugins.AbstractController$InstallControllerContextTask.run(AbstractController.java:2185)
  | 	at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:651)
  | 	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:676)
  | 	at java.lang.Thread.run(Thread.java:613)
  | Caused by: java.lang.IllegalStateException: jboss.cache:service=CacheManager is already installed.
  | 	at org.jboss.dependency.plugins.AbstractController.install(AbstractController.java:733)
  | 	at org.jboss.dependency.plugins.AbstractController.install(AbstractController.java:557)
  | 	at org.jboss.system.ServiceController.doInstall(ServiceController.java:653)
  | 	at org.jboss.system.ServiceController.register(ServiceController.java:356)
  | 	at org.jboss.system.ServiceController.register(ServiceController.java:325)
  | 	at org.jboss.system.ServiceController.register(ServiceController.java:312)
  | 	at org.jboss.system.ServiceController.create(ServiceController.java:387)
  | 	at org.jboss.system.ServiceController.create(ServiceController.java:370)
  | 	at org.jboss.system.microcontainer.jmx.ServiceControllerCreateDestroyLifecycleCallback.install(ServiceControllerCreateDestroyLifecycleCallback.java:44)
  | 	at sun.reflect.GeneratedMethodAccessor251.invoke(Unknown Source)
  | 	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
  | 	at java.lang.reflect.Method.invoke(Method.java:585)
  | 	at org.jboss.reflect.plugins.introspection.ReflectionUtils.invoke(ReflectionUtils.java:59)
  | 	at org.jboss.reflect.plugins.introspection.ReflectMethodInfoImpl.invoke(ReflectMethodInfoImpl.java:150)
  | 	at org.jboss.joinpoint.plugins.BasicMethodJoinPoint.dispatch(BasicMethodJoinPoint.java:66)
  | 	at org.jboss.beans.info.plugins.AbstractBeanInfo.invoke(AbstractBeanInfo.java:300)
  | 	at org.jboss.kernel.plugins.dependency.AbstractKernelControllerContext.invoke(AbstractKernelControllerContext.java:291)
  | 	at org.jboss.dependency.plugins.AbstractLifecycleCallbackItem.install(AbstractLifecycleCallbackItem.java:87)
  | 	... 28 more
  | 
This error does not happen if I remove 'mode="Asynchronous"' from the beans. I'll add some more tests to core kernel to see if lifecycle callbacks are handled properly for asynchronous beans.

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

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



More information about the jboss-dev-forums mailing list