|
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 вычислить механизма. Теперь, можно выполнить сервер и затем клиент.