在我的项目中,我通过 Java 网关使用了 Intersystems Caché 与 Java 的集成,它基本上映射 JAR 并在 Caché 中创建类代理以将 Java 类访问到 JAR 中。
Java 中的一个类有一个 FileInputStream 类型的参数,我的问题是我应该如何发送这个参数 Caché proxie ?Caché 中什么类型的数据代表 Java 中的 FileInputStream?
问候,
卢卡斯波音斯卡杜埃利
在我的项目中,我通过 Java 网关使用了 Intersystems Caché 与 Java 的集成,它基本上映射 JAR 并在 Caché 中创建类代理以将 Java 类访问到 JAR 中。
Java 中的一个类有一个 FileInputStream 类型的参数,我的问题是我应该如何发送这个参数 Caché proxie ?Caché 中什么类型的数据代表 Java 中的 FileInputStream?
问候,
卢卡斯波音斯卡杜埃利
当您为该 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)
所以,它运作良好。