主要内容

本页采用了机器翻译。点击此处可查看最新英文版本。

使用 MWHttpClient 类创建 MATLABProduction ServerJava 客户端

此示例说明如何使用 Java® 客户端 API 中的 MWHttpClient 类编写 MATLAB® Production Server™ 客户端。有关获取 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 函数。有关编写和编译部署函数的信息,请参阅针对 MATLAB Production Server 创建可部署存档。要将函数部署到服务器,请参阅将存档部署至 MATLAB Production Server

    function a = addmatrix(a1,a2)
    
    a = a1 + a2;

    addmatrix 函数的接口如下。

    interface MATLABAddMatrix {
           double[][] addmatrix(double[][] a1, double[][] a2)
             throws MATLABException, IOException;
       } 
    

    创建接口时,请注意以下事项:

    • 您可以为接口赋予任何有效的 Java 名称。

    • 您必须赋予该接口定义的方法与部署的 MATLAB 函数相同的名称。

    • Java 方法必须支持 MATLAB 函数支持的相同输入和输出(类型和数量)。有关数据类型转换以及如何处理更复杂的 MATLAB 函数签名的更多信息,请参阅使用 Java 和 MATLAB 类型的数据转换Java 类型到 MATLAB 类型的转换

    • Java 方法必须处理 MATLAB 异常和 I/O 异常。

  5. 添加以下类定义:

    public class MPSClientExample
    {
    }

    此类现在有一个调用生成的类的单一 main 方法。

  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 方法的更多信息,请参阅 $MPS_INSTALL/client 文件夹中包含的 Javadoc,其中 $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 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. 使用 javac 命令或使用 Java IDE 的构建功能编译 Java 应用程序。

    例如,在 Windows® 命令提示符下输入以下内容:

    javac -classpath "MPS_INSTALL_ROOT\client\java\mps_client.jar" MPSClientExample.java
    
  14. 使用 java 命令或您的 IDE 运行该应用程序。

    例如,在 Windows 命令提示符下输入以下内容:

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

    要在 Linux®macOS 系统上运行该应用程序,请使用冒号 : :) 分隔多个路径。

    应用程序在控制台返回以下内容:

    5.0 7.0 9.0
    9.0 7.0 5.0

另请参阅

主题