stubconnectimpl.java

来自「JAVA 所有包」· Java 代码 · 共 99 行

JAVA
99
字号
/* * @(#)StubConnectImpl.java	1.4 05/11/17 * * Copyright 2006 Sun Microsystems, Inc. All rights reserved. * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms. */package com.sun.corba.se.impl.presentation.rmi ;import java.rmi.RemoteException;import javax.rmi.CORBA.Tie;import org.omg.CORBA.ORB;import org.omg.CORBA.SystemException;import org.omg.CORBA.BAD_OPERATION;import org.omg.CORBA.BAD_INV_ORDER;import org.omg.CORBA.portable.ObjectImpl;import org.omg.CORBA.portable.Delegate;import com.sun.corba.se.spi.presentation.rmi.StubAdapter;import com.sun.corba.se.spi.logging.CORBALogDomains ;import com.sun.corba.se.impl.util.Utility;import com.sun.corba.se.impl.ior.StubIORImpl ;import com.sun.corba.se.impl.logging.UtilSystemException ;import com.sun.corba.se.impl.corba.CORBAObjectImpl ;public abstract class StubConnectImpl {    static UtilSystemException wrapper = UtilSystemException.get(	CORBALogDomains.RMIIIOP ) ;    /** Connect the stub to the orb if necessary.      * @param ior The StubIORImpl for this stub (may be null)    * @param proxy The externally visible stub seen by the user (may be the same as stub)    * @param stub The stub implementation that extends ObjectImpl    * @param orb The ORB to which we connect the stub.    */    public static StubIORImpl connect( StubIORImpl ior, org.omg.CORBA.Object proxy, 	org.omg.CORBA.portable.ObjectImpl stub, ORB orb ) throws RemoteException     {	Delegate del = null ;	try {	    try {		del = StubAdapter.getDelegate( stub );				if (del.orb(stub) != orb) 		    throw wrapper.connectWrongOrb() ;	    } catch (org.omg.CORBA.BAD_OPERATION err) {    		if (ior == null) {		    // No IOR, can we get a Tie for this stub?		    Tie tie = (javax.rmi.CORBA.Tie) Utility.getAndForgetTie(proxy);		    if (tie == null) 			throw wrapper.connectNoTie() ;		    // Is the tie already connected?  If it is, check that it's 		    // connected to the same ORB, otherwise connect it.		    ORB existingOrb = orb ;		    try {			existingOrb = tie.orb();		    } catch (BAD_OPERATION exc) { 			// Thrown when tie is an ObjectImpl and its delegate is not set.			tie.orb(orb);		    } catch (BAD_INV_ORDER exc) { 			// Thrown when tie is a Servant and its delegate is not set.			tie.orb(orb);		    }		    if (existingOrb != orb) 			throw wrapper.connectTieWrongOrb() ;					    // Get the delegate for the stub from the tie.		    del = StubAdapter.getDelegate( tie ) ;		    ObjectImpl objref = new CORBAObjectImpl() ;		    objref._set_delegate( del ) ;		    ior = new StubIORImpl( objref ) ;		} else {		    // ior is initialized, so convert ior to an object, extract		    // the delegate, and set it on ourself		    del = ior.getDelegate( orb ) ;		}		StubAdapter.setDelegate( stub, del ) ;	    }	} catch (SystemException exc) {	    throw new RemoteException("CORBA SystemException", exc );	}	return ior ;    }}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?