No there are no tests for this in the testsuite since at the time I wrote
this JBossTM was integrated into the main build.
The tests in the testsuite deploy a second copy of JBossMQ into JBossAS
that I can reboot and test recovery using the XAResource api directly.
i.e. they are unit tests not integration tests.
The only test I have is in a private ant project that uses the
JMSProviderXAResourceRecovery
with the following change in jbossjta-properties.xml
| <property
name="com.arjuna.ats.jta.recovery.XAResourceRecoveryJMS=org.jboss.jta.recovery.jms.JMSProviderXAResourceRecovery;DefaultJMSProvider"/>
|
It also includes a subclass of the persistence manager
so I can force the server to crash during commit
| /*
| * JBoss, Home of Professional Open Source
| * Copyright 2006, JBoss Inc., and individual contributors as indicated
| * by the @authors tag. See the copyright.txt in the distribution for a
| * full listing of individual contributors.
| *
| * This is free software; you can redistribute it and/or modify it
| * under the terms of the GNU Lesser General Public License as
| * published by the Free Software Foundation; either version 2.1 of
| * the License, or (at your option) any later version.
| *
| * This software is distributed in the hope that it will be useful,
| * but WITHOUT ANY WARRANTY; without even the implied warranty of
| * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
| * Lesser General Public License for more details.
| *
| * You should have received a copy of the GNU Lesser General Public
| * License along with this software; if not, write to the Free
| * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
| * 02110-1301 USA, or see the FSF site:
http://www.fsf.org.
| */
| package org.jboss.test.jbossmq;
|
| import javax.jms.JMSException;
|
| import org.jboss.mq.pm.Tx;
| import org.jboss.mq.pm.jdbc2.PersistenceManager;
|
| public class TestPersistenceManager extends PersistenceManager implements
TestPersistenceManagerMBean
| {
| private boolean crashInCommit = false;
|
| public TestPersistenceManager() throws JMSException
| {
| }
|
| public boolean getCrashInCommit()
| {
| return crashInCommit;
| }
|
| public void makeCrashInCommit(boolean crashInCommit)
| {
| this.crashInCommit = crashInCommit;
| }
|
| public void commitPersistentTx(Tx txId) throws JMSException
| {
| if (crashInCommit)
| {
| System.out.println("I'm going to crash in 20 seconds");
| try
| {
| Thread.sleep(20000);
| }
| catch (Exception ignored) {}
| Runtime.getRuntime().halt(0);
| }
| else
| super.commitPersistentTx(txId);
| }
| }
|
The sleep is just to workaround the fact that hypersonic doesn't
persist data to its transaction log synchronously
It does it on a timer every 10 seconds. UGLY! :-)
View the original post :
http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4005805#...
Reply to the post :
http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&a...