Spec-Zone .ru
спецификации, руководства, описания, API
|
СОДЕРЖАНИЕ | ПРЕДЫДУЩИЙ | NEXT | Java Удаленный Вызов метода |
UnicastRemoteObject
Классjava.rmi.server.UnicastRemoteObject
оказывает поддержку для создания и экспорта удаленных объектов. Класс реализует объект удаленного сервера со следующими характеристиками: package java.rmi.server; public class UnicastRemoteObject extends RemoteServer { protected UnicastRemoteObject() throws java.rmi.RemoteException {...} protected UnicastRemoteObject(int port) throws java.rmi.RemoteException {...} protected UnicastRemoteObject(int port, RMIClientSocketFactory csf, RMIServerSocketFactory ssf) throws java.rmi.RemoteException {...} public Object clone() throws java.lang.CloneNotSupportedException {...} public static RemoteStub exportObject(java.rmi.Remote obj) throws java.rmi.RemoteException {...} public static Remote exportObject(java.rmi.Remote obj, int port) throws java.rmi.RemoteException {...} public static Remote exportObject(Remote obj, int port, RMIClientSocketFactory csf, RMIServerSocketFactory ssf) throws java.rmi.RemoteException {...} public static boolean unexportObject(java.rmi.Remote obj, boolean force) throws java.rmi.NoSuchObjectException {...} }
UnicastRemoteObject
, экспорт включает слушание на порту TCP (отметьте, что больше чем один удаленный объект может признать, что входящие вызовы на том же самом порту, таким образом слушая на новом порту не всегда необходимы). Реализация удаленного объекта может расширить класс UnicastRemoteObject
чтобы использовать его конструкторов, которые экспортируют объект, или он может расширить некоторый другой класс (или ни один вообще) и экспортировать объект через UnicastRemoteObject
's exportObject
методы. Никакой конструктор параметра не создает и экспортирует удаленный объект на анонимном (или произвольный) порт, выбранный во время выполнения. Вторая форма конструктора берет единственный параметр, порт, который определяет номер порта, на котором удаленный объект принимает входящие вызовы. Третий конструктор создает и экспортирует удаленный объект, который принимает входящие вызовы на указанном порту через a ServerSocket
создаваемый из RMIServerSocketFactory
; клиенты сделают соединения с удаленным объектом через Socket
s предоставленный от RMIClientSocketFactory
.
RemoteObject
exportObject
метод (любая из форм) используется, чтобы экспортировать простой одноранговый удаленный объект, который не реализуется, расширяясь UnicastRemoteObject
класс. Первая форма exportObject
метод берет единственный параметр, obj, который является удаленным объектом, который примет входящие вызовы RMI; это exportObject
метод экспортирует объект на анонимном (или произвольный) порт, выбранный во время выполнения. Второе exportObject
метод берет два параметра, и удаленный объект, obj, и порт, номер порта, на котором удаленный объект принимает входящие вызовы. Третье exportObject
метод экспортирует объект, obj, с указанным RMIClientSocketFactory
, csf, и RMIServerSocketFactory
, ssf, на указанном порту. exportObject
метод возвращает a Remote
тупик, который является тупиковым объектом для удаленного объекта, obj
, это передают вместо удаленного объекта в вызове RMI.
UnicastRemoteObject
в Вызове RMIUnicastRemoteObject
передается в качестве параметра или возвращаемое значение в вызове RMI, объект заменяется тупиком удаленного объекта. Экспортируемая реализация удаленного объекта остается в виртуальной машине, в которую она создавалась и не перемещается (даже значением) от той виртуальной машины. Другими словами экспортируемый удаленный объект передает ссылка в вызове RMI; экспортируемые реализации удаленного объекта не может передать значение. UnicastRemoteObject
UnicastRemoteObject
переходный процесс и не сохраняется, если объект того типа пишется определяемому пользователем ObjectOutputStream
(например, если объект пишется файлу, используя сериализацию). Объект, который является экземпляром определяемого пользователем подкласса UnicastRemoteObject
, однако, может иметь нетекущие данные, которые могут быть сохранены, когда объект сериализируется. Когда a UnicastRemoteObject
читается из ObjectInputStream
использование UnicastRemoteObject
's readObject
метод, удаленный объект автоматически экспортируется во время выполнения RMI так, чтобы это могло получить вызовы RMI. Если экспорт объектных сбоев по некоторым причинам, десериализация объекта завершатся с исключением.
UnicastRemoteObject
unexportObject
метод делает удаленный объект, obj, недоступным входящим вызовам. Если параметр силы является истиной, объект насильственно неэкспортируется, даже если там ожидают, призывает к удаленному объекту, или у удаленного объекта все еще есть происходящие вызовы. Если параметр силы является ложью, объект только неэкспортируется, если нет никакого ожидания, или происходящий призывает к объекту. Если объект успешно неэкспортируется, время выполнения RMI удаляет объект из своих внутренних таблиц. Неэкспорт объекта этим насильственным способом может оставить клиенты, содержащие устарелые удаленные ссылки на удаленный объект. Этот метод броски java.rmi.NoSuchObjectException
если объект ранее не экспортировался во время выполнения RMI. clone
методjava.lang.Cloneable
интерфейс. Класс java.rmi.server.UnicastRemoteObject
не реализует этот интерфейс, но действительно реализует clone
метод так, чтобы, если подклассы должны реализовать Cloneable
, удаленный объект будет способен к тому, чтобы быть клонированным должным образом. clone
метод может использоваться подклассом, чтобы создать клонированный удаленный объект с первоначально тем же самым содержанием, но экспортируется, чтобы принять удаленные вызовы и отличен от исходного объекта.