Spec-Zone.ru › OpenJDK 8

Класс UnicastRemoteObject

  • java.lang.Object
    • java.rmi.server.RemoteObject
      • java.rmi.server.RemoteServer
        • java.rmi.server.UnicastRemoteObject
Все реализованные интерфейсы:
Serializable, Remote
Прямые известные подклассы:
ActivationGroup

public class UnicastRemoteObject
extends RemoteServer

Используется для экспорта удаленного объекта с помощью JRMP и получения заглушки, которая взаимодействует с удаленным объектом. Заглушки генерируются либо во время выполнения с использованием динамических объектов-прокси, либо статически во время компиляции, как правило, с помощью инструмента rmic.

Устарело: Статические заглушки. Поддержка статически сгенерированных заглушек устарела. Это включает API в этом классе, который требует использования статических заглушек, а также поддержку загрузки статических заглушек во время выполнения. Предпочтительнее генерировать заглушки динамически, используя один из пяти способов экспорта объектов, указанных ниже. Не запускайте rmic для генерации статических классов заглушек. Это не нужно, и это также устарело.

Существует шесть способов экспорта удаленных объектов:

  1. Наследование от UnicastRemoteObject и вызов конструктора UnicastRemoteObject().
  2. Наследование от UnicastRemoteObject и вызов конструктора UnicastRemoteObject(port).
  3. Наследование от UnicastRemoteObject и вызов конструктора UnicastRemoteObject(port, csf, ssf).
  4. Вызов метода exportObject(Remote). Устарело.
  5. Вызов метода exportObject(Remote, port).
  6. Вызов метода exportObject(Remote, port, csf, ssf).

Четвертый метод, exportObject(Remote), всегда использует статически сгенерированные заглушки и устарел.

Другие пять методов используют следующий подход: если свойство java.rmi.server.ignoreStubClasses имеет значение true (регистр не учитывается) или если статическая заглушка не найдена, заглушки генерируются динамически с использованием объектов Proxy. В противном случае используются статические заглушки.

Значение свойства java.rmi.server.ignoreStubClasses по умолчанию равно false.

Статически сгенерированные заглушки обычно предварительно генерируются из класса удаленного объекта с помощью инструмента rmic. Статическая заглушка загружается, и создается экземпляр этого класса заглушки, как описано ниже.

  • «Корневой класс» определяется следующим образом: если класс удаленного объекта напрямую реализует интерфейс, который расширяет Remote, то класс удаленного объекта является корневым классом; в противном случае корневым классом является наиболее производный суперкласс класса удаленного объекта, который напрямую реализует интерфейс, который расширяет Remote.
  • Имя класса заглушки для загрузки определяется путем конкатенации двоичного имени корневого класса с суффиксом _Stub.
  • Класс заглушки загружается по имени с помощью загрузчика классов корневого класса. Класс заглушки должен расширять RemoteStub и должен иметь публичный конструктор, имеющий один параметр типа RemoteRef.
  • Наконец, экземпляр класса заглушки создается с помощью RemoteRef.
  • Если соответствующий класс заглушки не найден, или класс заглушки не может быть загружен, или возникла проблема при создании экземпляра заглушки, выбрасывается исключение StubNotFoundException.

Заглушки генерируются динамически путем создания экземпляра Proxy со следующими характеристиками:

  • Класс прокси определяется загрузчиком классов класса удаленного объекта.
  • Прокси реализует все удаленные интерфейсы, реализованные классом удаленного объекта.
  • Обработчик вызовов прокси — это экземпляр RemoteObjectInvocationHandler, созданный с помощью RemoteRef.
  • Если прокси не может быть создан, будет выброшено исключение StubNotFoundException.
Примечание реализации:
В зависимости от того, какой конструктор или статический метод используется для экспорта объекта, может использоваться RMISocketFactory для создания сокетов. По умолчанию серверные сокеты, созданные RMISocketFactory, прослушивают все сетевые интерфейсы. См. класс RMISocketFactory и раздел «RMI Socket Factories» в спецификации Java RMI.
С:
JDK1.1
См. также:
Сериализованная форма

Поля

Поля, унаследованные от класса java.rmi.server.RemoteObject

ref

Конструкторы

Модификатор Конструктор и описание
protected UnicastRemoteObject()

Создает и экспортирует новый объект UnicastRemoteObject, используя анонимный порт.

protected UnicastRemoteObject(int port)

Создает и экспортирует новый объект UnicastRemoteObject, используя указанный порт.

protected UnicastRemoteObject(int port, RMIClientSocketFactory csf, RMIServerSocketFactory ssf)

Создает и экспортирует новый объект UnicastRemoteObject, используя указанный порт и фабрики сокетов.

Методы

Модификатор и тип Метод и описание
Object clone()

Возвращает клонированный удаленный объект, отличный от оригинального.

static RemoteStub exportObject(Remote obj)

Устарело.

Этот метод устарел, так как он поддерживает только статические заглушки. Используйте exportObject(Remote, port) или exportObject(Remote, port, csf, ssf) вместо этого.

static Remote exportObject(Remote obj, int port)

Экспортирует удаленный объект, чтобы сделать его доступным для получения входящих вызовов, используя указанный порт.

static Remote exportObject(Remote obj, int port, RMIClientSocketFactory csf, RMIServerSocketFactory ssf)

Экспортирует удаленный объект, чтобы сделать его доступным для получения входящих вызовов, используя транспорт, заданный данной фабрикой сокетов.

static boolean unexportObject(Remote obj, boolean force)

Удаляет удаленный объект obj из среды RMI.

Методы, унаследованные от класса java.rmi.server.RemoteServer

getClientHost, getLog, setLog

Методы, унаследованные от класса java.rmi.server.RemoteObject

equals, getRef, hashCode, toString, toStub

Методы, унаследованные от класса java.lang.Object

finalize, getClass, notify, notifyAll, wait, wait, wait

Конструкторы

UnicastRemoteObject

protected UnicastRemoteObject()
                       throws RemoteException

Создаёт и экспортирует новый объект UnicastRemoteObject, используя анонимный порт.

Объект экспортируется с помощью сокета сервера, созданного с использованием класса RMISocketFactory.

Исключения:
RemoteException - если объект не удалось экспортировать
С:
JDK1.1

UnicastRemoteObject

protected UnicastRemoteObject(int port)
                       throws RemoteException

Создаёт и экспортирует новый объект UnicastRemoteObject, используя указанный порт.

Объект экспортируется с помощью сокета сервера, созданного с использованием класса RMISocketFactory.

Параметры:
port - номер порта, на котором удалённый объект принимает вызовы (если port равно нулю, выбирается анонимный порт)
Исключения:
RemoteException - если объект не удалось экспортировать
С:
1.2

UnicastRemoteObject

protected UnicastRemoteObject(int port,
                              RMIClientSocketFactory csf,
                              RMIServerSocketFactory ssf)
                       throws RemoteException

Создаёт и экспортирует новый объект UnicastRemoteObject, используя указанный порт и фабрики сокетов.

Любая из фабрик сокетов может быть null, в этом случае соответствующий метод создания сокета клиента или сервера из RMISocketFactory используется вместо неё.

Параметры:
port - номер порта, на котором удалённый объект принимает вызовы (если port равно нулю, выбирается анонимный порт)
csf - фабрика сокетов для клиентской стороны для совершения вызовов удалённому объекту
ssf - фабрика сокетов для серверной стороны для получения удалённых вызовов
Исключения:
RemoteException - если объект не удалось экспортировать
С:
1.2

Методы

clone

public Object clone()
             throws CloneNotSupportedException

Возвращает клон удалённого объекта, который отличается от исходного.

Переопределяет:
clone в классе Object
Возвращает:
новый удалённый объект
Исключения:
CloneNotSupportedException - если клонирование завершилось неудачно из-за RemoteException.
С:
JDK1.1
См. также:
Cloneable

exportObject

@Deprecated
public static RemoteStub exportObject(Remote obj)
                                           throws RemoteException

Устаревший. Этот метод устарел, так как поддерживает только статические заглушки. Используйте exportObject(Remote, port) или exportObject(Remote, port, csf, ssf) вместо него.

Экспортирует удалённый объект, чтобы сделать его доступным для получения входящих вызовов, используя анонимный порт. Этот метод всегда вернёт статически сгенерированную заглушку.

Объект экспортируется с помощью сокета сервера, созданного с использованием класса RMISocketFactory.

Параметры:
obj - удалённый объект, который необходимо экспортировать
Возвращает:
заглушка удалённого объекта
Исключения:
RemoteException - если экспорт завершился неудачно
С:
JDK1.1

exportObject

public static Remote exportObject(Remote obj,
                                  int port)
                           throws RemoteException

Экспортирует удалённый объект, чтобы сделать его доступным для получения входящих вызовов, используя указанный порт.

Объект экспортируется с помощью сокета сервера, созданного с использованием класса RMISocketFactory.

Параметры:
obj - удалённый объект, который необходимо экспортировать
port - порт для экспорта объекта
Возвращает:
заглушка удалённого объекта
Исключения:
RemoteException - если экспорт завершился неудачно
С:
1.2

exportObject

public static Remote exportObject(Remote obj,
                                  int port,
                                  RMIClientSocketFactory csf,
                                  RMIServerSocketFactory ssf)
                           throws RemoteException

Экспортирует удалённый объект, чтобы сделать его доступным для получения входящих вызовов, используя транспорт, указанный заданной фабрикой сокетов.

Любая из фабрик сокетов может быть null, в этом случае соответствующий метод создания сокета клиента или сервера из RMISocketFactory используется вместо неё.

Параметры:
obj - удалённый объект, который необходимо экспортировать
port - порт для экспорта объекта
csf - фабрика сокетов для клиентской стороны для совершения вызовов удалённому объекту
ssf - фабрика сокетов для серверной стороны для получения удалённых вызовов
Возвращает:
заглушка удалённого объекта
Исключения:
RemoteException - если экспорт завершился неудачно
С:
1.2

unexportObject

public static boolean unexportObject(Remote obj,
                                     boolean force)
                              throws NoSuchObjectException

Удаляет удалённый объект, obj, из среды выполнения RMI. При успешном выполнении объект больше не может принимать входящие вызовы RMI. Если параметр force равен true, объект принудительно снимается с экспорта, даже если есть ожидающие вызовы удалённому объекту или удалённый объект всё ещё имеет входящие вызовы. Если параметр force равен false, объект снимается с экспорта только если нет ожидающих или текущих вызовов объекту.

Параметры:
obj - удалённый объект, который нужно снять с экспорта
force - если true, снимает объект с экспорта, даже если есть ожидающие или текущие вызовы; если false, снимает объект с экспорта только если нет ожидающих или текущих вызовов
Возвращает:
true, если операция выполнена успешно, false в противном случае
Исключения:
NoSuchObjectException - если удалённый объект не экспортирован в данный момент
С:
1.2

© 1993, 2020, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API