Создайте клиент Java

Этот пример показывает, как записать клиенту 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 Программирует.

    • Метод 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, включенный в папку $MPS_INSTALL/client, где $MPS_INSTALL является именем вашей папки установки MATLAB Production Server.

  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 magic square
    
                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 или используйте возможность сборки IDE Java.

    Например, введите следующее:

    javac -classpath "MPS_INSTALL_ROOT\client\java\mps_client.jar" MPSClientExample.java
    
  14. Запустите приложение с помощью команды java или IDE.

    Например, введите следующее:

    java -classpath .;"MPS_INSTALL_ROOT\client\java\mps_client.jar" MPSClientExample
    

    Приложение возвращает следующее в консоли:

    5.0 7.0 9.0
    9.0 7.0 5.0