В этом примере показано, как реализовать 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