JHandleIIOP.java

00001 
00026 package org.objectweb.jonas_ejb.svc;
00027 
00028 import java.io.IOException;
00029 import java.io.Serializable;
00030 import java.rmi.Remote;
00031 import java.rmi.RemoteException;
00032 import java.util.logging.Level;
00033 import java.util.logging.Logger;
00034 
00035 import javax.ejb.EJBObject;
00036 import javax.ejb.Handle;
00037 import javax.ejb.spi.HandleDelegate;
00038 import javax.naming.NamingException;
00039 import javax.rmi.PortableRemoteObject;
00040 import javax.rmi.CORBA.Util;
00041 
00042 import org.omg.PortableServer.Servant;
00047 public class JHandleIIOP implements Handle, Serializable {
00048 
00052     private static Logger logger = Logger.getLogger("org.objectweb.jonas_ejb.svc");
00053 
00058     private String ior = null;
00059 
00064     public JHandleIIOP(Remote r) {
00065         try {
00066             logger.log(Level.FINE, "r=" + r);
00067             Servant servant = (Servant) Util.getTie(r);
00068             org.omg.CORBA.Object o = servant._this_object();
00069             this.ior = Utility.getORB().object_to_string(o);
00070             logger.log(Level.FINE, "ior=" + ior);
00071         } catch (Exception e) {
00072             logger.log(Level.SEVERE, "cannot get Handle: ", e);
00073         }
00074     }
00075 
00082     public EJBObject getEJBObject() throws RemoteException {
00083         logger.log(Level.FINE, "");
00084         try {
00085             return (EJBObject) PortableRemoteObject.narrow(Utility.getORB().string_to_object(ior), EJBObject.class);
00086         } catch (Exception e) {
00087             throw new RemoteException("JHandle.getEJBObject(): " + e, e);
00088         }
00089     }
00090 
00097     private void writeObject(java.io.ObjectOutputStream out)
00098     throws IOException {
00099         HandleDelegate hdld;
00100         logger.log(Level.FINE, "");
00101         try {
00102             hdld = Utility.getHandleDelegate();
00103         } catch (NamingException e) {
00104             throw new IOException("Cannot get HandleDelegate");
00105         }
00106         hdld.writeEJBObject(getEJBObject(), out);
00107     }
00108 
00116     private void readObject(java.io.ObjectInputStream in)
00117     throws IOException, ClassNotFoundException {
00118         HandleDelegate hdld;
00119         logger.log(Level.FINE, "");
00120         try {
00121             hdld = Utility.getHandleDelegate();
00122         } catch (NamingException e) {
00123             throw new IOException("Cannot get HandleDelegate");
00124         }
00125         EJBObject obj = hdld.readEJBObject(in);
00126         try {
00127             this.ior = Utility.getORB().object_to_string((org.omg.CORBA.Object) obj);
00128 
00129         } catch (Exception e) {
00130             throw new RemoteException("JHandle.readObject(): " + e, e);
00131         }
00132     }
00133 
00134 }
00135 

Generated on Tue Feb 15 15:05:49 2005 for JOnAS by  doxygen 1.3.9.1