2362N/A * Copyright (c) 1996, 2008, Oracle and/or its affiliates. All rights reserved. 0N/A * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 0N/A * This code is free software; you can redistribute it and/or modify it 0N/A * under the terms of the GNU General Public License version 2 only, as 2362N/A * published by the Free Software Foundation. Oracle designates this 0N/A * particular file as subject to the "Classpath" exception as provided 2362N/A * by Oracle in the LICENSE file that accompanied this code. 0N/A * This code is distributed in the hope that it will be useful, but WITHOUT 0N/A * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 0N/A * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 0N/A * version 2 for more details (a copy is included in the LICENSE file that 0N/A * accompanied this code). 0N/A * You should have received a copy of the GNU General Public License version 0N/A * 2 along with this work; if not, write to the Free Software Foundation, 0N/A * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 2362N/A * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 2362N/A * or visit www.oracle.com if you need additional information or have any 0N/A * Transport abstraction for enabling communication between different 0N/A * @author Ann Wollrath 0N/A /** "transport" package log level */ 0N/A /* transport package log */ 0N/A /** References the current transport when a call is being serviced */ 0N/A /** ObjID for DGCImpl */ 0N/A * Returns a <I>Channel</I> that generates connections to the 0N/A * endpoint <I>ep</I>. A Channel is an object that creates and 0N/A * manages connections of a particular type to some particular 0N/A * @param ep the endpoint to which connections will be generated. 0N/A * @return the channel or null if the transport cannot 0N/A * generate connections to this endpoint 0N/A * Removes the <I>Channel</I> that generates connections to the 0N/A * endpoint <I>ep</I>. 0N/A * Export the object so that it can accept incoming calls. 0N/A * Invoked when an object that was exported on this transport has 0N/A * become unexported, either by being garbage collected or by 0N/A * being explicitly unexported. 0N/A * Returns the current transport if a call is being serviced, otherwise 0N/A * Verify that the current access control context has permission to accept 0N/A * the connection being dispatched by the current thread. The current 0N/A * access control context is passed as a parameter to avoid the overhead of 0N/A * an additional call to AccessController.getContext. 0N/A * Service an incoming remote call. When a message arrives on the 0N/A * connection indicating the beginning of a remote call, the 0N/A * threads are required to call the <I>serviceCall</I> method of 0N/A * their transport. The default implementation of this method 0N/A * locates and calls the dispatcher object. Ordinarily a 0N/A * transport implementation will not need to override this method. 0N/A * At the entry to <I>tr.serviceCall(conn)</I>, the connection's 0N/A * input stream is positioned at the start of the incoming 0N/A * message. The <I>serviceCall</I> method processes the incoming 0N/A * remote invocation and sends the result on the connection's 0N/A * output stream. If it returns "true", then the remote 0N/A * invocation was processed without error and the transport can 0N/A * cache the connection. If it returns "false", a protocol error 0N/A * occurred during the call, and the transport should destroy the 0N/A /* read object id */ 0N/A /* get the remote object */ 0N/A /* call the dispatcher */ 0N/A "exception thrown by dispatcher: ",
ex);
0N/A // if calls are being logged, write out exception 0N/A // include client host name if possible 0N/A /* We will get a RemoteException if either a) the objID is 0N/A * not readable, b) the target is not in the object table, or 0N/A * c) the object is in the midst of being unexported (note: 0N/A * NoSuchObjectException is thrown by the incrementCallCount 0N/A * method if the object is being unexported). Here it is 0N/A * relatively safe to marshal an exception to the client 0N/A * since the client will not have seen a return value yet. 0N/A "exception thrown marshalling exception: ",
ie);