[Design the new POJO MicroContainer] - Re: ClassLoader injection Scope issue
by alesj
"adrian(a)jboss.org" wrote : My guess is that this has nothing to do with JBossAS?
| There is nothing that I'm aware of in JBossAS that does anything different.
|
This example (see my initial post's top) is taken from my MC demos - as part of DZone articles:
- http://anonsvn.jboss.org/repos/jbossas/projects/demos/microcontainer/trunk/
Afaik the example looks legit.
CB1 bean wants to use currently defined classloader (custom-classloader) as its classloader.
And as I explained, or at least tried to explain :-),
the difference from JBossAS and this example is in how those files get deployed:
JBossAS; ServerImpl class:
| log.debug("BootstrapURLs=" + bootstrapURLs);
|
| // Create an xml deployer
| kernelDeployer = new BasicXMLDeployer(kernel);
| try
| {
| // Deploy the bootstrap urls
| for (String bootstrapURL : bootstrapURLs)
| {
| url = new URL(configURL, bootstrapURL);
| kernelDeployer.deploy(url);
| }
|
| // Check it is complete
| kernelDeployer.validate();
|
--> direct install into kernel --> no BeanMetaDataDeployer --> no scope merging
My example:
- http://anonsvn.jboss.org/repos/jbossas/projects/demos/microcontainer/trun...
goes over BeanMDDeployer --> scope merging.
Scope merging requires CL to already be set - see previous post's exception.
And to my knowledge, no other -beans.xml in JBossAS uses
this classloader schema + setting this newly created cl as deployments cl,
except the files referenced in bootstrap.xml.
"adrian(a)jboss.org" wrote :
| To use the VFSClassLoaderFactory you need to have the
| ClassLoading/ClassLoaderSystem deployed first.
|
| If you don't do this is a seperate deployment up-front
| (see Common.xml in the classloading-vfs tests)
| then you need to make sure these don't depend on the vfs classloader
| you want to construct otherwise you'll get a "circular dependency".
|
| See conf/classloader.xml in jboss.xml (note they are first with classloader==null)
|
I already have all of these.
My demos use simplified version of JBoss5 bootstrap.
See bootstrap and jmx sub-projects in demos project:
- http://anonsvn.jboss.org/repos/jbossas/projects/demos/microcontainer/trun...
- http://anonsvn.jboss.org/repos/jbossas/projects/demos/microcontainer/trun...
"adrian(a)jboss.org" wrote :
| I quote "circular dependency" because it is not really a circular dependency,
| what actually happens is that the classloader (which automatically has classloader=null)
| gets re-ordered to be before the ClassLoading being deployed and so it won't get
| registered using the incallback before you want to want to do
| "ClassLoading".getClassLoader().
|
| Or more schematically:
| 1) deploy ClassLoading
| 2) deploy ClassLoader
| 3) ClassLoading depends on ClassLoader (because classloader != null)
| 4) ClassLoading Module for ClassLoader is created but not registered with
| ClassLoading (no incallback yet)
| 5) Try Configurator.getBeanMetaData("ClassLoading") // ERROR it didn't go through the ClassLoading!
| 6) If (5) worked then it would register the incallback for "ClassLoading"
| and the ClassLoader would properly be constructed.
|
| NOTE (5) could also be any request to get the classloader if its ClassLoadingModule
| hasn't been registered with ClassLoading to resolve and create the classloader.
Is this all about how classloader.xml is eventually deployed/installed?
Since I don't see how it's related to my problem.
View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4185109#4185109
Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4185109
16 years
[Design the new POJO MicroContainer] - Re: ClassLoader injection Scope issue
by adrian@jboss.org
My guess is that this has nothing to do with JBossAS?
There is nothing that I'm aware of in JBossAS that does anything different.
To use the VFSClassLoaderFactory you need to have the
ClassLoading/ClassLoaderSystem deployed first.
If you don't do this is a seperate deployment up-front
(see Common.xml in the classloading-vfs tests)
then you need to make sure these don't depend on the vfs classloader
you want to construct otherwise you'll get a "circular dependency".
See conf/classloader.xml in jboss.xml (note they are first with classloader==null)
I quote "circular dependency" because it is not really a circular dependency,
what actually happens is that the classloader (which automatically has classloader=null)
gets re-ordered to be before the ClassLoading being deployed and so it won't get
registered using the incallback before you want to want to do
"ClassLoading".getClassLoader().
Or more schematically:
1) deploy ClassLoading
2) deploy ClassLoader
3) ClassLoading depends on ClassLoader (because classloader != null)
4) ClassLoading Module for ClassLoader is created but not registered with
ClassLoading (no incallback yet)
5) Try Configurator.getBeanMetaData("ClassLoading") // ERROR it didn't go through the ClassLoading!
6) If (5) worked then it would register the incallback for "ClassLoading"
and the ClassLoader would properly be constructed.
NOTE (5) could also be any request to get the classloader if its ClassLoadingModule
hasn't been registered with ClassLoading to resolve and create the classloader.
View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4185105#4185105
Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4185105
16 years
[Design of POJO Server] - Re: JBAS-6104; slow Seam deployments
by stan.silvert@jboss.com
So I'm still seeing a problem using AS trunk and Seam trunk (both as of yesterday).
Steps to reproduce:
1) Run seam-booking and book a hotel.
2) Undeploy seam-booking. You will see this stack trace:
| 08:25:16,795 WARN [Component] Exception calling stateful session bean default @
| Remove method: hotelSearch
| org.jboss.ejb3.common.registrar.spi.NotBoundException: Requested value bound at
| name "jboss.j2ee:ear=jboss-seam-booking.ear,jar=jboss-seam-booking.jar,name=Hote
| lSearchingAction,service=EJB3" is not bound.
| at org.jboss.ejb3.common.registrar.plugin.mc.Ejb3McRegistrar.lookup(Ejb3
| McRegistrar.java:157)
| at org.jboss.ejb3.common.registrar.plugin.mc.Ejb3McRegistrar.lookup(Ejb3
| McRegistrar.java:133)
| at org.jboss.ejb3.proxy.handler.session.SessionProxyInvocationHandlerBas
| e.getContainerLocally(SessionProxyInvocationHandlerBase.java:80)
| at org.jboss.ejb3.proxy.handler.session.stateful.StatefulLocalProxyInvoc
| ationHandler.getContainer(StatefulLocalProxyInvocationHandler.java:87)
| at org.jboss.ejb3.proxy.handler.session.SessionSpecProxyInvocationHandle
| rBase.invoke(SessionSpecProxyInvocationHandlerBase.java:111)
| at $Proxy247.destroy(Unknown Source)
| at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
| at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.
| java:39)
| at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces
| sorImpl.java:25)
| at java.lang.reflect.Method.invoke(Method.java:585)
| at org.jboss.seam.util.Reflections.invoke(Reflections.java:22)
| at org.jboss.seam.intercept.RootInvocationContext.proceed(RootInvocation
| Context.java:31)
| at org.jboss.seam.intercept.ClientSideInterceptor$1.proceed(ClientSideIn
| terceptor.java:76)
| at org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamInvocation
| Context.java:56)
| at org.jboss.seam.security.SecurityInterceptor.aroundInvoke(SecurityInte
| rceptor.java:157)
| at org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamInvocation
| Context.java:68)
| at org.jboss.seam.ejb.RemoveInterceptor.aroundInvoke(RemoveInterceptor.j
| ava:43)
| at org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamInvocation
| Context.java:68)
| at org.jboss.seam.core.SynchronizationInterceptor.aroundInvoke(Synchroni
| zationInterceptor.java:32)
| at org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamInvocation
| Context.java:68)
| at org.jboss.seam.intercept.RootInterceptor.invoke(RootInterceptor.java:
| 107)
| at org.jboss.seam.intercept.ClientSideInterceptor.invoke(ClientSideInter
| ceptor.java:54)
| at org.javassist.tmp.java.lang.Object_$$_javassist_4.destroy(Object_$$_j
| avassist_4.java)
| at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
| at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.
| java:39)
| at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces
| sorImpl.java:25)
| at java.lang.reflect.Method.invoke(Method.java:585)
| at org.jboss.seam.util.Reflections.invoke(Reflections.java:22)
| at org.jboss.seam.util.Reflections.invokeAndWrap(Reflections.java:138)
| at org.jboss.seam.Component.callComponentMethod(Component.java:2210)
| at org.jboss.seam.Component.callDefaultRemoveMethod(Component.java:2115)
|
| at org.jboss.seam.Component.destroy(Component.java:1445)
| at org.jboss.seam.contexts.Contexts.destroy(Contexts.java:251)
| at org.jboss.seam.contexts.Lifecycle.endSession(Lifecycle.java:249)
| at org.jboss.seam.contexts.ServletLifecycle.endSession(ServletLifecycle.
| java:146)
| at org.jboss.seam.servlet.SeamListener.sessionDestroyed(SeamListener.jav
| a:49)
| at org.apache.catalina.session.StandardSession.expire(StandardSession.ja
| va:702)
| at org.apache.catalina.session.StandardSession.expire(StandardSession.ja
| va:660)
| at org.apache.catalina.session.StandardManager.stop(StandardManager.java
| :675)
| at org.apache.catalina.core.StandardContext.stop(StandardContext.java:45
| 88)
| at org.apache.catalina.core.ContainerBase.destroy(ContainerBase.java:117
| 5)
| at org.apache.catalina.core.StandardContext.destroy(StandardContext.java
| :4682)
| at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
| at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.
| java:39)
| at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces
| sorImpl.java:25)
| at java.lang.reflect.Method.invoke(Method.java:585)
| at org.apache.tomcat.util.modeler.BaseModelMBean.invoke(BaseModelMBean.j
| ava:297)
| at org.jboss.mx.server.RawDynamicInvoker.invoke(RawDynamicInvoker.java:1
| 64)
| at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:668)
| at org.jboss.web.tomcat.service.deployers.TomcatDeployment.performUndepl
| oyInternal(TomcatDeployment.java:677)
| at org.jboss.web.tomcat.service.deployers.TomcatDeployment.performUndepl
| oy(TomcatDeployment.java:650)
| at org.jboss.web.deployers.AbstractWarDeployment.stop(AbstractWarDeploym
| ent.java:480)
| at org.jboss.web.deployers.WebModule.stopModule(WebModule.java:134)
| at org.jboss.web.deployers.WebModule.stop(WebModule.java:101)
| at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
| at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.
| java:39)
| at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces
| sorImpl.java:25)
| at java.lang.reflect.Method.invoke(Method.java:585)
| at org.jboss.mx.interceptor.ReflectedDispatcher.invoke(ReflectedDispatch
| er.java:157)
| at org.jboss.mx.server.Invocation.dispatch(Invocation.java:96)
| at org.jboss.mx.server.Invocation.invoke(Invocation.java:88)
| at org.jboss.mx.server.AbstractMBeanInvoker.invoke(AbstractMBeanInvoker.
| java:264)
| at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:668)
| at org.jboss.system.microcontainer.ServiceProxy.invoke(ServiceProxy.java
| :206)
| at $Proxy35.stop(Unknown Source)
| at org.jboss.system.microcontainer.StartStopLifecycleAction.uninstallAct
| ion(StartStopLifecycleAction.java:56)
| at org.jboss.system.microcontainer.StartStopLifecycleAction.uninstallAct
| ion(StartStopLifecycleAction.java:37)
| at org.jboss.dependency.plugins.action.SimpleControllerContextAction.sim
| pleUninstallAction(SimpleControllerContextAction.java:79)
| at org.jboss.dependency.plugins.action.AccessControllerContextAction.uni
| nstall(AccessControllerContextAction.java:131)
| at org.jboss.dependency.plugins.AbstractControllerContextActions.uninsta
| ll(AbstractControllerContextActions.java:58)
| at org.jboss.dependency.plugins.AbstractControllerContext.uninstall(Abst
| ractControllerContext.java:354)
| at org.jboss.dependency.plugins.AbstractController.uninstall(AbstractCon
| troller.java:1631)
| at org.jboss.dependency.plugins.AbstractController.uninstallContext(Abst
| ractController.java:1242)
| at org.jboss.dependency.plugins.AbstractController.change(AbstractContro
| ller.java:827)
| at org.jboss.dependency.plugins.AbstractController.change(AbstractContro
| ller.java:553)
| at org.jboss.system.ServiceController.doChange(ServiceController.java:67
| 2)
| at org.jboss.system.ServiceController.stop(ServiceController.java:494)
| at org.jboss.system.deployers.ServiceDeployer.stop(ServiceDeployer.java:
| 153)
| at org.jboss.system.deployers.ServiceDeployer.undeploy(ServiceDeployer.j
| ava:133)
| at org.jboss.system.deployers.ServiceDeployer.undeploy(ServiceDeployer.j
| ava:45)
| at org.jboss.deployers.spi.deployer.helpers.AbstractSimpleRealDeployer.i
| nternalUndeploy(AbstractSimpleRealDeployer.java:69)
| at org.jboss.deployers.spi.deployer.helpers.AbstractRealDeployer.undeplo
| y(AbstractRealDeployer.java:112)
| at org.jboss.deployers.plugins.deployers.DeployerWrapper.undeploy(Deploy
| erWrapper.java:196)
| at org.jboss.deployers.plugins.deployers.DeployersImpl.doUndeploy(Deploy
| ersImpl.java:1440)
| at org.jboss.deployers.plugins.deployers.DeployersImpl.doUninstallParent
| Last(DeployersImpl.java:1347)
| at org.jboss.deployers.plugins.deployers.DeployersImpl.doUninstallParent
| Last(DeployersImpl.java:1340)
| at org.jboss.deployers.plugins.deployers.DeployersImpl.doUninstallParent
| Last(DeployersImpl.java:1327)
| at org.jboss.deployers.plugins.deployers.DeployersImpl.uninstall(Deploye
| rsImpl.java:1302)
| at org.jboss.dependency.plugins.AbstractControllerContext.uninstall(Abst
| ractControllerContext.java:354)
| at org.jboss.dependency.plugins.AbstractController.uninstall(AbstractCon
| troller.java:1631)
| at org.jboss.dependency.plugins.AbstractController.uninstallContext(Abst
| ractController.java:1242)
| at org.jboss.dependency.plugins.AbstractController.change(AbstractContro
| ller.java:827)
| at org.jboss.dependency.plugins.AbstractController.change(AbstractContro
| ller.java:553)
| at org.jboss.deployers.plugins.deployers.DeployersImpl.process(Deployers
| Impl.java:665)
| at org.jboss.deployers.plugins.main.MainDeployerImpl.process(MainDeploye
| rImpl.java:541)
| at org.jboss.system.server.profileservice.hotdeploy.HDScanner.scan(HDSca
| nner.java:290)
| at org.jboss.system.server.profileservice.hotdeploy.HDScanner.run(HDScan
| ner.java:221)
| at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:41
| 7)
| at java.util.concurrent.FutureTask$Sync.innerRunAndReset(FutureTask.java
| :280)
| at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:135)
| at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.
| access$101(ScheduledThreadPoolExecutor.java:65)
| at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.
| runPeriodic(ScheduledThreadPoolExecutor.java:142)
| at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.
| run(ScheduledThreadPoolExecutor.java:166)
| at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExec
| utor.java:650)
| at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor
| .java:675)
| at java.lang.Thread.run(Thread.java:595)
| 08:25:16,874 WARN [Component] Exception calling stateful session bean default @
| Remove method: bookingList
| org.jboss.ejb3.common.registrar.spi.NotBoundException: Requested value bound at
| name "jboss.j2ee:ear=jboss-seam-booking.ear,jar=jboss-seam-booking.jar,name=Book
| ingListAction,service=EJB3" is not bound.
| at org.jboss.ejb3.common.registrar.plugin.mc.Ejb3McRegistrar.lookup(Ejb3
| McRegistrar.java:157)
| at org.jboss.ejb3.common.registrar.plugin.mc.Ejb3McRegistrar.lookup(Ejb3
| McRegistrar.java:133)
| at org.jboss.ejb3.proxy.handler.session.SessionProxyInvocationHandlerBas
| e.getContainerLocally(SessionProxyInvocationHandlerBase.java:80)
| at org.jboss.ejb3.proxy.handler.session.stateful.StatefulLocalProxyInvoc
| ationHandler.getContainer(StatefulLocalProxyInvocationHandler.java:87)
| at org.jboss.ejb3.proxy.handler.session.SessionSpecProxyInvocationHandle
| rBase.invoke(SessionSpecProxyInvocationHandlerBase.java:111)
| at $Proxy248.destroy(Unknown Source)
| at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
| at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.
| java:39)
| at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces
| sorImpl.java:25)
| at java.lang.reflect.Method.invoke(Method.java:585)
| at org.jboss.seam.util.Reflections.invoke(Reflections.java:22)
| at org.jboss.seam.intercept.RootInvocationContext.proceed(RootInvocation
| Context.java:31)
| at org.jboss.seam.intercept.ClientSideInterceptor$1.proceed(ClientSideIn
| terceptor.java:76)
| at org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamInvocation
| Context.java:56)
| at org.jboss.seam.security.SecurityInterceptor.aroundInvoke(SecurityInte
| rceptor.java:157)
| at org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamInvocation
| Context.java:68)
| at org.jboss.seam.ejb.RemoveInterceptor.aroundInvoke(RemoveInterceptor.j
| ava:43)
| at org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamInvocation
| Context.java:68)
| at org.jboss.seam.core.SynchronizationInterceptor.aroundInvoke(Synchroni
| zationInterceptor.java:32)
| at org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamInvocation
| Context.java:68)
| at org.jboss.seam.intercept.RootInterceptor.invoke(RootInterceptor.java:
| 107)
| at org.jboss.seam.intercept.ClientSideInterceptor.invoke(ClientSideInter
| ceptor.java:54)
| at org.javassist.tmp.java.lang.Object_$$_javassist_5.destroy(Object_$$_j
| avassist_5.java)
| at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
| at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.
| java:39)
| at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces
| sorImpl.java:25)
| at java.lang.reflect.Method.invoke(Method.java:585)
| at org.jboss.seam.util.Reflections.invoke(Reflections.java:22)
| at org.jboss.seam.util.Reflections.invokeAndWrap(Reflections.java:138)
| at org.jboss.seam.Component.callComponentMethod(Component.java:2210)
| at org.jboss.seam.Component.callDefaultRemoveMethod(Component.java:2115)
|
| at org.jboss.seam.Component.destroy(Component.java:1445)
| at org.jboss.seam.contexts.Contexts.destroy(Contexts.java:251)
| at org.jboss.seam.contexts.Lifecycle.endSession(Lifecycle.java:249)
| at org.jboss.seam.contexts.ServletLifecycle.endSession(ServletLifecycle.
| java:146)
| at org.jboss.seam.servlet.SeamListener.sessionDestroyed(SeamListener.jav
| a:49)
| at org.apache.catalina.session.StandardSession.expire(StandardSession.ja
| va:702)
| at org.apache.catalina.session.StandardSession.expire(StandardSession.ja
| va:660)
| at org.apache.catalina.session.StandardManager.stop(StandardManager.java
| :675)
| at org.apache.catalina.core.StandardContext.stop(StandardContext.java:45
| 88)
| at org.apache.catalina.core.ContainerBase.destroy(ContainerBase.java:117
| 5)
| at org.apache.catalina.core.StandardContext.destroy(StandardContext.java
| :4682)
| at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
| at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.
| java:39)
| at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces
| sorImpl.java:25)
| at java.lang.reflect.Method.invoke(Method.java:585)
| at org.apache.tomcat.util.modeler.BaseModelMBean.invoke(BaseModelMBean.j
| ava:297)
| at org.jboss.mx.server.RawDynamicInvoker.invoke(RawDynamicInvoker.java:1
| 64)
| at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:668)
| at org.jboss.web.tomcat.service.deployers.TomcatDeployment.performUndepl
| oyInternal(TomcatDeployment.java:677)
| at org.jboss.web.tomcat.service.deployers.TomcatDeployment.performUndepl
| oy(TomcatDeployment.java:650)
| at org.jboss.web.deployers.AbstractWarDeployment.stop(AbstractWarDeploym
| ent.java:480)
| at org.jboss.web.deployers.WebModule.stopModule(WebModule.java:134)
| at org.jboss.web.deployers.WebModule.stop(WebModule.java:101)
| at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
| at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.
| java:39)
| at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces
| sorImpl.java:25)
| at java.lang.reflect.Method.invoke(Method.java:585)
| at org.jboss.mx.interceptor.ReflectedDispatcher.invoke(ReflectedDispatch
| er.java:157)
| at org.jboss.mx.server.Invocation.dispatch(Invocation.java:96)
| at org.jboss.mx.server.Invocation.invoke(Invocation.java:88)
| at org.jboss.mx.server.AbstractMBeanInvoker.invoke(AbstractMBeanInvoker.
| java:264)
| at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:668)
| at org.jboss.system.microcontainer.ServiceProxy.invoke(ServiceProxy.java
| :206)
| at $Proxy35.stop(Unknown Source)
| at org.jboss.system.microcontainer.StartStopLifecycleAction.uninstallAct
| ion(StartStopLifecycleAction.java:56)
| at org.jboss.system.microcontainer.StartStopLifecycleAction.uninstallAct
| ion(StartStopLifecycleAction.java:37)
| at org.jboss.dependency.plugins.action.SimpleControllerContextAction.sim
| pleUninstallAction(SimpleControllerContextAction.java:79)
| at org.jboss.dependency.plugins.action.AccessControllerContextAction.uni
| nstall(AccessControllerContextAction.java:131)
| at org.jboss.dependency.plugins.AbstractControllerContextActions.uninsta
| ll(AbstractControllerContextActions.java:58)
| at org.jboss.dependency.plugins.AbstractControllerContext.uninstall(Abst
| ractControllerContext.java:354)
| at org.jboss.dependency.plugins.AbstractController.uninstall(AbstractCon
| troller.java:1631)
| at org.jboss.dependency.plugins.AbstractController.uninstallContext(Abst
| ractController.java:1242)
| at org.jboss.dependency.plugins.AbstractController.change(AbstractContro
| ller.java:827)
| at org.jboss.dependency.plugins.AbstractController.change(AbstractContro
| ller.java:553)
| at org.jboss.system.ServiceController.doChange(ServiceController.java:67
| 2)
| at org.jboss.system.ServiceController.stop(ServiceController.java:494)
| at org.jboss.system.deployers.ServiceDeployer.stop(ServiceDeployer.java:
| 153)
| at org.jboss.system.deployers.ServiceDeployer.undeploy(ServiceDeployer.j
| ava:133)
| at org.jboss.system.deployers.ServiceDeployer.undeploy(ServiceDeployer.j
| ava:45)
| at org.jboss.deployers.spi.deployer.helpers.AbstractSimpleRealDeployer.i
| nternalUndeploy(AbstractSimpleRealDeployer.java:69)
| at org.jboss.deployers.spi.deployer.helpers.AbstractRealDeployer.undeplo
| y(AbstractRealDeployer.java:112)
| at org.jboss.deployers.plugins.deployers.DeployerWrapper.undeploy(Deploy
| erWrapper.java:196)
| at org.jboss.deployers.plugins.deployers.DeployersImpl.doUndeploy(Deploy
| ersImpl.java:1440)
| at org.jboss.deployers.plugins.deployers.DeployersImpl.doUninstallParent
| Last(DeployersImpl.java:1347)
| at org.jboss.deployers.plugins.deployers.DeployersImpl.doUninstallParent
| Last(DeployersImpl.java:1340)
| at org.jboss.deployers.plugins.deployers.DeployersImpl.doUninstallParent
| Last(DeployersImpl.java:1327)
| at org.jboss.deployers.plugins.deployers.DeployersImpl.uninstall(Deploye
| rsImpl.java:1302)
| at org.jboss.dependency.plugins.AbstractControllerContext.uninstall(Abst
| ractControllerContext.java:354)
| at org.jboss.dependency.plugins.AbstractController.uninstall(AbstractCon
| troller.java:1631)
| at org.jboss.dependency.plugins.AbstractController.uninstallContext(Abst
| ractController.java:1242)
| at org.jboss.dependency.plugins.AbstractController.change(AbstractContro
| ller.java:827)
| at org.jboss.dependency.plugins.AbstractController.change(AbstractContro
| ller.java:553)
| at org.jboss.deployers.plugins.deployers.DeployersImpl.process(Deployers
| Impl.java:665)
| at org.jboss.deployers.plugins.main.MainDeployerImpl.process(MainDeploye
| rImpl.java:541)
| at org.jboss.system.server.profileservice.hotdeploy.HDScanner.scan(HDSca
| nner.java:290)
| at org.jboss.system.server.profileservice.hotdeploy.HDScanner.run(HDScan
| ner.java:221)
| at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:41
| 7)
| at java.util.concurrent.FutureTask$Sync.innerRunAndReset(FutureTask.java
| :280)
| at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:135)
| at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.
| access$101(ScheduledThreadPoolExecutor.java:65)
| at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.
| runPeriodic(ScheduledThreadPoolExecutor.java:142)
| at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.
| run(ScheduledThreadPoolExecutor.java:166)
| at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExec
| utor.java:650)
| at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor
| .java:675)
| at java.lang.Thread.run(Thread.java:595)
| 08:25:16,998 INFO [SessionSpecContainer] Stopping jboss.j2ee:ear=jboss-seam-boo
| king.ear,jar=jboss-seam.jar,name=EjbSynchronizations,service=EJB3
| 08:25:16,999 INFO [EJBContainer] STOPPED EJB: org.jboss.seam.transaction.EjbSyn
| chronizations ejbName: EjbSynchronizations
| 08:25:17,045 INFO [SessionSpecContainer] Stopping jboss.j2ee:ear=jboss-seam-boo
| king.ear,jar=jboss-seam.jar,name=TimerServiceDispatcher,service=EJB3
| 08:25:17,047 INFO [EJBContainer] STOPPED EJB: org.jboss.seam.async.TimerService
| Dispatcher ejbName: TimerServiceDispatcher
3) Deploy seam-numberguess
It takes about 30 seconds before you start to see any message in the console, but if you look at the server.log you can see pauses of about 10-14 seconds between debug messages:
2008-10-28 08:29:04,545 DEBUG [com.arjuna.ats.jta.logging.loggerI18N] (Thread-12) [com.arjuna.ats.internal.jta.recovery.info.firstpass] Local XARecoveryModule - first pass
| 2008-10-28 08:29:14,545 DEBUG [com.arjuna.ats.arjuna.logging.arjLogger] (Thread-12) Periodic recovery - second pass <Tue, 28 Oct 2008 08:29:14>
2008-10-28 08:29:14,545 DEBUG [com.arjuna.ats.jta.logging.loggerI18N] (Thread-12) [com.arjuna.ats.internal.jta.recovery.info.secondpass] Local XARecoveryModule - second pass
| 2008-10-28 08:29:28,578 DEBUG [org.jboss.metadata.process.chain.ejb.jboss.JBossMetaDataProcessorChain] (HDScanner) Added Processor
You finally see that the TomcatDeployment says the ctxPath is ready, but the deployment is not done. If you try to hit the page at 8:29:30, you will get a 404. It actually takes another 1 minute and 19 seconds before it finishes the deployment.
08:29:30,017 INFO [TomcatDeployment] deploy, ctxPath=/seam-numberguess, vfsUrl=
| jboss-seam-numberguess.ear/jboss-seam-numberguess.war
| 08:29:30,339 INFO [ServletContextListener] Welcome to Seam 2.1.1-SNAPSHOT
| 08:30:49,756 INFO [Initialization] Namespace: http://jboss.com/products/seam/in
| ternational, package: org.jboss.seam.international, prefix: org.jboss.seam.inter
| national
Altogether, deployment of seam-numberguess took about 2 minutes with several pauses.
Shane, can you reproduce this?
Stan
View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4185079#4185079
Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4185079
16 years
[Design of JBoss jBPM] - Re: Analytical and operational dashboards
by kukeltje
A low level API is indeed not interesting enough certainly not in relation to the amount of work it will take. What (imo) is interesting though is getting access to outcome of the queries and to the images. The company I work(ed) for want's to show this data in the webapp of the specific application for several reasons:
- marketing wise (look and feel)
- authorization wise (often already implemented in that app, implementing it also in the/a/one of the consoles is double (or more) work
- functionality wise (they can decide what to show, what not etc.) Give labels a name etc (see also response below)
anonymous wrote :
| Are there any plans to support business indicators (KPIs)? Because people usually don't really reason about "the number of process instances", more about "outstanding orders",
|
Since this is very process specific, (labels), information from processdefinitions (process name, task name etc.) can (should?) be used to overcome this.
>From my (not very broad, but still) experience, the time to complete an order (one specific I assume you mean here) is only partly interesting. It is combinations of data that tells a manager how to act.
Some small examples:
- number of open orders goes up, average of the duration of handling an (from the moment is is really being acted upon) stays the same, then the conclusion is that there are more orders coming in then can be handled. 'Downdrilling' is not needed
- If the number of open goes up, but the average also goes up and the average of a processdef. (including stdv) also goes up, then there most likely is a bottleneck in an external actor (system or human) being used. Downdrilling to the individual times of nodes is interesting then to see which task/node/... is causing the problem and downdrilling to get detailed info of e.g. this tasknode can be needed, e.g. is on human always slower than others, is a generic system always slow, or is it related to data!. The latter may sound strange, but we've had an issue where a fraud system required a licenseplate number to be passed to it where the customers told us they did not want a check on validity (e.g. is the combination of characters a probably existing one). So many users used '000000' for that in specific circumstances that the system became slow when searching for possible fraudulent actions with this license plate number).
To me, these are 'fairly simple' to implement when using e.g. Pentaho and these are operational. Thresholds are needed to be able to have a clean/empty dashboard when everything is within configured thresholds. The tresholds themselves can come from analytical data
View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4185054#4185054
Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4185054
16 years