1 22 package org.jboss.test.cts.ejb; 23 24 import java.lang.reflect.InvocationTargetException ; 25 import java.rmi.RemoteException ; 26 27 import javax.ejb.CreateException ; 28 import javax.ejb.EJBException ; 29 import javax.ejb.EJBObject ; 30 import javax.ejb.Handle ; 31 import javax.ejb.NoSuchObjectLocalException ; 32 import javax.naming.Context ; 33 import javax.naming.InitialContext ; 34 import javax.naming.NamingException ; 35 36 import org.jboss.logging.Logger; 37 38 import org.jboss.test.cts.interfaces.StatefulSessionLocalHome; 39 import org.jboss.test.cts.interfaces.StatefulSessionLocal; 40 import org.jboss.test.cts.interfaces.StatelessSessionHome; 41 import org.jboss.test.cts.interfaces.StatelessSession; 42 import org.jboss.test.cts.interfaces.ClientCallback; 43 import org.jboss.test.cts.interfaces.StatelessSessionLocalHome; 44 import org.jboss.test.cts.interfaces.StatelessSessionLocal; 45 import org.jboss.test.util.ejb.SessionSupport; 46 47 52 public class StatelessSessionBean 53 extends SessionSupport 54 { 55 56 private static final long serialVersionUID = 1L; 57 58 private static Logger log = Logger.getLogger(StatelessSessionBean.class); 59 60 private static boolean breakCreate = false; 61 62 public void ejbCreate() 63 throws CreateException 64 { 65 if (breakCreate) 66 throw new CreateException ("broken create"); 67 } 68 69 public String method1(String msg) 70 { 71 return msg; 72 } 73 74 80 public void breakCreate() 81 { 82 breakCreate = true; 83 } 84 85 public void loopbackTest() 86 throws java.rmi.RemoteException 87 { 88 try 89 { 90 InitialContext ctx = new InitialContext (); 91 StatelessSessionHome home = (StatelessSessionHome) ctx.lookup("ejbcts/StatelessSessionBean"); 92 StatelessSession sessionBean; 93 try 94 { 95 sessionBean = home.create(); 96 } 97 catch (CreateException ex) 98 { 99 log.debug("Loopback CreateException: " + ex); 100 throw new EJBException (ex); 101 } 102 sessionBean.loopbackTest(sessionCtx.getEJBObject()); 103 } 104 catch (javax.naming.NamingException nex) 105 { 106 log.debug("Could not locate bean instance"); 107 } 108 } 109 110 public void loopbackTest(EJBObject obj) 111 throws java.rmi.RemoteException 112 { 113 StatelessSession bean = (StatelessSession) obj; 115 bean.method1("Hello"); 116 } 117 118 public void callbackTest(ClientCallback callback, String data) 119 throws java.rmi.RemoteException 120 { 121 callback.callback(data); 122 } 123 124 public void npeError() 125 { 126 Object obj = null; 127 obj.toString(); 128 } 129 130 public void testLocalHome() throws InvocationTargetException 131 { 132 StatelessSessionLocalHome home = (StatelessSessionLocalHome) sessionCtx.getEJBLocalHome(); 133 log.debug("Obtained StatelessSessionLocalHome from ctx"); 134 try 135 { 136 StatelessSessionLocal local = home.create(); 137 log.debug("Created StatelessSessionLocal#1"); 138 StatelessSessionLocalHome home2 = (StatelessSessionLocalHome) local.getEJBLocalHome(); 139 log.debug("Obtained StatelessSessionLocalHome from StatelessSessionLocal"); 140 local = home2.create(); 141 log.debug("Created StatelessSessionLocal#2"); 142 local.remove(); 143 } 144 catch(Exception e) 145 { 146 log.debug("testLocalHome failed", e); 147 throw new InvocationTargetException (e, "testLocalHome failed"); 148 } 149 } 150 151 public void testPassivationByTimeLocal() 152 { 153 StatefulSessionLocal sessionBean1 = null; 154 Handle handle = null; 155 try 156 { 157 Context ctx = new InitialContext (); 158 log.debug("+++ testPassivationByTime"); 159 StatefulSessionLocalHome sessionHome = ( StatefulSessionLocalHome ) ctx.lookup("ejbcts/StatefulSessionLocalBean"); 160 sessionBean1 = sessionHome.create("testPassivationByTimeLocal"); 161 sessionBean1.ping(); 162 163 handle = sessionBean1.getHandle(); 164 165 log.debug("Waiting 41 seconds for passivation..."); 166 Thread.sleep(41*1000); 167 168 boolean passivated = sessionBean1.getWasPassivated(); 170 if (passivated == false) throw new EJBException ("sessionBean1 WasPassivated"); 171 boolean activated = sessionBean1.getWasActivated(); 172 if (activated == false) throw new EJBException ("sessionBean1 WasActivated"); 173 174 log.debug("Waiting 90 seconds for removal due to age..."); 175 Thread.sleep(90*1000); 176 } 177 catch (CreateException e) 178 { 179 throw new EJBException (e.toString()); 180 } 181 catch (NamingException e) 182 { 183 throw new EJBException (e.toString()); 184 } 185 catch (InterruptedException e) 186 { 187 throw new EJBException (e.toString()); 188 } 189 190 try 191 { 192 sessionBean1.ping(); 193 throw new EJBException ("Was able to ping for a removed session"); 194 } 195 catch (NoSuchObjectLocalException expected) 196 { 197 log.debug("Session access failed as expected", expected); 198 } 199 200 try 201 { 202 handle.getEJBObject(); 203 throw new EJBException ("Was able to getEJBObject for a removed session"); 204 } 205 catch (RemoteException expected) 206 { 207 log.debug("Session access failed as expected", expected); 208 } 209 } 210 } 211 | Popular Tags |