Hello, I am a newbie in JBoss Cache, and in J2EE in general. I am trying to configure JBoss Cache as a MBean under JBoss AS. This are the products versions that i am using:
| * Jboss 4.0.5. GA (EJB3) | * JBossCache 1.4.1. GA | I have looked all the available documentation that i know, which are: | * PojoCache User Documentation: http://labs.jboss.com/file-access/default/members/jbosscache/freezone/docs/1.4.1/PojoCache/en/html/index.html | * JBoss Cache Tutorial: http://labs.jboss.com/file-access/default/members/jbosscache/freezone/docs/1.4.1/tutorial/en/html_single/index.html | * JBoss Cache FAQ: http://labs.jboss.com/file-access/default/members/jbosscache/freezone/docs/1.4.1/faq/en/html/index.html | I have also studied the examples available in the JBossCache 1.4.1 GA example directory. I want to have the PojoCache running as a MBean under JBoss AS. So this is my xxx-service.xml content: | <?xml version="1.0" encoding="UTF-8"?> | | <!-- ===================================================================== --> | <!-- --> | <!-- PojoCache Service Configuration --> | <!-- --> | <!-- ===================================================================== --> | | <server> | | <classpath codebase="./lib" archives="jboss-cache.jar, jgroups.jar"/> | | | <!-- ==================================================================== --> | <!-- Defines PojoCache configuration --> | <!-- ==================================================================== --> | | <mbean code="org.jboss.cache.aop.PojoCache" name="jboss.cache:service=DesaladoraPojoCache"> | <!-- Used inside JBoss AS --> | <depends>jboss:service=Naming</depends> | <depends>jboss:service=TransactionManager</depends> | | <!-- | Configure the TransactionManager | --> | <attribute name="TransactionManagerLookupClass">org.jboss.cache.JBossTransactionManagerLookup</attribute> | | <!-- | Node locking scheme: | OPTIMISTIC | PESSIMISTIC (default) | --> | <attribute name="NodeLockingScheme">PESSIMISTIC</attribute> | | <!-- | Note that this attribute is IGNORED if your NodeLockingScheme above is OPTIMISTIC. | | Isolation level : SERIALIZABLE | REPEATABLE_READ (default) | READ_COMMITTED | READ_UNCOMMITTED | NONE | --> | <attribute name="IsolationLevel">REPEATABLE_READ</attribute> | | <!-- | Valid modes are LOCAL | REPL_ASYNC | REPL_SYNC | INVALIDATION_ASYNC | INVALIDATION_SYNC | --> | <attribute name="CacheMode">LOCAL</attribute> | | <!-- | Name of cluster. Needs to be the same for all clusters, in order | to find each other | --> | <attribute name="ClusterName">Sample-Cluster</attribute> | | <!-- | JGroups protocol stack properties. Can also be a URL, e.g. file:/home/bela/default.xml | <attribute name="ClusterProperties"></attribute> | --> | | <attribute name="ClusterConfig"> | <config> | <!-- | UDP: if you have a multihomed machine, set the bind_addr attribute to the appropriate | NIC IP address | --> | <!-- | UDP: On Windows machines, because of the media sense feature being broken with multicast | (even after disabling media sense) set the loopback attribute to true | --> | <UDP mcast_addr="228.1.2.5" mcast_port="45577" | ip_ttl="64" ip_mcast="true" | mcast_send_buf_size="150000" mcast_recv_buf_size="80000" | ucast_send_buf_size="150000" ucast_recv_buf_size="80000" | loopback="false"/> | <PING timeout="2000" num_initial_members="3" | up_thread="false" down_thread="false"/> | <MERGE2 min_interval="10000" max_interval="20000"/> | <FD shun="true" up_thread="true" down_thread="true"/> | <VERIFY_SUSPECT timeout="1500" | up_thread="false" down_thread="false"/> | <pbcast.NAKACK gc_lag="50" retransmit_timeout="600,1200,2400,4800" | up_thread="false" down_thread="false"/> | <pbcast.STABLE desired_avg_gossip="20000" | up_thread="false" down_thread="false"/> | <UNICAST timeout="600,1200,2400" window_size="100" min_threshold="10" | down_thread="false"/> | <FRAG frag_size="8192" | down_thread="false" up_thread="false"/> | <pbcast.GMS join_timeout="5000" join_retry_timeout="2000" | shun="true" print_local_addr="true"/> | <pbcast.STATE_TRANSFER up_thread="false" down_thread="false"/> | </config> | </attribute> | | </mbean> | | </server> | I think that the instalation is correct, cause a see through the JMX Agent View the "service=DesaladoraPojoCache" (jboss.cache). This is the message that i get when i started the server: | 10:41:31,015 INFO [InterceptorChainFactory] interceptor chain is: | class org.jboss.cache.interceptors.CallInterceptor | class org.jboss.cache.interceptors.PessimisticLockInterceptor | class org.jboss.cache.interceptors.UnlockInterceptor | class org.jboss.cache.interceptors.TxInterceptor | class org.jboss.cache.interceptors.CacheMgmtInterceptor | 10:41:31,156 INFO [TreeCache] parseConfig(): PojoCacheConfig is empty | These are my questions: | * Is this xxx-cache-service.xml correct for a PojoCache under Jboss AS? | * I want to use the PojoCache locally in a single JVM as a shared memory between EJB. Do I need to specify the "ClusterConfig" attribute? <attribute name="ClusterConfig"> | * Is there any problem with this line in the server start up?: | | | 10:41:31,156 INFO [TreeCache] parseConfig(): PojoCacheConfig is empty | | | * I don't see any example in the "example" directory (jboss-cache-dist-1.4.1.GA.zip) for a PojoCahe running as a MBean under JBoss AS. All examples (even in the documentation examples), correct me if I am wrong, are for a Standalone environment for a PojoCache. So I don't know exactly how to access the MBean and how to work with the cache. This is what i am trying: | | | MBeanServer server; | | PojoCacheMBean cache; | | SensorRead test = new SensorRead(new Double("2.2"), "TestSensor", "Configuration details"); | | | | server = MBeanServerLocator.locateJBoss(); | | | | try { | | cache = (PojoCacheMBean) MBeanProxyExt.create(PojoCacheMBean.class, | | "jboss.cache:service=DesaladoraPojoCache", | | server); | | cache.putObject("/aop/sensor", test); | | } | | catch (MalformedObjectNameException e) { | | // TODO Auto-generated catch block | | e.printStackTrace(); | | } | | catch (CacheException e) { | | // TODO Auto-generated catch block | | e.printStackTrace(); | | } | | | This is the code for SensorRead bean: | | | package stpd.component.sensors.reads; | | | | import org.jboss.cache.aop.annotation.InstanceOfPojoCacheable; | | | | /** | | * @author Nacho | | * | | */ | | @SuppressWarnings("serial") | | @InstanceOfPojoCacheable | | public class SensorRead { | | | | private Double value; | | private String sensorName; // Tupla type-plantLocalization | | private String ConfigDetails; | | | | public SensorRead() { | | super(); | | // TODO Auto-generated constructor stub | | } | | | | public SensorRead(Double value, String name, String configDetails) { | | super(); | | this.value = value; | | this.sensorName = name; | | ConfigDetails = configDetails; | | } | | | | public String getConfigDetails() { | | return ConfigDetails; | | } | | | | public void setConfigDetails(String configDetails) { | | ConfigDetails = configDetails; | | } | | | | public String getSensorName() { | | return sensorName; | | } | | | | public void setSensorName(String name) { | | this.sensorName = name; | | } | | | | public Double getValue() { | | return value; | | } | | | | public void setValue(Double value) { | | this.value = value; | | } | | } | | | And this is the exception that I am getting: | | | 12:32:08,203 WARN [AbstractExceptionHandler] Unhandled exception | | javax.ejb.EJBException: java.lang.RuntimeException: PojoCache.putObject(): fqn: /aop/sensor | | at org.jboss.ejb3.tx.Ejb3TxPolicy.handleExceptionInOurTx(Ejb3TxPolicy.java:69) | | at org.jboss.aspects.tx.TxPolicy.invokeInOurTx(TxPolicy.java:83) | | at org.jboss.aspects.tx.TxInterceptor$Required.invoke(TxInterceptor.java:197) | | at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101) | | at org.jboss.aspects.tx.TxPropagationInterceptor.invoke(TxPropagationInterceptor.java:76) | | at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101) | | at org.jboss.ejb3.stateless.StatelessInstanceInterceptor.invoke(StatelessInstanceInterceptor.java:62) | | at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101) | | at org.jboss.aspects.security.AuthenticationInterceptor.invoke(AuthenticationInterceptor.java:77) | | at org.jboss.ejb3.security.Ejb3AuthenticationInterceptor.invoke(Ejb3AuthenticationInterceptor.java:131) | | at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101) | | at org.jboss.ejb3.ENCPropagationInterceptor.invoke(ENCPropagationInterceptor.java:47) | | at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101) | | at org.jboss.ejb3.asynchronous.AsynchronousInterceptor.invoke(AsynchronousInterceptor.java:106) | | at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101) | | at org.jboss.ejb3.stateless.StatelessContainer.localInvoke(StatelessContainer.java:211) | | at org.jboss.ejb3.stateless.StatelessLocalProxy.invoke(StatelessLocalProxy.java:79) | | ... | | | If you need i can put all the stack message, but is too long... and this post is getting to long already. | Thanks you in advance. JBoss Cache is a great idea and product, but i am only having problems to use it. You are doing a great job and I hope that I can resolve my actual problems, cause I am kind of stock here... Thx again and sorry for this long post... but I am trying to put all the important and needed information. View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4005770#4005770 Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4005770 _______________________________________________ jboss-user mailing list jboss-user@lists.jboss.org https://lists.jboss.org/mailman/listinfo/jboss-user