Spec-Zone .ru
спецификации, руководства, описания, API
|
В реальном сценарии, в котором развертывается служба, такая как вычислить механизм, разработчик, вероятно, создал бы Архив Java (JAR) файл, который содержит Compute
и Task
интерфейсы для классов сервера реализации и клиентских программ, чтобы использовать. Затем, разработчик, возможно тот же самый разработчик файла JAR интерфейса, записал бы реализацию Compute
соедините интерфейсом и разверните ту службу на машину, доступную клиентам. Разработчики клиентских программ могут использовать Compute
и Task
интерфейсы, содержавшиеся в файле JAR, и независимо, разрабатывают задачу и клиентскую программу, которая использует a Compute
служба.
В этом разделе Вы изучаете, как установить файл JAR, классы сервера, и клиентские классы. Вы будете видеть что клиент Pi
class будет загружен на сервер во времени выполнения. Кроме того, Compute
и Task
интерфейсы будут загружены от сервера до реестра во времени выполнения.
Этот пример разделяет интерфейсы, реализацию удаленного объекта, и клиентский код в три пакета:
compute
– Compute
и Task
интерфейсыengine
– ComputeEngine
реализация classclient
– ComputePi
клиентский код и Pi
реализация задачиВо-первых, Вы должны создать файл JAR интерфейса, чтобы обеспечить для клиентских разработчиков и сервера.
Во-первых, Вы должны скомпилировать исходные файлы интерфейса в compute
пакет и затем создает файл JAR, который содержит их файлы class. Примите того пользователя waldo
записал эти интерфейсы и поместил исходные файлы в каталог c:\home\waldo\src\compute
на Windows или каталоге /home/waldo/src/compute
на Солярисе ОС или Linux. Учитывая эти пути, можно использовать следующие команды, чтобы скомпилировать интерфейсы и создать файл JAR:
Microsoft Windows:
cd c:\home\waldo\src javac compute\Compute.java compute\Task.java jar cvf compute.jar compute\*.class
Солярис ОС или Linux:
cd /home/waldo/src javac compute/Compute.java compute/Task.java jar cvf compute.jar compute/*.class
jar
команда выводит на экран следующий вывод из-за -v
опция:
added manifest adding: compute/Compute.class(in = 307) (out= 201)(deflated 34%) adding: compute/Task.class(in = 217) (out= 149)(deflated 31%)
Теперь, можно распределить compute.jar
файл разработчикам серверных и клиентских приложений так, чтобы они могли использовать интерфейсы.
После того, как Вы создаете или сторону сервера или клиентские классы с javac
компилятор, если какой-либо из тех классов должен будет быть динамически загружен другими виртуальными машинами Java, следует гарантировать, что их файлы class помещаются в доступное для сети расположение. В этом примере для Соляриса ОС или Linux это расположение /home/user/public_html/classes
потому что много веб-серверов позволяют доступ пользователя public_html
каталог через HTTP URL, созданный как http://host/~user/
. Если Ваш веб-сервер не поддерживает это соглашение, Вы могли бы использовать различное расположение в иерархии веб-сервера, или Вы могли использовать файл URL вместо этого. Файл URL принимает форму file:/home/user/public_html/classes/
на Солярисе ОС или Linux и форма file:/c:/home/user/public_html/classes/
на Windows. Можно также выбрать другой тип URL, как соответствующий.
Сетевая доступность файлов class позволяет времени выполнения RMI загрузить код при необходимости. Вместо того, чтобы определять его собственный протокол для загрузки кода, RMI использует протоколы URL, поддерживаемые платформой Java (например, HTTP), чтобы загрузить код. Отметьте, что использование полного, тяжелого веб-сервера, чтобы служить этим файлам class является ненужным. Например, простой сервер HTTP, который обеспечивает функциональность, должен был сделать классы доступными для того, чтобы загрузить в RMI через HTTP, может быть найден в
Также см.
engine
пакет содержит только одну серверную реализацию class, ComputeEngine
, реализация удаленного интерфейса Compute
.
Примите того пользователя ann
, разработчик ComputeEngine
class, поместил ComputeEngine.java
в каталоге c:\home\ann\src\engine
на Windows или каталоге /home/ann/src/engine
на Солярисе ОС или Linux. Она развертывает файлы class для клиентов, чтобы загрузить в подкаталоге ее public_html
каталог, c:\home\ann\public_html\classes
на Windows или /home/ann/public_html/classes
на Солярисе ОС или Linux. Это расположение доступно через некоторые веб-серверы как http://host:port/~ann/classes/
.
ComputeEngine
class зависит от Compute
и Task
интерфейсы, которые содержатся в compute.jar
Файл JAR. Поэтому, Вы нуждаетесь compute.jar
файл в Вашем пути class, когда Вы создаете классы сервера. Предположите что compute.jar
файл располагается в каталоге c:\home\ann\public_html\classes
на Windows или каталоге /home/ann/public_html/classes
на Солярисе ОС или Linux. Учитывая эти пути, можно использовать следующие команды, чтобы создать классы сервера:
Microsoft Windows:
cd c:\home\ann\src javac -cp c:\home\ann\public_html\classes\compute.jar engine\ComputeEngine.java
Солярис ОС или Linux:
cd /home/ann/src javac -cp /home/ann/public_html/classes/compute.jar engine/ComputeEngine.java
Тупиковый class для ComputeEngine
реализации Compute
интерфейс, который обращается к Task
интерфейс. Так, определения class для тех двух интерфейсов должны быть доступными для сети для тупика, который будет получен другими виртуальными машинами Java, такими как виртуальная машина Java реестра. У клиентской виртуальной машины Java уже будут эти интерфейсы в ее пути class, таким образом, она не должна будет фактически загрузить их определения. compute.jar
файл под public_html
каталог может служить этой цели.
Теперь, вычислить механизм готов развернуться. Вы могли сделать это теперь, или Вы могли ожидать, пока Вы не создали клиент.
client
пакет содержит два класса, ComputePi
, основная клиентская программа, и Pi
, реализация клиента Task
интерфейс.
Примите того пользователя jones
, разработчик клиентских классов, поместил ComputePi.java
и Pi.java
в каталоге c:\home\jones\src\client
на Windows или каталоге /home/jones/src/client
на Солярисе ОС или Linux. Он развертывает файлы class для вычислить механизма, чтобы загрузить в подкаталоге его public_html
каталог, c:\home\jones\public_html\classes
на Windows или /home/jones/public_html/classes
на Солярисе ОС или Linux. Это расположение доступно через некоторые веб-серверы как http://host:port/~jones/classes/
.
Клиентские классы зависят от Compute
и Task
интерфейсы, которые содержатся в compute.jar
Файл JAR. Поэтому, Вы нуждаетесь compute.jar
файл в Вашем пути class, когда Вы создаете клиентские классы. Предположите что compute.jar
файл располагается в каталоге c:\home\jones\public_html\classes
на Windows или каталоге /home/jones/public_html/classes
на Солярисе ОС или Linux. Учитывая эти пути, можно использовать следующие команды, чтобы создать клиентские классы:
Microsoft Windows:
cd c:\home\jones\src javac -cp c:\home\jones\public_html\classes\compute.jar client\ComputePi.java client\Pi.java mkdir c:\home\jones\public_html\classes\client cp client\Pi.class c:\home\jones\public_html\classes\client
Солярис ОС или Linux:
cd /home/jones/src javac -cp /home/jones/public_html/classes/compute.jar client/ComputePi.java client/Pi.java mkdir /home/jones/public_html/classes/client cp client/Pi.class /home/jones/public_html/classes/client
Только Pi
class должен быть помещен в каталог public_html\classes\client
потому что только Pi
class должен быть доступным для загрузки на виртуальную машину Java вычислить механизма. Теперь, можно выполнить сервер и затем клиент.