[jboss-user] [Microcontainer] - Deploying JBoss Cache as MBean in microcontainer

amit.bhayani@jboss.com do-not-reply at jboss.com
Thu Jan 15 00:38:48 EST 2009


This is in continuation to
http://www.jboss.com/index.html?module=bb&op=viewtopic&t=148625

Since this question is related to MC I thought I should post here.

I can start the JBoss cache programmatically by using

Configuration config = new Configuration();
  |            config.setTransactionManagerLookupClass( JBossTransactionManagerLookup.class.getName() );
  |            config.setIsolationLevel(IsolationLevel.REPEATABLE_READ);
  |            config.setNodeLockingScheme(Configuration.NodeLockingScheme.MVCC);
  |            config.setCacheMode(Configuration.CacheMode.LOCAL);          
  |            CacheFactory factory = new DefaultCacheFactory();
  |            Cache cache = factory.createCache(config);          
  |            return cache;
  | 

However this way if user needs to make any changes he/she needs to re-compile the code.

I tried deploying the Cache as MBean using JMX annotation

	<bean name="MobicentsCacheConfig"
  | 		class="org.jboss.cache.config.Configuration">
  | 
  | 		<!-- Externally injected services -->
  | 		<property name="runtimeConfig">
  | 			<bean name="ExampleCacheRuntimeConfig"
  | 				class="org.jboss.cache.config.RuntimeConfig">
  | 				<property name="transactionManager">
  | 					<inject bean="TransactionManager"
  | 						property="transactionManager" />
  | 				</property>
  | 				<property name="muxChannelFactory">
  | 					<inject bean="JChannelFactory" />
  | 				</property>
  | 			</bean>
  | 		</property>
  | 
  | 		<!--
  | 			Node locking level : SERIALIZABLE
  | 			REPEATABLE_READ (default)
  | 			READ_COMMITTED
  | 			READ_UNCOMMITTED
  | 			NONE
  | 		-->
  | 		<property name="isolationLevel">REPEATABLE_READ</property>
  | 
  | 		<!--     Valid modes are LOCAL
  | 			REPL_ASYNC
  | 			REPL_SYNC
  | 		-->
  | 		<property name="cacheMode">LOCAL</property>
  | 
  | 		<!--  Max number of milliseconds to wait for a lock acquisition -->
  | 		<property name="lockAcquisitionTimeout">15000</property>
  | 
  | 		<property name="exposeManagementStatistics">true</property>
  | 
  | 		<!--  Specific eviction policy configurations. This is LRU -->
  | 		<property name="evictionConfig">
  | 			<bean name="ExampleEvictionConfig"
  | 				class="org.jboss.cache.config.EvictionConfig">
  | 				<property name="defaultEvictionPolicyClass">
  | 					org.jboss.cache.eviction.LRUPolicy
  | 				</property>
  | 				<property name="wakeupIntervalSeconds">5</property>
  | 				<property name="evictionRegionConfigs">
  | 					<list>
  | 						<bean name="ExampleDefaultEvictionRegionConfig"
  | 							class="org.jboss.cache.config.EvictionRegionConfig">
  | 							<property name="regionName">
  | 								/_default_
  | 							</property>
  | 							<property name="evictionPolicyConfig">
  | 								<bean name="ExampleDefaultLRUConfig"
  | 									class="org.jboss.cache.eviction.LRUConfiguration">
  | 									<property name="maxNodes">
  | 										5000
  | 									</property>
  | 									<property
  | 										name="timeToLiveSeconds">
  | 										1000
  | 									</property>
  | 								</bean>
  | 							</property>
  | 						</bean>
  | 					</list>
  | 				</property>
  | 			</bean>
  | 		</property>
  | 
  | 	</bean>
  | 
  | 
  | 	<bean name="Mobicents.JAINSLEE.RuntimeTreeCache"
  | 		class="org.jboss.cache.Cache">
  | 		<constructor factoryMethod="createCache">
  | 			<factory bean="DefaultCacheFactory" />
  | 			<parameter class="org.jboss.cache.config.Configuration">
  | 				<inject bean="MobicentsCacheConfig" />
  | 			</parameter>
  | 			<parameter class="boolean">false</parameter>
  | 		</constructor>
  | 	</bean>
  | 
  | 	<bean name="Mobicents.JAINSLEE.RuntimeTreeCacheMBean"
  | 		class="org.jboss.cache.jmx.CacheJmxWrapper">
  | 
  | 		<annotation>
  | 			@org.jboss.aop.microcontainer.aspects.jmx.JMX(name="jboss.cache:service=RuntimeTreeCache",exposedInterface=org.jboss.cache.jmx.CacheJmxWrapperMBean.class,
  | 			registerDirectly=true)
  | 		</annotation>
  | 		<constructor>
  | 			<parameter class="org.jboss.cache.Cache">
  | 				<inject bean="Mobicents.JAINSLEE.RuntimeTreeCache" />
  | 			</parameter>
  | 		</constructor>
  | 	</bean>

However I get 


2009-01-15 09:32:05,653 ERROR [org.jboss.kernel.plugins.dependency.AbstractKernelController] (main) Error installing to PreInstall: name=Mobicents.JAINSLEE.TransactionManagerMBean state=Real
java.lang.RuntimeException: Error creating annotation for 
			@org.jboss.aop.microcontainer.aspects.jmx.JMX(name="slee:name=TransactionManagerMBean",exposedInterface=org.mobicents.slee.runtime.transaction.TransactionManagerImpl.class,
			registerDirectly=true)
		
	at org.jboss.beans.metadata.plugins.AbstractAnnotationMetaData.getAnnotationInstance(AbstractAnnotationMetaData.java:128)
	at org.jboss.kernel.plugins.dependency.KernelScopeInfo.updateAnnotations(KernelScopeInfo.java:319)
	at org.jboss.kernel.plugins.dependency.KernelScopeInfo.updateClassAnnotations(KernelScopeInfo.java:151)
.............
..............
...............
Caused by: java.lang.RuntimeException: Error getting root expression 
			@org.jboss.aop.microcontainer.aspects.jmx.JMX(name="slee:name=TransactionManagerMBean",exposedInterface=org.mobicents.slee.runtime.transaction.TransactionManagerImpl.class,
			registerDirectly=true)
		
	at org.jboss.annotation.factory.AnnotationCreator.getRootExpr(AnnotationCreator.java:361)

Is there some mistake in how the annotation is used?

Thanks

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

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



More information about the jboss-user mailing list