1 25 26 package org.objectweb.jonas_ejb.container; 27 28 import java.io.IOException ; 29 import java.io.InputStream ; 30 import java.io.ObjectInputStream ; 31 import java.io.ObjectStreamClass ; 32 import java.rmi.server.RemoteStub ; 33 34 import javax.ejb.Handle ; 35 import javax.ejb.HomeHandle ; 36 37 38 import org.objectweb.util.monolog.api.BasicLevel; 39 40 44 public class JStatefulInputStream extends ObjectInputStream { 45 46 private JStatefulSwitch jss; 47 48 52 public JStatefulInputStream(InputStream in, JStatefulSwitch jss) throws IOException { 53 super(in); 54 TraceEjb.ssfpool.log(BasicLevel.DEBUG, "constructor"); 55 enableResolveObject(true); 56 this.jss = jss; 57 } 58 59 64 protected Object resolveObject(Object obj) throws IOException { 65 Object ret; 66 67 if (obj instanceof HomeHandle ) { 68 TraceEjb.ssfpool.log(BasicLevel.DEBUG, "HomeHandle"); 70 ret = ((HomeHandle )obj).getEJBHome(); 71 } else if (obj instanceof Handle ) { 72 TraceEjb.ssfpool.log(BasicLevel.DEBUG, "Handle"); 74 ret = ((Handle )obj).getEJBObject(); 75 } else if (obj instanceof JWrapper) { 76 int type = ((JWrapper) obj).getType(); 77 switch (type) { 78 case JWrapper.USER_TX: 79 TraceEjb.ssfpool.log(BasicLevel.DEBUG, "UserTransaction"); 82 ret = jss.getStatefulContext().getUserTransaction(); 83 break; 84 case JWrapper.SESSION_CTX: 85 TraceEjb.ssfpool.log(BasicLevel.DEBUG, "SessionContext"); 88 ret = jss.getStatefulContext(); 89 break; 90 default: 91 TraceEjb.ssfpool.log(BasicLevel.DEBUG, "Other wrapped object"); 92 ret = ((JWrapper) obj).getObject(); 93 break; 94 } 95 } else if (obj instanceof RemoteStub ) { 96 TraceEjb.ssfpool.log(BasicLevel.DEBUG, "RemoteStub"); 98 ret = obj; 100 } else { 101 TraceEjb.ssfpool.log(BasicLevel.DEBUG, "Other"); 103 ret = obj; 104 } 105 return ret; 106 } 107 108 115 protected Class resolveClass(ObjectStreamClass v) throws IOException , ClassNotFoundException { 116 TraceEjb.ssfpool.log(BasicLevel.DEBUG, v); 117 ClassLoader cl = Thread.currentThread().getContextClassLoader(); 118 return cl.loadClass(v.getName()); 119 } 120 121 } 122 | Popular Tags |