Прежде чем вы запустите этот пример, отметьте следующее:
Этот пример демонстрирует, как реализовать RMI, когда клиент и сервер работают на той же машине. Смотрите Клиент-сервер Выполнения на Отдельных Машинах, если требуется сделать в противном случае.
На UNIX® используйте :
в качестве разделителя пути в вызовах java
и javac
. Используйте ;
в качестве разделителя пути на Windows.
Только обновите системный путь к серверу с местоположением MATLAB® Runtime. Клиенту не нужен доступ к MATLAB Runtime.
Этот пример поставляется в директории matlab\toolbox\javabuilder\Examples\RMIExamples\NativeCellStruct
.
Гарантируйте что:
В системах Windows®
находится на системном пути.matlabroot/runtime/arch
В системах UNIX LD_LIBRARY_PATH
и DYLD_LIBRARY_PATH
установлены правильно. Смотрите Настройки Пути MATLAB Runtime для Развертывания Во время выполнения для получения дополнительной информации об устанавливании пути.
Обязательно введите следующее как одну, неповрежденные команды.
Используйте следующую команду mcc
, чтобы создать пакет:
mcc -W 'java:dataTypesComp,dataTypesClass' createEmptyStruct.m updateField.m -v
Скомпилируйте код Java® сервера:
javac -classpath matlabroot\toolbox\javabuilder\jar\javabuilder.jar; directory_containing_package\dataTypesComp.jar NativeCellStructServer.java
Скомпилируйте код клиента Java:
javac -classpath matlabroot\toolbox\javabuilder\jar\javabuilder.jar; directory_containing_package\dataTypesComp.jar NativeCellStructClient.java
Подготовьтесь запускать сервер и клиентские приложения путем открытия двух командных окон — один для клиента и один для сервера.
Запустите сервер:
java -classpath .;directory_containing_package\dataTypesComp.jar; matlabroot\toolbox\javabuilder\jar\javabuilder.jar -Djava.rmi.server.codebase="file:///matlabroot/toolbox/javabuilder/ jar/javabuilder.jar file:/// directory_containing_package/dataTypesComp.jar" NativeCellStructServer
Запустите клиент:
java -classpath .;directory_containing_package\dataTypesComp.jar; matlabroot\toolbox\javabuilder\jar\javabuilder.jar NativeCellStructClient
Если ваше приложение запустилось успешно, вывод отобразится можно следующим образом:
Server вывод:
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] ##################################
Client вывод:
Running the client application!! EVENT 2: Initialized structure as received in client applications: 1x1 struct array with fields: Name Address Updating the 'Address' field to : 1x1 struct array with fields: Street City State Zip ################################# EVENT 5: Final structure as received by client: 1x1 struct array with fields: Name Address Address field: 1x1 struct array with fields: Street City State Zip #################################