使用 MWHttpClient 类创建 MATLABProduction ServerJava 客户端
此示例说明如何使用 Java® 客户端 API 中的 MWHttpClient 类编写 MATLAB® Production Server™ 客户端。有关获取 Java 客户端库的信息,请参阅获取并配置客户端库。在您的 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函数。有关编写和编译部署函数的信息,请参阅针对 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 异常。
添加以下类定义:
public class MPSClientExample { }此类现在有一个调用生成的类的单一
main方法。将
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,其中$MPS_INSTALL/client$MPS_INSTALL是您的 MATLAB Production Server 安装文件夹的名称。通过调用接口的公共方法,在您的 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(); } } }使用
javac命令或使用 Java IDE 的构建功能编译 Java 应用程序。例如,在 Windows® 命令提示符下输入以下内容:
javac -classpath "MPS_INSTALL_ROOT\client\java\mps_client.jar" MPSClientExample.java使用
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