1 22 package org.jboss.test.recover.test; 23 24 import javax.naming.Context ; 25 import javax.rmi.PortableRemoteObject ; 26 import javax.transaction.UserTransaction ; 27 28 import junit.framework.Test; 29 30 import org.jboss.test.recover.interfaces.DummyXAResource; 31 import org.jboss.test.recover.interfaces.FrontEnd; 32 import org.jboss.test.recover.interfaces.FrontEndHome; 33 import org.jboss.test.recover.interfaces.XAResourceEnlisterCaller; 34 import org.jboss.test.recover.interfaces.XAResourceEnlisterCallerHome; 35 import org.jboss.tm.recovery.RecoveryTestingException; 36 37 43 public class CrashOfFirstRemoteResourceWithXADatabaseAfterPrepareIIOPTestCase 44 extends JBossCrashRecoveryIIOPTestCase 45 { 46 public CrashOfFirstRemoteResourceWithXADatabaseAfterPrepareIIOPTestCase(String name) 47 throws java.io.IOException 48 { 49 super(name); 50 } 51 52 54 public void test() throws Exception 55 { 56 getLog().info("*** starting " + getUnqualifiedClassName() + " ***"); 57 58 Context ctx = getInitialContext(); 59 60 DummyXAResource xaRes1 = getXAResource("DummyRecoverableProxy1"); 61 DummyXAResource xaRes2 = getXAResource("DummyRecoverableProxy2"); 62 DummyXAResource xaRes3 = getXAResource("DummyRecoverableProxy3"); 63 64 xaRes1.clear(); 65 xaRes2.clear(); 66 xaRes3.clear(); 67 68 Object obj; 69 70 getLog().debug("Obtain FrontEnd home interface"); 71 obj = ctx.lookup("dtmrecoverytest/FrontEndEJB"); 72 FrontEndHome frontEndHome = 73 (FrontEndHome) PortableRemoteObject.narrow(obj, FrontEndHome.class); 74 75 getLog().debug("Create FrontEnd bean"); 76 FrontEnd frontEnd = frontEndHome.create("testCommittedTx"); 77 78 getLog().debug("Obtain XAResourceEnlisterCaller home interface"); 79 obj = ctx.lookup("dtmrectest/XAResourceEnlisterCallerEJB"); 80 XAResourceEnlisterCallerHome xaResEnlisterCallerHome = 81 (XAResourceEnlisterCallerHome) PortableRemoteObject.narrow( 82 obj, XAResourceEnlisterCallerHome.class); 83 84 getLog().debug("Create XAResourceEnlisterCaller bean"); 85 XAResourceEnlisterCaller xaResEnlisterCaller = 86 xaResEnlisterCallerHome.create(); 87 88 getLog().debug("Obtain UserTransaction instance"); 89 UserTransaction userTx = (UserTransaction ) ctx.lookup("UserTransaction"); 90 91 getLog().debug("Set balances"); 92 userTx.begin(); 93 frontEnd.setBalancesOverIIOP(101, 102); 94 userTx.commit(); 95 96 int[] balances; 97 98 getLog().debug("Get balances"); 99 userTx.begin(); 100 balances = frontEnd.getBalancesOverIIOP(); 101 userTx.commit(); 102 103 assertTrue("first balance == 101", balances[0] == 101); 104 assertTrue("second balance == 102", balances[1] == 102); 105 106 getLog().debug("Update balances"); 107 xaRes2.setCommitException(new RecoveryTestingException( 115 "FAILURE WHEN XA2 WAS ABOUT TO COMMIT")); 116 try 121 { 122 userTx.begin(); 123 xaResEnlisterCaller.enlistOneXAResourcePerAppServerOverIIOP(); 124 frontEnd.addToBalancesOverIIOP(100); 125 userTx.commit(); 126 } 127 finally 128 { 129 xaRes2.clearCommitException(); 132 } 133 } 134 135 public static Test suite() throws Exception 136 { 137 return suite(CrashOfFirstRemoteResourceWithXADatabaseAfterPrepareIIOPTestCase.class); 138 } 139 140 } 141 | Popular Tags |