📄 inssubcontract.java
字号:
/* * @(#)INSSubcontract.java 1.4 03/01/23 * * Copyright 2003 Sun Microsystems, Inc. All rights reserved. * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms. *//* * Licensed Materials - Property of IBM * RMI-IIOP v1.0 * Copyright IBM Corp. 1998 1999 All Rights Reserved * * US Government Users Restricted Rights - Use, duplication or * disclosure restricted by GSA ADP Schedule Contract with IBM Corp. */package com.sun.corba.se.internal.corba;import org.omg.CORBA.NO_IMPLEMENT;import org.omg.CORBA.OBJECT_NOT_EXIST;import org.omg.CORBA.CompletionStatus;import org.omg.CORBA.ORB;import com.sun.corba.se.internal.core.ServerSubcontract;import com.sun.corba.se.internal.core.IOR;import com.sun.corba.se.internal.core.INSObjectKeyMap;import com.sun.corba.se.internal.core.INSObjectKeyEntry;import com.sun.corba.se.internal.core.ServerRequest;import com.sun.corba.se.internal.core.ServerResponse;import com.sun.corba.se.internal.ior.ObjectKey;import com.sun.corba.se.internal.orbutil.MinorCodes;/** * INSSubcontract handles all INS related discovery request. The INSService * can be registered using ORB.register_initial_reference(), these registrations * will be maintained in INSObjectKeyMap. This Singleton subcontract just * finds the target IOR and does location forward. * NOTE: PI points are not invoked in either dispatch() or locate() method this * should be fixed in Tiger. */ public class INSSubcontract implements ServerSubcontract { private ORB orb = null; public INSSubcontract( ORB orb ) { this.orb = orb; } // Need to signal one of OBJECT_HERE, OBJECT_FORWARD, OBJECT_NOT_EXIST. public IOR locate(ObjectKey okey) { // send a locate forward with the right IOR. If the insKey is not // registered then it will throw OBJECT_NOT_EXIST Exception String insKey = new String( okey.getBytes(orb) ); return getINSReference( insKey ); } public ServerResponse dispatch(ServerRequest request) { // send a locate forward with the right IOR. If the insKey is not // registered then it will throw OBJECT_NOT_EXIST Exception String insKey = new String( request.getObjectKey().getBytes(orb) ); return request.createLocationForward( getINSReference( insKey ), null); } /** * getINSReference if it is registered in INSObjectKeyMap. */ protected IOR getINSReference( String insKey ) { INSObjectKeyEntry entry = INSObjectKeyMap.getInstance().getEntry(insKey); if( entry != null ) { // If entry is not null then the locate is with an INS Object key, // so send a location forward with the right IOR. return entry.getIOR( ); } throw new OBJECT_NOT_EXIST(MinorCodes.SERVANT_NOT_FOUND, CompletionStatus.COMPLETED_NO); } public boolean isServantSupported() { return false; } public void destroyObjref(Object objref) { throw new NO_IMPLEMENT(); } public Object createObjref(IOR ior) { throw new NO_IMPLEMENT(); } public Object createObjref(byte[] key, Object servant) { throw new NO_IMPLEMENT(); } public Object getServant(IOR ior) { throw new NO_IMPLEMENT(); } public Class getClientSubcontractClass() { return null; } public void setId(int id) { throw new NO_IMPLEMENT(); } public int getId() { throw new NO_IMPLEMENT(); } private INSSubcontract( ) { orb = ORB.init( (String[]) null, (java.util.Properties) null ); } public void setOrb(com.sun.corba.se.internal.core.ORB orb) { this.orb = orb; }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -