[Design of Management Features on JBoss] - Re: ManagedObjects for MBeans
by scott.stark@jboss.org
I have expanded the ProxyManagedDeploymentFactory to support multiple mbeans under a single MBeanDeployment so that a single ManagedDeployment results. Now all three of the war related mbean types are found under a single ManagedDeployment, for example, the jmx-console has the following ProfileServiceDebugServlet view:
| ManagedDeployment: //localhost/jmx-console
| +++ ManagedComponent(name=jboss.web:host=localhost,path=/jmx-console,type=Manager, type=(ComponentType{type=MBean, subtype=WebApplicationManager}), compName=jboss.web:host=localhost,path=/jmx-console,type=Manager, attachment: null
| ++++++ properties: [sessionIdLength, maxInactiveInterval, expiredSessions, entropy, sessionCounter, maxActiveSessions, className, processingTime, algorithm, processExpiresFrequency, rejectedSessions, sessionAverageAliveTime, randomFile, modelerType, duplicates, pathname, sessionMaxAliveTime, activeSessions, name, maxActive, distributable]
| +++ ManagedComponent(name=jboss.web:J2EEApplication=none,J2EEServer=none,j2eeType=WebModule,name=//localhost/jmx-console, type=(ComponentType{type=MBean, subtype=WebApplication}), compName=jboss.web:J2EEApplication=none,J2EEServer=none,j2eeType=WebModule,name=//localhost/jmx-console, attachment: null
| ++++++ properties: [privileged, compilerClasspath, crossContext, swallowOutput, antiResourceLocking, caseSensitive, cookies, workDir, loader, unloadDelay, path, managedResource, objectName, servlets, tldScanTime, realm, namingContextListener, configFile, modelerType, saveConfig, stateManageable, state, eventProvider, cacheTTL, cachingAllowed, cacheObjectMaxSize, startupTime, statisticsProvider, javaVMs, manager, staticResources, override, docBase, defaultContextXml, server, startTime, defaultWebXml, deploymentDescriptor, mappingObject, parentClassLoader, processingTime, useNaming, delegate, antiJARLocking, valveObjectNames, cacheMaxSize, logger, engineName, allowLinking, children, reloadable, welcomeFiles]
| +++ ManagedComponent(name=jboss.web:J2EEApplication=none,J2EEServer=none,WebModule=//localhost/jmx-console,j2eeType=Servlet,name=DisplayOpResult, type=(ComponentType{type=MBean, subtype=Servlet}), compName=jboss.web:J2EEApplication=none,J2EEServer=none,WebModule=//localhost/jmx-console,j2eeType=Servlet,name=DisplayOpResult, attachment: null
| ++++++ properties: [objectName, minTime, statisticsProvider, loadTime, classLoadTime, processingTime, requestCount, modelerType, errorCount, stateManageable, eventProvider, engineName, maxTime]
| +++ ManagedComponent(name=jboss.web:J2EEApplication=none,J2EEServer=none,WebModule=//localhost/jmx-console,j2eeType=Servlet,name=jsp, type=(ComponentType{type=MBean, subtype=Servlet}), compName=jboss.web:J2EEApplication=none,J2EEServer=none,WebModule=//localhost/jmx-console,j2eeType=Servlet,name=jsp, attachment: null
| ++++++ properties: [objectName, minTime, statisticsProvider, loadTime, classLoadTime, processingTime, requestCount, modelerType, errorCount, stateManageable, eventProvider, engineName, maxTime]
| +++ ManagedComponent(name=jboss.web:J2EEApplication=none,J2EEServer=none,WebModule=//localhost/jmx-console,j2eeType=Servlet,name=ProfileServiceDebugServlet, type=(ComponentType{type=MBean, subtype=Servlet}), compName=jboss.web:J2EEApplication=none,J2EEServer=none,WebModule=//localhost/jmx-console,j2eeType=Servlet,name=ProfileServiceDebugServlet, attachment: null
| ++++++ properties: [objectName, minTime, statisticsProvider, loadTime, classLoadTime, processingTime, requestCount, modelerType, errorCount, stateManageable, eventProvider, engineName, maxTime]
| +++ ManagedComponent(name=jboss.web:J2EEApplication=none,J2EEServer=none,WebModule=//localhost/jmx-console,j2eeType=Servlet,name=default, type=(ComponentType{type=MBean, subtype=Servlet}), compName=jboss.web:J2EEApplication=none,J2EEServer=none,WebModule=//localhost/jmx-console,j2eeType=Servlet,name=default, attachment: null
| ++++++ properties: [objectName, minTime, statisticsProvider, loadTime, classLoadTime, processingTime, requestCount, modelerType, errorCount, stateManageable, eventProvider, engineName, maxTime]
| +++ ManagedComponent(name=jboss.web:J2EEApplication=none,J2EEServer=none,WebModule=//localhost/jmx-console,j2eeType=Servlet,name=DisplayMBeans, type=(ComponentType{type=MBean, subtype=Servlet}), compName=jboss.web:J2EEApplication=none,J2EEServer=none,WebModule=//localhost/jmx-console,j2eeType=Servlet,name=DisplayMBeans, attachment: null
| ++++++ properties: [objectName, minTime, statisticsProvider, loadTime, classLoadTime, processingTime, requestCount, modelerType, errorCount, stateManageable, eventProvider, engineName, maxTime]
| +++ ManagedComponent(name=jboss.web:J2EEApplication=none,J2EEServer=none,WebModule=//localhost/jmx-console,j2eeType=Servlet,name=InspectMBean, type=(ComponentType{type=MBean, subtype=Servlet}), compName=jboss.web:J2EEApplication=none,J2EEServer=none,WebModule=//localhost/jmx-console,j2eeType=Servlet,name=InspectMBean, attachment: null
| ++++++ properties: [objectName, minTime, statisticsProvider, loadTime, classLoadTime, processingTime, requestCount, modelerType, errorCount, stateManageable, eventProvider, engineName, maxTime]
| +++ ManagedComponent(name=jboss.web:J2EEApplication=none,J2EEServer=none,WebModule=//localhost/jmx-console,j2eeType=Servlet,name=ClusterView, type=(ComponentType{type=MBean, subtype=Servlet}), compName=jboss.web:J2EEApplication=none,J2EEServer=none,WebModule=//localhost/jmx-console,j2eeType=Servlet,name=ClusterView, attachment: null
| ++++++ properties: [objectName, minTime, statisticsProvider, loadTime, classLoadTime, processingTime, requestCount, modelerType, errorCount, stateManageable, eventProvider, engineName, maxTime]
| +++ ManagedComponent(name=jboss.web:J2EEApplication=none,J2EEServer=none,WebModule=//localhost/jmx-console,j2eeType=Servlet,name=ClusteredConsoleServlet, type=(ComponentType{type=MBean, subtype=Servlet}), compName=jboss.web:J2EEApplication=none,J2EEServer=none,WebModule=//localhost/jmx-console,j2eeType=Servlet,name=ClusteredConsoleServlet, attachment: null
| ++++++ properties: [objectName, minTime, statisticsProvider, loadTime, classLoadTime, processingTime, requestCount, modelerType, errorCount, stateManageable, eventProvider, engineName, maxTime]
| +++ ManagedComponent(name=jboss.web:J2EEApplication=none,J2EEServer=none,WebModule=//localhost/jmx-console,j2eeType=Servlet,name=HtmlAdaptor, type=(ComponentType{type=MBean, subtype=Servlet}), compName=jboss.web:J2EEApplication=none,J2EEServer=none,WebModule=//localhost/jmx-console,j2eeType=Servlet,name=HtmlAdaptor, attachment: null
| ++++++ properties: [objectName, minTime, statisticsProvider, loadTime, classLoadTime, processingTime, requestCount, modelerType, errorCount, stateManageable, eventProvider, engineName, maxTime]
|
This is based on a single ProxyManagedDeploymentFactory in the profileservice-jboss-beans.xml that combines the three types of mbeans:
| <bean name="WarManagedDeploymentFactory"
| class="org.jboss.profileservice.management.ProxyManagedDeploymentFactory">
| <property name="factoryName">War</property>
|
| <property name="defaultViewUse">STATISTIC</property>
| <property name="rootMOPatterns">
| <set elementClass="org.jboss.profileservice.management.ProxyDeploymentInfo">
| <!-- Manager -->
| <bean class="org.jboss.profileservice.management.ProxyDeploymentInfo">
| <property name="compType">MBean</property>
| <property name="compSubtype">WebApplicationManager</property>
| <property name="pattern">jboss.web:host=localhost,type=Manager,*</property>
| <property name="nameBuilder">
| <inject bean="WarManagerMBeanDeploymentNameBuilder"/>
| </property>
| </bean>
| <!-- WebModule -->
| <bean class="org.jboss.profileservice.management.ProxyDeploymentInfo">
| <property name="compType">MBean</property>
| <property name="compSubtype">WebApplication</property>
| <property name="pattern">jboss.web:J2EEApplication=none,J2EEServer=none,j2eeType=WebModule,*</property>
| <property name="nameBuilder">
| <inject bean="SimpleMBeanDeploymentNameBuilder"/>
| </property>
| <property name="componentInfo">
| <map keyClass="java.lang.String" valueClass="java.lang.String">
| <!-- Process the servlets components -->
| <entry>
| <key>servlets</key>
| <value>MBean:Servlet</value>
| </entry>
| </map>
| </property>
| </bean>
| </set>
| </property>
| </bean>
|
View the original post : http://www.jboss.org/index.html?module=bb&op=viewtopic&p=4230636#4230636
Reply to the post : http://www.jboss.org/index.html?module=bb&op=posting&mode=reply&p=4230636
16 years, 11 months
[Design the new POJO MicroContainer] - Re: DESCRIBE phase - Dependency builders for MC Beans
by jason.greene@jboss.com
"alesj" wrote : "jaikiran" wrote : But in the long term, shouldn't we be moving away from this default?
| |
| No, that's why it's called *transparent* AOP integration. ;-)
|
| You can only argue that the AOP mechanism is not performant enough,
| but that's as far as I agree with you.
| Although this comes with a cost, it does bring lots of nice features.
| They are mostly true in a sense of AOP; aspects, concerns separation, ...
| @JMX, @JNDI, @Password, @(add-your-own-metadata-here) are good examples of this.
| And if I was a user, that's what I would want too, out-of-the-box.
|
It can be the greatest feature in the world, but if the performance sucks as bad as this does, no one will use it. In general we should avoid expanding our usage of this until we know that the design is even fixable.
I do agree that supporting various service annotations is useful, and there is even some value in having pluggable behavior. However, building this behavior using arbitrary pointcut expressions in arbitrary locations is beyond overkill.
View the original post : http://www.jboss.org/index.html?module=bb&op=viewtopic&p=4230635#4230635
Reply to the post : http://www.jboss.org/index.html?module=bb&op=posting&mode=reply&p=4230635
16 years, 11 months