Создайте Java клиент с использованием MWHttpClient Класс

В этом примере показано, как написать MATLAB® Production Server™ клиент с использованием Java® клиентский API. В коде Java вы будете:

  • Задайте интерфейс Java, который представляет функцию MATLAB.

  • Создайте экземпляр прокси- объекта для связи с сервером.

  • Вызовите развернутую функцию в коде Java.

Чтобы создать клиентское приложение Java MATLAB Production Server, выполните следующие действия.

  1. Создайте новый файл с именем MPSClientExample.java.

  2. Используя текстовый редактор, откройте MPSClientExample.java.

  3. Добавьте в файл следующие операторы импорта:

    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;
    
  4. Добавьте интерфейс 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 и исключения ввода-вывода.

  5. Добавьте следующее определение класса:

    public class MPSClientExample
    {
    }

    Этот класс теперь имеет один основной метод, который вызывает сгенерированный класс.

  6. Добавьте main() способ приложения.

    public static void main(String[] args)
    {
    } 
  7. Добавьте следующий код в верхнюю часть main() метод:

    double[][] a1={{1,2,3},{3,2,1}};
    double[][] a2={{4,5,6},{6,5,4}};

    Эти операторы инициализируют переменные, используемые приложением.

  8. Создайте экземпляр объекта клиента с помощью MWHttpClient конструктор.

    MWClient client = new MWHttpClient();

    Этот класс устанавливает HTTP-соединение между приложением и образцом сервера.

  9. Вызовите 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 папка.

  10. Вызовите развернутую функцию MATLAB в приложении Java путем вызова общедоступного метода интерфейса.

      double[][] result = m.addmatrix(a1,a2);
  11. Вызовите close() объекта клиента метод для освобождения системных ресурсов.

    client.close();
  12. Сохраните файл 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();
            }        
        }
    }
  13. Скомпилируйте приложение Java, используя javac команда или использовать возможность сборки среды Java IDE.

    Для примера введите следующее:

    javac -classpath "matlabroot\toolbox\compiler_sdk\mps_client\java\mps_client.jar" MPSClientExample.java
    
  14. Запустите приложение с помощью 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

Похожие темы