带有Java Gateway的IntersystemsCaché - 将参数传递为java.io.FileInputStream

时间:2015-09-25 19:17:19

标签: java intersystems-cache intersystems intersystems-ensemble

在我的项目中,我正在使用Java系统将IntersystemsCaché与Java集成,它基本上映射JAR并在Caché中创建一个类代理,以便将Java类访问到JAR中。

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

此致

Lucas Boeing Scarduelli

1 个答案:

答案 0 :(得分:1)

当您为该java创建代理时,也应该为FileInputStream创建cache-class。

简单的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)

所以,它运作良好。