Spec-Zone .ru
спецификации, руководства, описания, API
След: RMI
Раздел: Компиляция и Выполнение Примера
Компиляция Примеров программы
Домашняя страница > RMI

Компиляция Примеров программы

В реальном сценарии, в котором развертывается служба, такая как вычислить механизм, разработчик, вероятно, создал бы Архив Java (JAR) файл, который содержит Compute и Task интерфейсы для классов сервера реализации и клиентских программ, чтобы использовать. Затем, разработчик, возможно тот же самый разработчик файла JAR интерфейса, записал бы реализацию Compute соедините интерфейсом и разверните ту службу на машину, доступную клиентам. Разработчики клиентских программ могут использовать Compute и Task интерфейсы, содержавшиеся в файле JAR, и независимо, разрабатывают задачу и клиентскую программу, которая использует a Compute служба.

В этом разделе Вы изучаете, как установить файл JAR, классы сервера, и клиентские классы. Вы будете видеть что клиент Pi class будет загружен на сервер во времени выполнения. Кроме того, Compute и Task интерфейсы будут загружены от сервера до реестра во времени выполнения.

Этот пример разделяет интерфейсы, реализацию удаленного объекта, и клиентский код в три пакета:

Во-первых, Вы должны создать файл JAR интерфейса, чтобы обеспечить для клиентских разработчиков и сервера.

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


Проблемы с примерами? Попытайтесь Компилировать и Выполнить Примеры: FAQ.
Жалобы? Поздравление? Предложения? Дайте нам свою обратную связь.

Предыдущая страница: Компиляция и Выполнение Примера
Следующая страница: Выполнение Примеров программы