Categories:
Audio (13)
Biotech (29)
Bytecode (36)
Database (77)
Framework (7)
Game (7)
General (507)
Graphics (53)
I/O (35)
IDE (2)
JAR Tools (101)
JavaBeans (21)
JDBC (121)
JDK (426)
JSP (20)
Logging (108)
Mail (58)
Messaging (8)
Network (84)
PDF (97)
Report (7)
Scripting (84)
Security (32)
Server (121)
Servlet (26)
SOAP (24)
Testing (54)
Web (15)
XML (309)
Collections:
Other Resources:
JDK 11 java.rmi.jmod - RMI Module
JDK 11 java.rmi.jmod is the JMOD file for JDK 11 RMI (Remote Method Invocation) module.
JDK 11 RMI module compiled class files are stored in \fyicenter\jdk-11.0.1\jmods\java.rmi.jmod.
JDK 11 RMI module compiled class files are also linked and stored in the \fyicenter\jdk-11.0.1\lib\modules JImage file.
JDK 11 RMI module source code files are stored in \fyicenter\jdk-11.0.1\lib\src.zip\java.rmi.
You can click and view the content of each source code file in the list below.
✍: FYIcenter
⏎ sun/rmi/transport/Transport.java
/* * Copyright (c) 1996, 2014, Oracle and/or its affiliates. All rights reserved. * ORACLE PROPRIETARY/CONFIDENTIAL. Use is subject to license terms. * * * * * * * * * * * * * * * * * * * * */ package sun.rmi.transport; import java.io.IOException; import java.io.ObjectOutput; import java.rmi.MarshalException; import java.rmi.NoSuchObjectException; import java.rmi.Remote; import java.rmi.RemoteException; import java.rmi.server.LogStream; import java.rmi.server.ObjID; import java.rmi.server.RemoteCall; import java.rmi.server.RemoteServer; import java.rmi.server.ServerNotActiveException; import java.security.AccessControlContext; import java.security.AccessController; import java.security.Permissions; import java.security.PrivilegedAction; import java.security.ProtectionDomain; import sun.rmi.runtime.Log; import sun.rmi.server.Dispatcher; import sun.rmi.server.UnicastServerRef; /** * Transport abstraction for enabling communication between different * VMs. * * @author Ann Wollrath */ @SuppressWarnings("deprecation") public abstract class Transport { /** "transport" package log level */ static final int logLevel = LogStream.parseLevel(getLogLevel()); private static String getLogLevel() { return java.security.AccessController.doPrivileged( (PrivilegedAction<String>) () -> System.getProperty("sun.rmi.transport.logLevel")); } /* transport package log */ static final Log transportLog = Log.getLog("sun.rmi.transport.misc", "transport", Transport.logLevel); /** References the current transport when a call is being serviced */ private static final ThreadLocal<Transport> currentTransport = new ThreadLocal<>(); /** ObjID for DGCImpl */ private static final ObjID dgcID = new ObjID(ObjID.DGC_ID); /** AccessControlContext for setting context ClassLoader */ private static final AccessControlContext SETCCL_ACC; static { Permissions perms = new Permissions(); perms.add(new RuntimePermission("setContextClassLoader")); ProtectionDomain[] pd = { new ProtectionDomain(null, perms) }; SETCCL_ACC = new AccessControlContext(pd); } /** * Returns a <I>Channel</I> that generates connections to the * endpoint <I>ep</I>. A Channel is an object that creates and * manages connections of a particular type to some particular * address space. * @param ep the endpoint to which connections will be generated. * @return the channel or null if the transport cannot * generate connections to this endpoint */ public abstract Channel getChannel(Endpoint ep); /** * Removes the <I>Channel</I> that generates connections to the * endpoint <I>ep</I>. */ public abstract void free(Endpoint ep); /** * Export the object so that it can accept incoming calls. */ public void exportObject(Target target) throws RemoteException { target.setExportedTransport(this); ObjectTable.putTarget(target); } /** * Invoked when an object that was exported on this transport has * become unexported, either by being garbage collected or by * being explicitly unexported. **/ protected void targetUnexported() { } /** * Returns the current transport if a call is being serviced, otherwise * returns null. **/ static Transport currentTransport() { return currentTransport.get(); } /** * Verify that the current access control context has permission to accept * the connection being dispatched by the current thread. The current * access control context is passed as a parameter to avoid the overhead of * an additional call to AccessController.getContext. */ protected abstract void checkAcceptPermission(AccessControlContext acc); /** * Sets the context class loader for the current thread. */ private static void setContextClassLoader(ClassLoader ccl) { AccessController.doPrivileged((PrivilegedAction<Void>)() -> { Thread.currentThread().setContextClassLoader(ccl); return null; }, SETCCL_ACC); } /** * Service an incoming remote call. When a message arrives on the * connection indicating the beginning of a remote call, the * threads are required to call the <I>serviceCall</I> method of * their transport. The default implementation of this method * locates and calls the dispatcher object. Ordinarily a * transport implementation will not need to override this method. * At the entry to <I>tr.serviceCall(conn)</I>, the connection's * input stream is positioned at the start of the incoming * message. The <I>serviceCall</I> method processes the incoming * remote invocation and sends the result on the connection's * output stream. If it returns "true", then the remote * invocation was processed without error and the transport can * cache the connection. If it returns "false", a protocol error * occurred during the call, and the transport should destroy the * connection. */ public boolean serviceCall(final RemoteCall call) { try { /* read object id */ final Remote impl; ObjID id; try { id = ObjID.read(call.getInputStream()); } catch (java.io.IOException e) { throw new MarshalException("unable to read objID", e); } /* get the remote object */ Transport transport = id.equals(dgcID) ? null : this; Target target = ObjectTable.getTarget(new ObjectEndpoint(id, transport)); if (target == null || (impl = target.getImpl()) == null) { throw new NoSuchObjectException("no such object in table"); } final Dispatcher disp = target.getDispatcher(); target.incrementCallCount(); try { /* call the dispatcher */ transportLog.log(Log.VERBOSE, "call dispatcher"); final AccessControlContext acc = target.getAccessControlContext(); ClassLoader ccl = target.getContextClassLoader(); ClassLoader savedCcl = Thread.currentThread().getContextClassLoader(); try { setContextClassLoader(ccl); currentTransport.set(this); try { java.security.AccessController.doPrivileged( new java.security.PrivilegedExceptionAction<Void>() { public Void run() throws IOException { checkAcceptPermission(acc); disp.dispatch(impl, call); return null; } }, acc); } catch (java.security.PrivilegedActionException pae) { throw (IOException) pae.getException(); } } finally { setContextClassLoader(savedCcl); currentTransport.set(null); } } catch (IOException ex) { transportLog.log(Log.BRIEF, "exception thrown by dispatcher: ", ex); return false; } finally { target.decrementCallCount(); } } catch (RemoteException e) { // if calls are being logged, write out exception if (UnicastServerRef.callLog.isLoggable(Log.BRIEF)) { // include client host name if possible String clientHost = ""; try { clientHost = "[" + RemoteServer.getClientHost() + "] "; } catch (ServerNotActiveException ex) { } String message = clientHost + "exception: "; UnicastServerRef.callLog.log(Log.BRIEF, message, e); } /* We will get a RemoteException if either a) the objID is * not readable, b) the target is not in the object table, or * c) the object is in the midst of being unexported (note: * NoSuchObjectException is thrown by the incrementCallCount * method if the object is being unexported). Here it is * relatively safe to marshal an exception to the client * since the client will not have seen a return value yet. */ try { ObjectOutput out = call.getResultStream(false); UnicastServerRef.clearStackTraces(e); out.writeObject(e); call.releaseOutputStream(); } catch (IOException ie) { transportLog.log(Log.BRIEF, "exception thrown marshalling exception: ", ie); return false; } } return true; } }
⏎ sun/rmi/transport/Transport.java
Or download all of them as a single archive file:
File name: java.rmi-11.0.1-src.zip File size: 275032 bytes Release date: 2018-11-04 Download
⇒ JDK 11 java.scripting.jmod - Scripting Module
2023-10-10, 37750👍, 1💬
Popular Posts:
JDK 11 jdk.internal.vm.ci.jmod is the JMOD file for JDK 11 Internal VM CI module. JDK 11 Internal VM...
The JSR 105 XML Digital Signature 1.0.1 FCS implementation provides an API and implementation that a...
Apache Ant Source Code Files are inside the Apache Ant source package file like apache-ant-1.10.10-s...
What Is commons-fileupload-1.3.3 .jar?commons-fileupload-1.3.3 .jaris the JAR file for Apache Common...
What Is poi-contrib-3.5.jar? poi-contrib-3.5.jar is one of the JAR files for Apache POI 3.5, which p...