[JBossCache] - Apparently losing data
by uuderzo
I'm using JBC to store user sessions in a rich client application, running with JBoss/OC4J ASs.
Cannot use right the JBC of JBoss installation because of the need to work also on OC4J so we installed the JBC jars as our application libraries.
Currently the cache is working in LOCAL mode. When a user logs on its session object is stored and every time this session object is requested it is retrieved from the cache, updated with the last access time, stored in the cache and returned to the caller.
This seems to work well BUT sometimes the mechanism seems to break and no more work until the AS (in my case JBoss) is shutdown and restarted. The problem is that the data is put into the cache but when retrieved it is NULL. No errors were reported, simply the data seems to disappear from the cache.
On some production environments this trouble can happen abount once a month.
There is no eviction policy configured, so I cannot guess what can be the trouble.
Here is how I access the cache:
private static TreeCacheMBean getJBossCache() throws AutEXCSessionException {
| try {
| if( staticJBossCache != null ) return staticJBossCache;
|
| try {
| InitialContext ctx = new InitialContext();
| Object value = ctx.lookup( "AutJBossCache" ); // se non lo trova, mi da un not bound!!!
| staticJBossCache = (TreeCacheMBean)value;
| if( staticJBossCache != null ) {
| return staticJBossCache;
| }
| } catch( NamingException exc ) { /* non fa nulla, semplicemente ignora e tira dritto */ }
|
| staticJBossCache = new TreeCache();
|
| // Leggo le proprieta' di configurazione dal file.
| PropertyConfigurator config = new PropertyConfigurator(); // configure tree cache. Needs to be in the classpath
| config.configure(
| staticJBossCache,
| CdtBLGPersistenceConfiguration.getInstallationPath() + "jbosscache-service.xml"
| );
|
| // Avvio il service
| staticJBossCache.createService();
| staticJBossCache.startService() ; // kick start tree cache
| return staticJBossCache;
| }
| catch( ConfigureException exc ) { throw new AutEXCSessionException( new SagaException( exc )); }
| catch( Exception exc ) { throw new AutEXCSessionException( new SagaException( exc )); }
| }
where staticJBossCache is a static member of my class.
Follows the configuration file:
<?xml version="1.0" encoding="UTF-8"?>
|
| <!-- ===================================================================== -->
| <!-- -->
| <!-- Sample TreeCache Service Configuration -->
| <!-- -->
| <!-- ===================================================================== -->
|
| <server>
| <classpath codebase="./lib" archives="jboss-cache.jar, jgroups.jar"/>
|
|
| <!-- ==================================================================== -->
| <!-- Defines TreeCache configuration -->
| <!-- ==================================================================== -->
| <mbean
| code="org.jboss.cache.TreeCache"
| name="jboss.cache:service=AutJBossTreeCache">
|
| <depends>jboss:service=Naming</depends>
| <depends>jboss:service=TransactionManager</depends>
|
| <!-- Configure the TransactionManager -->
| <attribute name="TransactionManagerLookupClass">org.jboss.cache.GenericTransactionManagerLookup</attribute>
|
| <!--
| Isolation level : SERIALIZABLE
| REPEATABLE_READ (default)
| READ_COMMITTED
| READ_UNCOMMITTED
| NONE
| -->
| <attribute name="IsolationLevel">NONE</attribute>
|
| <!-- Valid modes are LOCAL, REPL_ASYNC and REPL_SYNC.
| Use REPL_SYNC for JBoss clustering -->
| <attribute name="CacheMode">LOCAL</attribute>
|
| <!-- Just used for async repl: use a replication queue -->
| <attribute name="UseReplQueue">false</attribute>
|
| <!-- Replication interval for replication queue (in ms) -->
| <attribute name="ReplQueueInterval">0</attribute>
|
| <!-- Max number of elements which trigger replication -->
| <attribute name="ReplQueueMaxElements">0</attribute>
|
| <!-- Name of cluster. Needs to be the same for all clusters, in order
| to find each other -->
| <attribute name="ClusterName">AutJBossTreeCache-DefaultCluster</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,
| e.g bind_addr="192.168.0.2" -->
| <!-- 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.3"
| mcast_port="48866"
| 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="true"/>
| <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"
| max_xmit_size="8192"
| up_thread="false"
| down_thread="false"/>
| <UNICAST
| timeout="600,1200,2400"
| window_size="100"
| min_threshold="10"
| down_thread="false"/>
| <pbcast.STABLE
| desired_avg_gossip="20000"
| up_thread="false"
| 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="true"
| down_thread="true"/>
| </config>
| </attribute>
|
| <!-- Whether or not to fetch state on joining a cluster -->
| <attribute name="FetchStateOnStartup">true</attribute>
|
| <!-- The max amount of time (in milliseconds) we wait until the
| initial state (ie. the contents of the cache) are retrieved from
| existing members in a clustered environment -->
| <attribute name="InitialStateRetrievalTimeout">5000</attribute>
|
| <!-- Number of milliseconds to wait until all responses for a
| synchronous call have been received. -->
| <attribute name="SyncReplTimeout">10000</attribute>
|
| <!-- Max number of milliseconds to wait for a lock acquisition -->
| <attribute name="LockAcquisitionTimeout">15000</attribute>
|
| <!-- Name of the eviction policy class. -->
| <attribute name="EvictionPolicyClass"></attribute>
|
| <!--
| <attribute name="CacheLoaderClass">org.jboss.cache.loader.bdbje.BdbjeCacheLoader</attribute>
| <attribute name="CacheLoaderConfig">
| location=c:\\tmp\\bdbje
| </attribute>
| <attribute name="CacheLoaderShared">true</attribute>
| <attribute name="CacheLoaderPreload">/</attribute>
| -->
|
| <!--
| <attribute name="CacheLoaderClass">org.jboss.cache.loader.FileCacheLoader</attribute>
| <attribute name="CacheLoaderConfig">
| location=c:\\tmp
| </attribute>
| <attribute name="CacheLoaderShared">true</attribute>
| <attribute name="CacheLoaderPreload">/</attribute>
| -->
| </mbean>
|
| <!-- Uncomment to get a graphical view of the TreeCache MBean above -->
| <!-- <mbean code="org.jboss.cache.TreeCacheView" name="jboss.cache:service=TreeCacheView">-->
| <!-- <depends>jboss.cache:service=TreeCache</depends>-->
| <!-- <attribute name="CacheService">jboss.cache:service=TreeCache</attribute>-->
| <!-- </mbean>-->
|
| <!--mbean
| code="org.jboss.invocation.jrmp.server.JRMPProxyFactory"
| name="mydomain:service=proxyFactory,type=jrmp,target=factory"
| >
| <attribute name="InvokerName">jboss:service=invoker,type=jrmp</attribute>
| <attribute name="TargetName">jboss.cache:service=SicraCache</attribute>
| <attribute name="JndiName">AutJBossCache</attribute>
| <attribute name="InvokeTargetMethod">true</attribute>
| <attribute name="ExportedInterface">org.jboss.cache.TreeCacheMBean</attribute>
| <attribute name="ClientInterceptors">
| <iterceptors>
| <interceptor>org.jboss.proxy.ClientMethodInterceptor</interceptor>
| <interceptor>org.jboss.proxy.SecurityInterceptor</interceptor>
| <interceptor>org.jboss.invocation.InvokerInterceptor</interceptor>
| </iterceptors>
| </attribute>
| <depends>jboss:service=invoker,type=jrmp</depends>
| <depends>jboss.cache:service=AutJBossTreeCache</depends>
| </mbean-->
| </server>
Can somebody give an hint to solve my headache?
Thanks in advance.
View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4057792#4057792
Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4057792
18Â years, 10Â months
[JBoss Seam] - [2.0 beta1 CVS]SeamTest RARDeployment question
by enzhao
Hi folks,
I'm using Seam 2.0 beta1 built from the CVS source. My test classes extending SeamTest are having RARDeployment problem, I guess I need help on how to configure the embedded microcontainer for the purpose of mocking Seam objects. Here is the error trace:
|
| [Parser] Running:
| C:\sd\projects\eatsmart2\src\test\testngTest.xml
|
| WARN 26-06 18:12:59,296 [org.jboss.mx.loading.UnifiedLoaderRepository3.addClassLoader():675] Tried to add non-URLClassLoader. Ignored
| INFO 26-06 18:13:00,250 [com.arjuna.ats.jbossatx.jta.TransactionManagerService.startService():126] JBossTS Transaction Service (JTA version) - JBoss Inc.
| INFO 26-06 18:13:00,250 [com.arjuna.ats.jbossatx.jta.TransactionManagerService.startService():128] Setting up property manager MBean and JMX layer
| WARN 26-06 18:13:00,312 [com.arjuna.ats.arjuna.coordinator.TxControl.<clinit>():266] [com.arjuna.ats.arjuna.coordinator.TxControl_1] - Name of XA node not defined. Using -3f57fffe:f78:46813b0c:0
| INFO 26-06 18:13:00,359 [com.arjuna.ats.arjuna.recovery.TransactionStatusManager.addService():110] [com.arjuna.ats.arjuna.recovery.TransactionStatusManager_1] - Starting service com.arjuna.ats.arjuna.recovery.ActionStatusService on port 3960
| INFO 26-06 18:13:00,359 [?.?():?] TransactionStatusManagerItem - host: 192.168.0.2 port: 3960
| INFO 26-06 18:13:00,375 [com.arjuna.ats.arjuna.recovery.TransactionStatusManager.start():161] [com.arjuna.ats.arjuna.recovery.TransactionStatusManager_3] - TransactionStatusManager started on port 3960 with service com.arjuna.ats.arjuna.recovery.ActionStatusService
| INFO 26-06 18:13:00,375 [?.?():?] Registering mbean for module 'arjuna'
| INFO 26-06 18:13:00,390 [?.?():?] Initialising JMX agent com.arjuna.ats.internal.jbossatx.agent.LocalJBossAgentImpl
| INFO 26-06 18:13:00,406 [com.arjuna.ats.jbossatx.jta.TransactionManagerService.startService():163] Starting recovery manager
| INFO 26-06 18:13:00,406 [?.?():?]
| --- Start RecoveryActivators
| INFO 26-06 18:13:00,421 [com.arjuna.ats.internal.arjuna.recovery.RecoveryManagerImple.<init>():142] [com.arjuna.ats.internal.arjuna.recovery.ready] RecoveryManagerImple is ready on port 3,961
| INFO 26-06 18:13:00,421 [com.arjuna.ats.jbossatx.jta.TransactionManagerService.startService():168] Recovery manager started
| INFO 26-06 18:13:00,421 [com.arjuna.ats.jbossatx.jta.TransactionManagerService.startService():191] Binding TransactionManager JNDI Reference
| INFO 26-06 18:13:02,296 [org.jboss.jms.server.ServerPeer.<init>():187] ServerPeer[0] creating server peer with ID 0
| FAILED CONFIGURATION: @BeforeClass init
| org.jboss.deployers.spi.IncompleteDeploymentException: Summary of incomplete deployments (SEE PREVIOUS ERRORS FOR DETAILS):
|
| *** CONTEXTS MISSING DEPENDENCIES: Name -> Dependency{Required State:Actual State}
|
| jboss.jca:name=DefaultDS,service=DataSourceBinding
| -> jboss.jca:name=DefaultDS,service=LocalTxCM{Create:Configured}
| -> jboss.jca:name=DefaultDS,service=LocalTxCM{Start:Configured}
|
| jboss.jca:name=DefaultDS,service=LocalTxCM
| -> jboss.jca:name=DefaultDS,service=ManagedConnectionPool{Create:Configured}
| -> jboss.jca:name=DefaultDS,service=ManagedConnectionPool{Start:Configured}
|
| jboss.jca:name=DefaultDS,service=ManagedConnectionFactory
| -> jboss.jca:name='jboss-local-jdbc.rar',service=RARDeployment{Start:** NOT FOUND **}
| -> jboss.jca:name='jboss-local-jdbc.rar',service=RARDeployment{Create:** NOT FOUND **}
|
| jboss.jca:name=DefaultDS,service=ManagedConnectionPool
| -> jboss.jca:name=DefaultDS,service=ManagedConnectionFactory{Create:Configured}
| -> jboss.jca:name=DefaultDS,service=ManagedConnectionFactory{Start:Configured}
|
| jboss.jca:name=JmsXA,service=DataSourceBinding
| -> jboss.jca:name=JmsXA,service=TxCM{Start:Configured}
| -> jboss.jca:name=JmsXA,service=TxCM{Create:Configured}
|
| jboss.jca:name=JmsXA,service=ManagedConnectionFactory
| -> jboss.messaging:service=ServerPeer{Create:Configured}
| -> jboss.jca:name='jms-ra.rar',service=RARDeployment{Create:** NOT FOUND **}
| -> jboss.jca:name='jms-ra.rar',service=RARDeployment{Start:** NOT FOUND **}
| -> jboss.messaging:service=ServerPeer{Start:Configured}
|
| jboss.jca:name=JmsXA,service=ManagedConnectionPool
| -> jboss.jca:name=JmsXA,service=ManagedConnectionFactory{Start:Configured}
| -> jboss.jca:name=JmsXA,service=ManagedConnectionFactory{Create:Configured}
|
| jboss.jca:name=JmsXA,service=TxCM
| -> jboss.jca:name=JmsXA,service=ManagedConnectionPool{Create:Configured}
| -> jboss.jca:name=JmsXA,service=ManagedConnectionPool{Start:Configured}
|
| jboss.messaging.connectionfactory:service=ConnectionFactory
| -> jboss.messaging:service=PostOffice{Start:Configured}
| -> jboss.messaging:service=ServerPeer{Create:Configured}
| -> jboss.messaging:service=ServerPeer{Start:Configured}
| -> jboss.messaging:service=PostOffice{Create:Configured}
|
| jboss.messaging.destination:name=DLQ,service=Queue
| -> jboss.messaging:service=PostOffice{Create:Configured}
| -> jboss.messaging:service=PostOffice{Start:Configured}
| -> jboss.messaging:service=ServerPeer{Start:Configured}
| -> jboss.messaging:service=ServerPeer{Create:Configured}
|
| jboss.messaging.destination:name=ExpiryQueue,service=Queue
| -> jboss.messaging:service=PostOffice{Start:Configured}
| -> jboss.messaging:service=ServerPeer{Start:Configured}
| -> jboss.messaging:service=PostOffice{Create:Configured}
| -> jboss.messaging:service=ServerPeer{Create:Configured}
|
| jboss.messaging.destination:name=PrivateDLQ,service=Queue
| -> jboss.messaging:service=PostOffice{Start:Configured}
| -> jboss.messaging:service=PostOffice{Create:Configured}
| -> jboss.messaging:service=ServerPeer{Start:Configured}
| -> jboss.messaging:service=ServerPeer{Create:Configured}
|
| jboss.messaging.destination:name=PrivateExpiryQueue,service=Queue
| -> jboss.messaging:service=PostOffice{Start:Configured}
| -> jboss.messaging:service=ServerPeer{Start:Configured}
| -> jboss.messaging:service=PostOffice{Create:Configured}
| -> jboss.messaging:service=ServerPeer{Create:Configured}
|
| jboss.messaging.destination:name=QueueWithOwnDLQAndExpiryQueue,service=Queue
| -> jboss.messaging:service=ServerPeer{Create:Configured}
| -> jboss.messaging:service=ServerPeer{Start:Configured}
| -> jboss.messaging:service=PostOffice{Create:Configured}
| -> jboss.messaging:service=PostOffice{Start:Configured}
|
| jboss.messaging.destination:name=QueueWithOwnRedeliveryDelay,service=Queue
| -> jboss.messaging:service=ServerPeer{Create:Configured}
| -> jboss.messaging:service=ServerPeer{Start:Configured}
| -> jboss.messaging:service=PostOffice{Start:Configured}
| -> jboss.messaging:service=PostOffice{Create:Configured}
|
| jboss.messaging.destination:name=TopicWithOwnDLQAndExpiryQueue,service=Topic
| -> jboss.messaging:service=PostOffice{Create:Configured}
| -> jboss.messaging:service=PostOffice{Start:Configured}
| -> jboss.messaging:service=ServerPeer{Start:Configured}
| -> jboss.messaging:service=ServerPeer{Create:Configured}
|
| jboss.messaging.destination:name=TopicWithOwnRedeliveryDelay,service=Topic
| -> jboss.messaging:service=ServerPeer{Start:Configured}
| -> jboss.messaging:service=ServerPeer{Create:Configured}
| -> jboss.messaging:service=PostOffice{Start:Configured}
| -> jboss.messaging:service=PostOffice{Create:Configured}
|
| jboss.messaging:service=JMSUserManager
| -> jboss.jca:name=DefaultDS,service=DataSourceBinding{Create:Configured}
| -> jboss.jca:name=DefaultDS,service=DataSourceBinding{Start:Configured}
|
| jboss.messaging:service=PersistenceManager
| -> jboss.jca:name=DefaultDS,service=DataSourceBinding{Start:Configured}
| -> jboss.jca:name=DefaultDS,service=DataSourceBinding{Create:Configured}
|
| jboss.messaging:service=PostOffice
| -> jboss.jca:name=DefaultDS,service=DataSourceBinding{Start:Configured}
| -> jboss.messaging:service=ServerPeer{Create:Configured}
| -> jboss.messaging:service=ServerPeer{Start:Configured}
| -> jboss.jca:name=DefaultDS,service=DataSourceBinding{Create:Configured}
|
| jboss.messaging:service=ServerPeer
| -> jboss.messaging:service=JMSUserManager{Start:Configured}
| -> jboss.messaging:service=JMSUserManager{Create:Configured}
| -> jboss.messaging:service=PersistenceManager{Start:Configured}
| -> jboss.messaging:service=PersistenceManager{Create:Configured}
|
| jboss.mq:service=DestinationManager
| -> jboss.messaging:service=ServerPeer{Create:Configured}
| -> jboss.messaging:service=ServerPeer{Start:Configured}
|
|
| *** CONTEXTS IN ERROR: Name -> Error
|
| jboss.jca:name='jms-ra.rar',service=RARDeployment -> ** NOT FOUND **
|
| jboss.jca:name='jboss-local-jdbc.rar',service=RARDeployment -> ** NOT FOUND **
|
|
| at org.jboss.embedded.Bootstrap.checkIncomplete(Bootstrap.java:144)
| at org.jboss.embedded.Bootstrap.bootstrapURL(Bootstrap.java:169)
| at org.jboss.embedded.Bootstrap.bootstrap(Bootstrap.java:201)
| at org.jboss.embedded.Bootstrap.bootstrap(Bootstrap.java:214)
| at org.jboss.seam.mock.BaseSeamTest.startJbossEmbeddedIfNecessary(BaseSeamTest.java:919)
| at org.jboss.seam.mock.BaseSeamTest.init(BaseSeamTest.java:856)
| at org.jboss.seam.mock.SeamTest.init(SeamTest.java:42)
| ... Removed 22 stack frames
| SKIPPED CONFIGURATION: @BeforeMethod begin
| SKIPPED CONFIGURATION: @AfterMethod end
| SKIPPED CONFIGURATION: @AfterClass cleanup
| SKIPPED: testStartOver
|
|
Any help would be highly appreciated!
Regards,
Ellen
View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4057788#4057788
Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4057788
18Â years, 10Â months