本文档介绍了如何在 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)