文章
· 九月 28, 2021 阅读大约需 5 分钟

IRIS 2021 技术文档 First Look 16 Java 网关(Gateway)和InterSystems 产品

本文档介绍了如何在 InterSystems IRIS®数据平台中使用 Java 网关(Gateway)与 Java 组件进行互操作。在本文中,您将首先创建一个示例 JAR 文件。然后,您将在 InterSystems IRIS 管理门户(Management Portal)中创建并启动 Java  网关(Gateway)。您将以编程方式导入创建的示例 JAR 文件。最后,您将在 ObjectScript 中创建并操作一些代理类(proxy class)和对象(object)。

为了让您体验 Java 网关(Gateway ),而又不陷入细节困境,我们保持了简单的探索。这些活动被设计成只使用默认设置和功能,这样您就可以熟悉功能的基本原理,而不必处理那些离题或过于复杂的细节。当您把 Java 网关(Gateway)引入您的生产系统时,您可能需要做一些不同的事情。请确保不要把这种对 Java 网关(Gateway )的探索与真实的情况相混淆!本文档末尾提供的参考资料将使您对在生产中使用 Java 网关(Gateway)的情况有一个很好的了解。

要浏览所有的技术概要(First Look),包括下面描述的可以在免费的社区版(Community Edition)实例上执行的那些,请参见 InterSystems 技术概要

 

为什么 Java 网关(Gateway)很重要

Java 网关(Gateway)为 InterSystems IRIS 与 Java 组件进行互操作提供了一种简单的方法。在使用 Java 网关(Gateway)导入 JAR 文件后,您可以实例化一个外部 Java 对象,并将其作为 InterSystems IRIS 中的本机对象进行操作。您可以从 InterSystems IRIS 和 ObjectScript 内部访问 Java 类和方法!

在内部,Java 网关(Gateway)为每个 Java 类生成一对一的 ObjectScript 代理。通常,使用 Java 网关(Gateway)的最佳方法是构建一个小型 Java 封装类(wrapper class),它只公开您想要的功能,然后为这个封装创建一个代理。

探索 Java 网关(Gateway

我们开发了一个简短的演示,向您展示如何使用 Java 网关(Gateway)和 InterSystems IRIS。想试试InterSystems IRIS Java 开发和互操作性功能的在线视频演示吗?请查看 Java QuickStartJava 快速入门)

  • 用前须知

要使用该程序,您需要在一个系统上工作,应安装 JDK 1.8 版本和您选择的 Java IDE,并连接一个正在运行的 InterSystems IRIS 实例。您对 InterSystems IRIS 的选择包括多种已授权的和免费的评估实例;实例不需要由您正在工作的系统托管(尽管它们必须相互具有网络访问权限)。关于如何部署每种类型的实例的信息(如果您还没有可使用的实例),请参见InterSystems IRIS 基础:连接一个 IDE中的部署 InterSystems IRIS。使用同一文档中的InterSystems IRIS 连接信息 Java IDE中的信息,将 IDE 连接到您的 InterSystems IRIS 实例。

  • 创建 JAR 文件

使用您选择的 IDE Java 中创建 Person 类。使用以下示例代码:

public class Person {

public int age; public String name;

//constructor

public Person (int startAge, String Name) {

age = startAge; name = Name;

}

public void setAge(int newAge)

{

age = newAge;

}

public String getName()

{

return name;

}

public int getAge()

{

return age;

}

public static void main(String []args) {

Person myPerson = new Person (5, "Tom"); System.out.println(myPerson.getName()); System.out.println(myPerson.getAge());

}}

编译 Person 类。然后,打开命令提示符(Command Prompt)窗口,并导航到包含 Person.class 文件的目录。使用下面的命令来生成 Person.jar 文件:

jar cf Person.jar Person.class

注意文件的位置。

启动 Java 网关(Gateway

要启动 Java 网关(Gateway),请按照以下步骤操作:

  1. 使用InterSystems IRIS 基础:连接一个 IDE中为您的实例描述的 URL,在浏览器中打开您的实例的管理门户(Management Portal)。
  2. 导航到 Object Gateways(对象网关)页面。(System Administration(系统管理) > Configuration(配置) > Connectivity(连接) > External Language Servers
  3. 选择 Create New External Language Servers
  4. 下拉菜单选择 Java 。
  5. 服务器名称输入 JavaGatewayTest,端口输入 55555。
  6. 点击 Save(保存)。
  7. 在新的 Java 网关(Gateway)所在行中,点击 Start(开始)。
    1. 生成代理类(Proxy Classes

在 USER 命名空间(或您在已安装的实例)中创建一个名为 CreateProxyClasses.cls 的新 ObjectScript 类,包名为 JavaGatewayTest。粘贴以下代码,用您的 InterSystems IRIS 实例的连接信息 (如InterSystems IRIS 基础:连接一个 IDE中所述)替换 gwyConn.&Connect 的参数。您可以指定所示的 USER 命名空间,也可以选择实例上创建的另一个命名空间。用双引号括起来的 Person.jar 文件的完整文件路径替换 YOUR FILEPATH HERE。

 

Class JavaGatewayTest.CreateProxyClasses Extends %Persistent

{

ClassMethod run()

{

// get a connection to the Java Gateway

set gwyConn = ##class(%Net.Remote.Gateway).%New()

set status = gwyConn.%Connect("127.0.0.1", 55555, "USER") if $$$ISERR(status) {

write !,"error: "_$system.OBJ.DisplayError(status) quit

}

// add the jar to the classpath

set classpath = ##class(%ListOfDataTypes).%New() do classpath.Insert("YOUR FILEPATH HERE")

set status = gwyConn.%AddToCurrentClassPath(classpath) if $$$ISERR(status) {

write !,"error: "_$system.OBJ.DisplayError(status) quit

}

// create the proxy ObjectScript classes that correspond to the Java classes in the jar file set status = gwyConn.%Import("Person",,,,1)

if $$$ISERR(status) {

write !,"error: "_$system.OBJ.DisplayError(status) quit

}

// close the connection to the Java gateway set status = gwyConn.%Disconnect()

if $$$ISERR(status) {

write !,"error: "_$system.OBJ.DisplayError(status) quit

}}}

 

编译并构建该类。

打开 InterSystems 终端(Terminal),并导航到您指定的命名空间。使用以下命令执行 run() 方法:

do ##class(JavaGatewayTest.ManipulateObjects).run()

您应该可以看到以下输出:

Name: Tom Age: 5

setting age to 100 Age: 100

现在您已经成功地完成了练习,停止您创建的 Java 网关(Gateway)。返回到管理门户(Management Portal)中的 External Language Servers页面,找到您的 JavaGatewayTest 网关,并选择 Stop(停止)。

了解有关 Java 网关(Gateway)的更多信息

要了解有关 Java 网关(Gateway)和 InterSystems IRIS 的更多信息,请参见:

使用 Java 网关(Gateway)

讨论 (2)1
登录或注册以继续