В этом примере показано, как реализовать RMI, чтобы запустить два отдельных процесса, которые инициализируют MATLAB® массивы структур. Клиент и сервер работают на той же машине.
Чтобы реализовать RMI с клиентом на одной машине и сервере на другом, используйте процедуру в этом примере и:
Изменитесь, как сервер связан с системным реестром.
Переопределите, как клиент получает доступ к серверу.
Чтобы запустить этот пример, ваша среда должна соответствовать следующим необходимым условиям:
Установите MATLAB Compiler SDK™ на машине разработки.
Установите поддерживаемую версию Java® Комплект разработчика (JDK™) на машине разработки. Для получения дополнительной информации смотрите, Конфигурируют Вашу Среду Java для Генерации Пакетов.
Установите MATLAB Runtime на веб-сервере. Для получения дополнительной информации смотрите Установку и Сконфигурируйте MATLAB Runtime.
Убедитесь, что ваш веб-сервер способен к выполнению принятых сред Java как J2EE.
Установите javabuilder.jar
библиотека (
) в общую папку библиотеки вашего веб-сервера.matlabroot
/toolbox/javabuilder/jar/javabuilder.jar
Если ваше использование реализации разделяет клиентские машины, им также нужен javabuilder.jar
, поскольку это содержит com.mathworks.extern.java
пакет.
Примечание
Вам не нужен MATLAB Runtime, установленный на клиентской стороне. Возвращаемые значения из MATLAB Runtime могут быть автоматически преобразованы с помощью boolean marshalOutputs
в RemoteProxy
класс. Для получения дополнительной информации см. документацию API Javadoc в
.matlabroot
/help/toolbox/javabuilder/MWArrayAPI
Местоположение функции MATLAB |
|
Участок кода Java |
|
Скопируйте DataTypes
папка от MATLAB до вашей папки работы:
copyfile(fullfile(matlabroot,'toolbox','javabuilder','Examples','RMIExamples','DataTypes'))
В командной строке MATLAB перейдите к новому DataTypes\DataTypesDemoComp
подпапка в вашей папке работы.
Исследуйте функции MATLAB createEmptyStruct.m
и updateField.m
.
Сгенерируйте использование пакета Java compiler.build.javaPackage
путем выдачи следующей команды в командной строке MATLAB:
compiler.build.javaPackage({'createEmptyStruct.m','updateField.m'}, ... 'PackageName','dataTypesComp', ... 'ClassName','dataTypesClass', ... 'Verbose','on');
Для получения дополнительной информации смотрите, что инструкции в Генерируют приложение Java Пакета и Сборки Java.
В вашей системной командной строке перейдите к DataTypes\DataTypesDemoJavaApp
папка.
Скомпилируйте код сервера Java путем издания одного из следующего javac
команды в вашей системной командной строке.
На Windows®Ввод:
javac -classpath
"matlabroot
\toolbox\javabuilder\jar\javabuilder.jar;path\to\
dataTypesComp.jar"
DataTypesServer.java
На UNIX®Ввод:
javac -classpath "matlabroot/toolbox/javabuilder/jar/javabuilder.jar:path/to/dataTypesComp.jar" DataTypesServer.java
Примечание
Замените
с путем к вашему MATLAB или папке установки MATLAB Runtime.matlabroot
Скомпилируйте клиентский код Java путем издания одного из следующего javac
команды в вашей системной командной строке.
На Windows введите:
javac -classpath
"matlabroot
\toolbox\javabuilder\jar\javabuilder.jar;path\to\
dataTypesComp.jar
DataTypesClient.java
На UNIX введите:
javac -classpath
"matlabroot
/toolbox/javabuilder/jar/javabuilder.jar:path/to/
dataTypesComp.jar"
DataTypesClient.java
Запустите клиент-сервер можно следующим образом:
Откройте два командных окна — один для сервера и один для клиента.
В каждом окне перейдите к папке, которая содержит DataTypesServer.java
или DataTypesClient.java
, соответственно.
Запустите сервер путем издания одного из следующего java
команды в одной строке в системной командной строке.
На Windows введите:
java -classpath
.;"path\to\
dataTypesComp.jar;matlabroot
\toolbox\javabuilder\jar\javabuilder.jar"
-Djava.rmi.server.codebase="file:///matlabroot
\toolbox\javabuilder\jar\javabuilder.jar
file:///path\to\
dataTypesComp.jar" DataTypesServer
На UNIX введите:
java -classpath
.:"path/to/
dataTypesComp.jar;matlabroot
/toolbox/javabuilder/jar/javabuilder.jar"
-Djava.rmi.server.codebase="file:///matlabroot
/toolbox/javabuilder/jar/javabuilder.jar
file:///path/to/
dataTypesComp.jar" DataTypesServer
Во втором командном окне запустите клиент путем издания одного из следующего java
команды в одной строке.
На Windows введите:
java -classpath
.;"path/to/
\dataTypesComp.jar;matlabroot
\toolbox\javabuilder\jar\javabuilder.jar"
DataTypesClient
На UNIX введите:
java -classpath
.:"path/to/
dataTypesComp.jar;matlabroot
/toolbox/javabuilder/jar/javabuilder.jar"
-Djava.rmi.server.codebase="file:///matlabroot
/toolbox/javabuilder/jar/javabuilder.jar
file:///path/to/
dataTypesComp.jar" DataTypesClient
Если команды успешны, следующий выход появляется в командном окне, запускающем сервер:
Please wait for the server registration notification. Server registered and running successfully!! EVENT 1: Initializing the structure on server and sending it to client: Initialized empty structure: Name: [] Address: [] ################################## EVENT 3: Partially initialized structure as received by server: Name: [] Address: [1x1 struct] Address field as initialized from the client: Street: '3, Apple Hill Drive' City: 'Natick' State: 'MA' Zip: '01760' ################################## EVENT 4: Updating 'Name' field before sending the structure back to the client: Name: 'The MathWorks' Address: [1x1 struct] ##################################
Running the client application!! EVENT 2: Initialized structure as received in client applications: Name: [] Address: [] Updating the 'Address' field to : Street: '3, Apple Hill Drive' City: 'Natick' State: 'MA' Zip: '01760' ################################# EVENT 5: Final structure as received by client: Name: 'The MathWorks' Address: [1x1 struct] Address field: Street: '3, Apple Hill Drive' City: 'Natick' State: 'MA' Zip: '01760' #################################
Примечание
Для большего количества примеров реализации RMI смотрите файлы в
.matlabroot
/toolbox/javabuilder/Examples/RMIExamples