exponenta event banner

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

В этом примере показано, как создать клиент MATLAB ® Production Server™ с помощью API клиента Java ®. В коде 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 (производственный сервер MATLAB).

    • Метод 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

Связанные темы