Java 客户端编码最佳实践
静态代理接口指南
编写 Java® 接口来调用 MATLAB® 代码时,请记住以下注意事项:
接口公开的方法名称必须与正在部署的 MATLAB 函数名称相匹配。
该方法必须具有与 MATLAB 函数相同数量的输入和输出。
方法的输入和输出类型必须能够与 MATLAB 相互转换。
如果您正在使用 MATLAB 结构体,请记住字段名称区分大小写,并且必须在 MATLAB 函数和相应的用户定义的 Java 类型中匹配。
接口名称可以是任何有效的 Java 名称。
有关完整示例,请参阅使用 MWHttpClient 类创建 MATLABProduction ServerJava 客户端。
Java 客户端前提条件
完成以下步骤来准备您的 MATLAB Production Server™ Java 开发环境。
将
mps_client.jar(位于)添加到您的 Java$MPS_INSTALL\client\javaCLASSPATH和构建路径。此 JAR 文件有时会在单独的 GUI 中定义,具体取决于您的 IDE。为您计划部署的每个 MATLAB 应用程序生成一个可部署存档到服务器的
auto_deploy文件夹中。有关使用 Production Server Compiler 创建可部署存档的信息,请参阅 针对 MATLAB Production Server 创建可部署存档。您的服务器配置必须指明您的 MATLAB Runtime 实例的安装位置,对于使用命令行管理的服务器,可以使用
main_config服务器配置文件,对于使用仪表板管理的服务器,可以使用仪表板中的 MATLAB Runtime 字段。托管可部署存档的服务器必须正在运行。
管理客户端生命周期
单个 Java 客户端连接到可通过各种 URL 访问的一个或多个服务器。即使您创建了 MWHttpClient 的多个实例,一个实例也能够与多个服务器建立连接。
代理对象与服务器通信,直到调用该实例的 close 方法。
对于 MWHttpClient 的本地范围实例,Java 客户端代码如下所示:
当使用 MWHttpClient 的本地范围实例时,将其绑定到 servlet。
使用 servlet 时,在 MWHttpClient 方法内初始化 HttpServlet.init(),在 close 方法内初始化 HttpServlet.destroy(),如下代码:
处理 Java 客户端异常
Java 接口必须针对以下错误声明已检查的异常:
Java 客户端异常
| 例外 | 例外原因 | 附加信息 |
|---|---|---|
com.mathworks.mps.client.MATLABException | 执行代理对象方法时发生 MATLAB 错误。 | 该例外规定如下:
|
java.io.IOException |
| 使用 java.io.IOException 以特定方式处理 4 或 5 的 HTTP 错误。 |
管理系统资源
单个 Java 客户端连接到可通过不同 URL 访问的一个或多个服务器。MWHttpClient 的实例可以与多个服务器通信。
所有由 MWHttpClient 实例创建的代理对象都会与服务器通信,直到调用 close 的 MWHttpClient 方法。
仅当您不再需要与服务器通信并且准备释放系统资源时才调用 close。关闭客户端会终止与所有已创建的代理的连接。
在哪里可以找到 Javadoc
Java 客户端的 API 文档安装在 中。$MPS_INSTALL/client
日志记录
您可以使用 MATLAB Production Server Java 客户端库中提供的日志记录功能,在 Java 客户端应用程序中记录 HTTP 请求状态、服务器 URL 和输出数据等详细信息。为了提供日志记录选项,Java 客户端库 mps_client.jar 将 SLF4J API 模块(版本 1.7.25)打包为客户端库的一部分。您可以使用任何 SLF4J 支持的日志记录框架,例如 Log4j、Logback 或 java.util.logging 包。如果没有绑定,SLF4J 默认为无操作实现。有关使用绑定的详细信息,请参阅 SLF4J 网站上的 Bridging Legacy API 文档。
当使用日志记录框架或不同版本的 SLF4J 时,必须将其添加到 Java 类路径上的 mps_client.jar 前面。
如果您使用 java.util.logging 包进行日志记录,则必须在加载 java.util.logging.Logger 类之前在 Java 应用程序代码中加载并使用 com.mathworks.mps.client.MWHttpClient 类。有关 java.util.logging 的更多信息,请参阅 Oracle® Package java.util.logging Javadoc。
