MWHttpClient
КлассВ этом примере показано, как написать MATLAB® Production Server™ клиент с использованием Java® клиентский API. В коде Java вы будете:
Задайте интерфейс Java, который представляет функцию MATLAB.
Создайте экземпляр прокси- объекта для связи с сервером.
Вызовите развернутую функцию в коде Java.
Чтобы создать клиентское приложение Java MATLAB Production Server, выполните следующие действия.
Создайте новый файл с именем MPSClientExample.java
.
Используя текстовый редактор, откройте MPSClientExample.java
.
Добавьте в файл следующие операторы импорта:
import java.net.URL; import java.io.IOException; import com.mathworks.mps.client.MWClient; import com.mathworks.mps.client.MWHttpClient; import com.mathworks.mps.client.MATLABException;
Добавьте интерфейс Java, который представляет развернутую функцию MATLAB.
Интерфейс для addmatrix
функция
function a = addmatrix(a1, a2)
a = a1 + a2;
выглядит следующим образом:
interface MATLABAddMatrix { double[][] addmatrix(double[][] a1, double[][] a2) throws MATLABException, IOException; }
При создании интерфейса обратите внимание на следующее:
Вы можете задать интерфейсу любое допустимое имя Java.
Необходимо присвоить методу, заданному этим интерфейсом, то же имя что и развернутой функции MATLAB.
Метод Java должен поддерживать те же входы и выходы, поддерживаемые функцией MATLAB, как в типе, так и в номере. Для получения дополнительной информации о преобразованиях типов данных и о том, как обрабатывать более сложные сигнатуры функций MATLAB, смотрите Java Client Programming (MATLAB Production Server).
Метод Java должен обрабатывать исключения MATLAB и исключения ввода-вывода.
Добавьте следующее определение класса:
public class MPSClientExample { }
Этот класс теперь имеет один основной метод, который вызывает сгенерированный класс.
Добавьте main()
способ приложения.
public static void main(String[] args) { }
Добавьте следующий код в верхнюю часть main()
метод:
double[][] a1={{1,2,3},{3,2,1}}; double[][] a2={{4,5,6},{6,5,4}};
Эти операторы инициализируют переменные, используемые приложением.
Создайте экземпляр объекта клиента с помощью MWHttpClient
конструктор.
MWClient client = new MWHttpClient();
Этот класс устанавливает HTTP-соединение между приложением и образцом сервера.
Вызовите createProxy
объекта клиента метод для создания динамического прокси.
Необходимо указать URL развертываемого архива и имя интерфейса class
как аргументы:
MATLABAddMatrix m = client.createProxy(new URL("http://localhost:9910/addmatrix"), MATLABAddMatrix.class);
Значение URL-адреса ("http://localhost:9910/addmatrix"
), используемый для создания прокси, содержит три части:
адрес сервера (localhost
).
номер порта (9910
).
имя архива (addmatrix
)
Для получения дополнительной информации о createProxy
метод, см. Javadoc, включенный в
папка.
matlabroot
/ toolbox/compiler_sdk/mps_client
Вызовите развернутую функцию MATLAB в приложении Java путем вызова общедоступного метода интерфейса.
double[][] result = m.addmatrix(a1,a2);
Вызовите close()
объекта клиента метод для освобождения системных ресурсов.
client.close();
Сохраните файл Java.
Заполненный файл Java должен напоминать следующий:
import java.net.URL; import java.io.IOException; import com.mathworks.mps.client.MWClient; import com.mathworks.mps.client.MWHttpClient; import com.mathworks.mps.client.MATLABException; interface MATLABAddMatrix { double[][] addmatrix(double[][] a1, double[][] a2) throws MATLABException, IOException; } public class MPSClientExample { public static void main(String[] args){ double[][] a1={{1,2,3},{3,2,1}}; double[][] a2={{4,5,6},{6,5,4}}; MWClient client = new MWHttpClient(); try{ MATLABAddMatrix m = client.createProxy(new URL("http://localhost:9910/addmatrix"), MATLABAddMatrix.class); double[][] result = m.addmatrix(a1,a2); // Print the resulting matrix printResult(result); }catch(MATLABException ex){ // This exception represents errors in MATLAB System.out.println(ex); }catch(IOException ex){ // This exception represents network issues. System.out.println(ex); }finally{ client.close(); } } private static void printResult(double[][] result){ for(double[] row : result){ for(double element : row){ System.out.print(element + " "); } System.out.println(); } } }
Скомпилируйте приложение Java, используя javac
команда или использовать возможность сборки среды Java IDE.
Для примера введите следующее:
javac -classpath "matlabroot
\toolbox\compiler_sdk\mps_client\java\mps_client.jar" MPSClientExample.java
Запустите приложение с помощью java
команда или ваша IDE.
Для примера введите следующее:
java -classpath .;"matlabroot
\toolbox\compiler_sdk\mps_client\java\mps_client.jar" MPSClientExample
На консоли приложение возвращает следующее:
5.0 7.0 9.0 9.0 7.0 5.0