src/java.corba/share/classes/com/sun/corba/se/impl/javax/rmi/CORBA/Util.java

Print this page




  95 import com.sun.corba.se.pept.transport.ContactInfoList ;
  96 import com.sun.corba.se.spi.orb.ORB;
  97 import com.sun.corba.se.spi.orb.ORBVersionFactory;
  98 import com.sun.corba.se.spi.protocol.CorbaClientDelegate;
  99 import com.sun.corba.se.spi.transport.CorbaContactInfoList ;
 100 import com.sun.corba.se.spi.protocol.LocalClientRequestDispatcher ;
 101 import com.sun.corba.se.spi.copyobject.ReflectiveCopyException ;
 102 import com.sun.corba.se.spi.copyobject.CopierManager ;
 103 import com.sun.corba.se.spi.copyobject.ObjectCopierFactory ;
 104 import com.sun.corba.se.spi.copyobject.ObjectCopier ;
 105 import com.sun.corba.se.impl.io.ValueHandlerImpl;
 106 import com.sun.corba.se.impl.orbutil.ORBConstants;
 107 import com.sun.corba.se.impl.orbutil.ORBUtility;
 108 import com.sun.corba.se.impl.logging.OMGSystemException;
 109 import com.sun.corba.se.impl.util.Utility;
 110 import com.sun.corba.se.impl.util.IdentityHashtable;
 111 import com.sun.corba.se.impl.util.JDKBridge;
 112 import com.sun.corba.se.impl.logging.UtilSystemException;
 113 import com.sun.corba.se.spi.logging.CORBALogDomains;
 114 import sun.corba.SharedSecrets;
 115 import com.sun.corba.se.impl.transport.ManagedLocalsThread;
 116 
 117 
 118 /**
 119  * Provides utility methods that can be used by stubs and ties to
 120  * perform common operations.
 121  */
 122 public class Util implements javax.rmi.CORBA.UtilDelegate
 123 {
 124     // Runs as long as there are exportedServants
 125     private static KeepAlive keepAlive = null;
 126 
 127     // Maps targets to ties.
 128     private static IdentityHashtable exportedServants = new IdentityHashtable();
 129 
 130     private static final ValueHandlerImpl valueHandlerSingleton =
 131         SharedSecrets.getJavaCorbaAccess().newValueHandlerImpl();
 132 
 133     private UtilSystemException utilWrapper = UtilSystemException.get(
 134                                                   CORBALogDomains.RPC_ENCODING);
 135 


 735                     CopierManager cm = lorb.getCopierManager() ;
 736                     ObjectCopier copier = cm.getDefaultObjectCopierFactory().make() ;
 737                     return copier.copy( obj ) ;
 738                 }
 739             } catch (ReflectiveCopyException exc) {
 740                 RemoteException rexc = new RemoteException() ;
 741                 rexc.initCause( exc ) ;
 742                 throw rexc ;
 743             }
 744         } else {
 745             org.omg.CORBA_2_3.portable.OutputStream out =
 746                 (org.omg.CORBA_2_3.portable.OutputStream)orb.create_output_stream();
 747             out.write_value((Serializable)obj);
 748             org.omg.CORBA_2_3.portable.InputStream in =
 749                 (org.omg.CORBA_2_3.portable.InputStream)out.create_input_stream();
 750             return in.read_value();
 751         }
 752     }
 753 }
 754 
 755 class KeepAlive extends ManagedLocalsThread
 756 {
 757     boolean quit = false;
 758 
 759     public KeepAlive ()
 760     {
 761         setDaemon(false);
 762     }
 763 
 764     public synchronized void run ()
 765     {
 766         while (!quit) {
 767             try {
 768                 wait();
 769             } catch (InterruptedException e) {}
 770         }
 771     }
 772 
 773     public synchronized void quit ()
 774     {
 775         quit = true;


  95 import com.sun.corba.se.pept.transport.ContactInfoList ;
  96 import com.sun.corba.se.spi.orb.ORB;
  97 import com.sun.corba.se.spi.orb.ORBVersionFactory;
  98 import com.sun.corba.se.spi.protocol.CorbaClientDelegate;
  99 import com.sun.corba.se.spi.transport.CorbaContactInfoList ;
 100 import com.sun.corba.se.spi.protocol.LocalClientRequestDispatcher ;
 101 import com.sun.corba.se.spi.copyobject.ReflectiveCopyException ;
 102 import com.sun.corba.se.spi.copyobject.CopierManager ;
 103 import com.sun.corba.se.spi.copyobject.ObjectCopierFactory ;
 104 import com.sun.corba.se.spi.copyobject.ObjectCopier ;
 105 import com.sun.corba.se.impl.io.ValueHandlerImpl;
 106 import com.sun.corba.se.impl.orbutil.ORBConstants;
 107 import com.sun.corba.se.impl.orbutil.ORBUtility;
 108 import com.sun.corba.se.impl.logging.OMGSystemException;
 109 import com.sun.corba.se.impl.util.Utility;
 110 import com.sun.corba.se.impl.util.IdentityHashtable;
 111 import com.sun.corba.se.impl.util.JDKBridge;
 112 import com.sun.corba.se.impl.logging.UtilSystemException;
 113 import com.sun.corba.se.spi.logging.CORBALogDomains;
 114 import sun.corba.SharedSecrets;

 115 
 116 
 117 /**
 118  * Provides utility methods that can be used by stubs and ties to
 119  * perform common operations.
 120  */
 121 public class Util implements javax.rmi.CORBA.UtilDelegate
 122 {
 123     // Runs as long as there are exportedServants
 124     private static KeepAlive keepAlive = null;
 125 
 126     // Maps targets to ties.
 127     private static IdentityHashtable exportedServants = new IdentityHashtable();
 128 
 129     private static final ValueHandlerImpl valueHandlerSingleton =
 130         SharedSecrets.getJavaCorbaAccess().newValueHandlerImpl();
 131 
 132     private UtilSystemException utilWrapper = UtilSystemException.get(
 133                                                   CORBALogDomains.RPC_ENCODING);
 134 


 734                     CopierManager cm = lorb.getCopierManager() ;
 735                     ObjectCopier copier = cm.getDefaultObjectCopierFactory().make() ;
 736                     return copier.copy( obj ) ;
 737                 }
 738             } catch (ReflectiveCopyException exc) {
 739                 RemoteException rexc = new RemoteException() ;
 740                 rexc.initCause( exc ) ;
 741                 throw rexc ;
 742             }
 743         } else {
 744             org.omg.CORBA_2_3.portable.OutputStream out =
 745                 (org.omg.CORBA_2_3.portable.OutputStream)orb.create_output_stream();
 746             out.write_value((Serializable)obj);
 747             org.omg.CORBA_2_3.portable.InputStream in =
 748                 (org.omg.CORBA_2_3.portable.InputStream)out.create_input_stream();
 749             return in.read_value();
 750         }
 751     }
 752 }
 753 
 754 class KeepAlive extends sun.misc.ManagedLocalsThread
 755 {
 756     boolean quit = false;
 757 
 758     public KeepAlive ()
 759     {
 760         setDaemon(false);
 761     }
 762 
 763     public synchronized void run ()
 764     {
 765         while (!quit) {
 766             try {
 767                 wait();
 768             } catch (InterruptedException e) {}
 769         }
 770     }
 771 
 772     public synchronized void quit ()
 773     {
 774         quit = true;