【问题标题】:Intersystems Caché with Java Gateway - Pass parameter as java.io.FileInputStream带有 Java 网关的 Intersystems Caché - 将参数作为 java.io.FileInputStream 传递
【发布时间】:2015-09-26 18:24:49
【问题描述】:

在我的项目中,我通过 Java 网关使用 Intersystems Caché 与 Java 的集成,它基本上是映射 JAR 并在 Caché 中创建类代理以将 Java 类访问到 JAR。

Java 中的一个类有一个 FileInputStream 类型的参数,我的问题是我应该如何发送这个参数 Caché proxie ? Caché中什么类型的数据代表Java中的FileInputStream?

问候,

卢卡斯·波音斯卡杜埃利

【问题讨论】:

    标签: java intersystems-cache intersystems intersystems-ensemble


    【解决方案1】:

    当您为该 java 创建代理时,也应该为 FileInputStream 创建缓存类。

    简单的 java 类,使用 FileInputStream 作为函数中参数的类型

    package org.daimor;
    
    import java.io.FileInputStream;
    import java.io.IOException;
    
    public class test {
    
        public long sizeStream(FileInputStream stream)
        {
            try {
                return stream.getChannel().size();
            } catch (IOException ex)
            {
                return -1;
            }
        }
    }
    

    然后我在 Caché Studio 中为这个 jar 文件创建了投影。并写了一段代码

    Set gateway = ##class(%Net.Remote.Gateway).%New()
    Do gateway.%Connect("127.0.0.1", 55555)
    
    Set file = ##class(java.io.FileInputStream).%New(gateway, "c:\test.txt")
    Set javaObj=##class(org.daimor.test).%New(gateway)
    Set size=javaObj.sizeStream(file)
    

    所以,效果很好。

    【讨论】:

    • 谢谢,Dmitry 没关系。
    猜你喜欢
    • 2017-05-07
    • 1970-01-01
    • 2013-06-15
    • 1970-01-01
    • 2020-04-21
    • 1970-01-01
    • 2011-09-20
    • 2010-11-20
    相关资源
    最近更新 更多