bootstrapserverrequestdispatcher.java

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

JAVA
132
字号
/* * @(#)BootstrapServerRequestDispatcher.java	1.26 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.protocol ;import java.util.Iterator ;import org.omg.CORBA.SystemException ;import com.sun.corba.se.pept.protocol.MessageMediator;import com.sun.corba.se.spi.ior.IOR ;import com.sun.corba.se.spi.ior.ObjectKey ;import com.sun.corba.se.spi.orb.ORB ;import com.sun.corba.se.spi.protocol.CorbaServerRequestDispatcher ;import com.sun.corba.se.spi.protocol.CorbaMessageMediator;import com.sun.corba.se.impl.encoding.MarshalInputStream ;import com.sun.corba.se.impl.encoding.MarshalOutputStream ;import com.sun.corba.se.spi.logging.CORBALogDomains ;import com.sun.corba.se.impl.logging.ORBUtilSystemException ;/** * Class BootstrapServerRequestDispatcher handles the requests coming to the * BootstrapServer. It implements Server so that it can be registered * as a subcontract. It is passed a BootstrapServiceProperties object * which contains * the supported ids and their values for the bootstrap service. This * Properties object is only read from, never written to, and is shared * among all threads. * <p> * The BootstrapServerRequestDispatcher responds primarily to GIOP requests, * but LocateRequests are also handled for graceful interoperability. * The BootstrapServerRequestDispatcher handles one request at a time. */public class BootstrapServerRequestDispatcher     implements CorbaServerRequestDispatcher{    private ORB orb;    ORBUtilSystemException wrapper ;    private static final boolean debug = false;    public BootstrapServerRequestDispatcher(ORB orb )    {	this.orb = orb;	this.wrapper = ORBUtilSystemException.get( orb,	    CORBALogDomains.RPC_PROTOCOL ) ;    }        /**     * Dispatch is called by the ORB and will serve get(key) and list()     * invocations on the initial object key.     */    public void dispatch(MessageMediator messageMediator)    {	CorbaMessageMediator request = (CorbaMessageMediator) messageMediator;	CorbaMessageMediator response = null;	try {	    MarshalInputStream is = (MarshalInputStream) 		request.getInputObject();	    String method = request.getOperationName();	    response = request.getProtocolHandler().createResponse(request, null);	    MarshalOutputStream os = (MarshalOutputStream) 		response.getOutputObject();            if (method.equals("get")) {                // Get the name of the requested service                String serviceKey = is.read_string();                // Look it up		org.omg.CORBA.Object serviceObject = 		    orb.getLocalResolver().resolve( serviceKey ) ;                // Write reply value                os.write_Object(serviceObject);            } else if (method.equals("list")) {		java.util.Set keys = orb.getLocalResolver().list() ;		os.write_long( keys.size() ) ;		Iterator iter = keys.iterator() ;		while (iter.hasNext()) {		    String obj = (String)iter.next() ;		    os.write_string( obj ) ;		}	    } else {		throw wrapper.illegalBootstrapOperation( method ) ;            }	} catch (org.omg.CORBA.SystemException ex) {            // Marshal the exception thrown	    response = request.getProtocolHandler().createSystemExceptionResponse(		request, ex, null);	} catch (java.lang.RuntimeException ex) {            // Unknown exception	    SystemException sysex = wrapper.bootstrapRuntimeException( ex ) ;	    response = request.getProtocolHandler().createSystemExceptionResponse(                 request, sysex, null ) ;	} catch (java.lang.Exception ex) {            // Unknown exception	    SystemException sysex = wrapper.bootstrapException( ex ) ;	    response = request.getProtocolHandler().createSystemExceptionResponse(                 request, sysex, null ) ;	}	return;    }    /**     * Locates the object mentioned in the locate requests, and returns     * object here iff the object is the initial object key. A SystemException     * thrown if the object key is not the initial object key.     */    public IOR locate( ObjectKey objectKey) {	return null;    }    /**     * Not implemented     */    public int getId() {	throw wrapper.genericNoImpl() ;    }}

⌨️ 快捷键说明

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