⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 utildelegateimpl.java

📁 gcc的组建
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
    String p_useCodebaseOnly = System.getProperty("java.rmi.server.useCodebaseOnly");    boolean useCodebaseOnly = p_useCodebaseOnly != null      && p_useCodebaseOnly.trim().equalsIgnoreCase("true");    try      {        if (remoteCodebase != null && !useCodebaseOnly)          return RMIClassLoader.loadClass(remoteCodebase, className);      }    catch (Exception e)      {        // This failed but try others.      }    try      {        if (remoteCodebase == null || useCodebaseOnly)          return RMIClassLoader.loadClass(remoteCodebase, className);      }    catch (Exception e)      {        // This failed but try others.      }    if (loader != null)      return Class.forName(className, true, loader);    throw new ClassNotFoundException(className + " at " + remoteCodebase);  }  /**   * Converts CORBA {@link SystemException} into RMI {@link RemoteException}.   * The exception is converted as defined in the following table:   * <p>   * <table border = "1">   * <tr>   * <th>CORBA Exception</th>   * <th>RMI Exception</th>   * </tr>   * <tr>   * <td>{@link COMM_FAILURE}</td>   * <td>{@link MarshalException}</td>   * </tr>   * <tr>   * <td>{@link INV_OBJREF}</td>   * <td>{@link  NoSuchObjectException}</td>   * </tr>   * <tr>   * <td>{@link NO_PERMISSION}</td>   * <td>{@link  AccessException}</td>   * </tr>   * <tr>   * <td>{@link MARSHAL}</td>   * <td>{@link  MarshalException}</td>   * </tr>   * <tr>   * <td>{@link BAD_PARAM} (all other cases)</td>   * <td>{@link  MarshalException}</td>   * </tr>   * <tr>   * <td>{@link OBJECT_NOT_EXIST}</td>   * <td>{@link  NoSuchObjectException}</td>   * </tr>   * <tr>   * <td>{@link TRANSACTION_REQUIRED}</td>   * <td>{@link  TransactionRequiredException}</td>   * </tr>   * <tr>   * <td>{@link TRANSACTION_ROLLEDBACK}</td>   * <td>{@link  TransactionRolledbackException}</td>   * </tr>   * <tr>   * <td>{@link INVALID_TRANSACTION}</td>   * <td>{@link  InvalidTransactionException}</td>   * </tr>   * <tr>   * <td bgcolor="lightgray">Any other {@link SystemException}</td>   * <td bgcolor="lightgray">{@link RemoteException}</td>   * </tr>   * </table>   * </p>   * <p>   * The exception detailed message always consists of   * <ol>   * <li>the string "CORBA "</li>   * <li>the CORBA name of the system exception</li>   * <li>single space</li>   * <li>the hexadecimal value of the system exception's minor code, preceeded   * by 0x (higher bits contain {@link OMGVMCID}).</li>   * <li>single space</li>   * <li>the {@link CompletionStatus} of the exception: "Yes", "No" or "Maybe".</li>   * </ol>   * <p>   * For instance, if the Internet connection was refused:   * </p>   * <p>   * <pre>   * <code>CORBA COMM_FAILURE 0x535500C9 No</code>   * </p>   * <p>   * The original CORBA exception is set as the cause of the RemoteException   * being created.   * </p>   */  public RemoteException mapSystemException(SystemException ex)  {    RemoteException rex;    String status;    switch (ex.completed.value())      {        case CompletionStatus._COMPLETED_MAYBE:          status = "Maybe";          break;        case CompletionStatus._COMPLETED_NO:          status = "No";          break;        case CompletionStatus._COMPLETED_YES:          status = "Yes";          break;        default:          status = "Unexpected completion status " + ex.completed.value();      }    String name = ex.getClass().getName();    if (name.startsWith(m_StandardPackage))      name = name.substring(m_StandardPackage.length());    String message = "CORBA " + name + " 0x" + Integer.toHexString(ex.minor)      + " " + status;    if (ex instanceof COMM_FAILURE)      rex = new MarshalException(message, ex);    else if (ex instanceof INV_OBJREF)      {        rex = new NoSuchObjectException(message);        rex.detail = ex;      }    else if (ex instanceof NO_PERMISSION)      rex = new AccessException(message, ex);    else if (ex instanceof MARSHAL)      rex = new MarshalException(message, ex);    else if (ex instanceof BAD_PARAM)      rex = new MarshalException(message, ex);    else if (ex instanceof OBJECT_NOT_EXIST)      {        rex = new NoSuchObjectException(message);        rex.detail = ex;      }    else if (ex instanceof TRANSACTION_REQUIRED)      {        rex = new TransactionRequiredException(message);        rex.detail = ex;      }    else if (ex instanceof TRANSACTION_ROLLEDBACK)      {        rex = new TransactionRolledbackException(message);        rex.detail = ex;      }    else if (ex instanceof INVALID_TRANSACTION)      {        rex = new InvalidTransactionException(message);        rex.detail = ex;      }    else if (ex instanceof UNKNOWN)      rex = wrapException(ex.getCause());    else      rex = new RemoteException(message, ex);    return rex;  }  /**   * Converts the exception that was thrown by the implementation method on a   * server side into RemoteException that can be transferred and re-thrown on a   * client side. The method converts exceptions as defined in the following   * table: <table border = "1">   * <tr>   * <th>Exception to map (or subclass)</th>   * <th>Maps into</th>   * </tr>   * <tr>   * <td>{@link Error}</td>   * <td>{@link ServerError}</td>   * </tr>   * <tr>   * <td>{@link RemoteException}</td>   * <td>{@link ServerException}</td>   * </tr>   * <tr>   * <td>{@link SystemException}</td>   * <td>wrapException({@link #mapSystemException})</td>   * </tr>   * <tr>   * <td>{@link RuntimeException}</td>   * <td><b>rethrows</b></td>   * </tr>   * <tr>   * <td>Any other exception</td>   * <td>{@link UnexpectedException}</td>   * </tr>   * </table>   *    * @param ex an exception that was thrown on a server side implementation.   *    * @return the corresponding RemoteException unless it is a RuntimeException.   *    * @throws RuntimeException the passed exception if it is an instance of   * RuntimeException.   *    * @specnote It is the same behavior, as in Suns implementations 1.4.0-1.5.0.   */  public RemoteException wrapException(Throwable ex)    throws RuntimeException  {    if (ex instanceof RuntimeException)      throw (RuntimeException) ex;    else if (ex instanceof Error)      return new ServerError(ex.getMessage(), (Error) ex);    else if (ex instanceof RemoteException)      return new ServerException(ex.getMessage(), (Exception) ex);    else if (ex instanceof SystemException)      return wrapException(mapSystemException((SystemException) ex));    else      return new UnexpectedException("Unexpected", (Exception) ex);  }  /**   * Write abstract interface to the CORBA output stream. The write format is   * matching CORBA abstract interface. Remotes and CORBA objects are written as   * objects, other classes are supposed to be value types and are written as   * such. {@link Remote}s are processed as defined in   * {@link #writeRemoteObject}. The written data contains discriminator,   * defining, that was written. Another method that writes the same content is   * {@link org.omg.CORBA_2_3.portable.OutputStream#write_abstract_interface(java.lang.Object)}.   *    * @param output a stream to write to, must be   * {@link org.omg.CORBA_2_3.portable.OutputStream}.   *    * @param object an object to write, must be CORBA object, Remote   */  public void writeAbstractObject(OutputStream output, Object object)  {    ((org.omg.CORBA_2_3.portable.OutputStream) output).write_abstract_interface(object);  }  /**   * Write the passed java object to the output stream in the form of the CORBA   * {@link Any}. This includes creating an writing the object {@link TypeCode}   * first. Such Any can be later read by a non-RMI-IIOP CORBA implementation   * and manipulated, for instance, by means, provided in   * {@link org.omg.DynamicAny.DynAny}. Depending from the passed value, this   * method writes CORBA object, value type or value box. For value types Null   * is written with the abstract interface, its typecode having repository id   * "IDL:omg.org/CORBA/AbstractBase:1.0" and the empty string name.   *    * @param output the object to write.   * @param object the java object that must be written in the form of the CORBA   * {@link Any}.   */  public void writeAny(OutputStream output, Object object)  {    Any any = output.orb().create_any();    if (object == null)      {        GeneralTypeCode t = new GeneralTypeCode(TCKind.tk_abstract_interface);        t.setId("IDL:omg.org/CORBA/AbstractBase:1.0");        t.setName("");        any.type(t);        output.write_any(any);        return;      }    else if (object instanceof org.omg.CORBA.Object      && !(object instanceof Remote))      {        // Write as value type.        boolean inserted = ObjectCreator.insertWithHelper(any, object);        if (inserted)          {            output.write_any(any);            return;          }      }    if (object instanceof org.omg.CORBA.Object)      writeAnyAsRemote(output, object);    else if (object instanceof Serializable)      {        any.insert_Value((Serializable) object);        output.write_any(any);      }    else      {        MARSHAL m = new MARSHAL(object.getClass().getName()          + " must be CORBA Object, Remote or Serializable");        m.minor = Minor.NonSerializable;        throw m;      }  }  /**   * Write Any as for remote object.   */  void writeAnyAsRemote(OutputStream output, Object object)  {    GeneralTypeCode t = new GeneralTypeCode(TCKind.tk_objref);    t.setId(m_ValueHandler.getRMIRepositoryID(object.getClass()));    t.setName(object.getClass().getName());    // Writing Any (typecode, followed by value).    output.write_TypeCode(t);    writeRemoteObject(output, object);  }  /**   * Get the class name excluding the package name.   */  String getName(String n)  {    int p = n.lastIndexOf('.');    if (p < 0)      return n;    else      return n.substring(p + 1);  }  /**   * Read Any from the input stream.   */  public Object readAny(InputStream input)  {    return input.read_any();  }  /**   * Write the passed parameter to the output stream as CORBA object. If the   * parameter is an instance of Remote and not an instance of Stub, the method   * instantiates a suitable Tie, connects the parameter to this Tie and then   * connects that Tie to the ORB that is requested from the output stream. Then   * the object reference is written to the stream, making remote invocations   * possible. This method is used in write_value(..) method group in   * {@link org.omg.CORBA_2_3.portable.OutputStream} and also may be called   * directly from generated Stubs and Ties.   *    * @param output a stream to write to, must be   * org.omg.CORBA_2_3.portable.OutputStream   * @param object an object to write.   */  public void writeRemoteObject(OutputStream an_output, Object object)  {    org.omg.CORBA_2_3.portable.OutputStream output = (org.omg.CORBA_2_3.portable.OutputStream) an_output;    if (object == null)      an_output.write_Object(null);    else if (isTieRequired(object))      {        // Find the interface that is implemented by the object and extends        // Remote.        Class fc = getExportedInterface(object);        exportTie(output, object, fc);      }    else if (object instanceof org.omg.CORBA.Object)      {        ensureOrbRunning(output);        an_output.write_Object((org.omg.CORBA.Object) object);      }    else if (object != null && object instanceof Serializable)      writeFields(an_output, (Serializable) object);  }}

⌨️ 快捷键说明

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