带 Java 网关的 Intersystems Caché - 将参数作为 java.io.FileInputStream 传递
Intersystems Caché with Java Gateway - Pass parameter as java.io.FileInputStream
在我的项目中,我通过 Java 网关使用 Intersystems Caché 与 Java 的集成,它基本上是映射 JAR 并在 Caché 中创建 class 代理以访问 Java class进入 JAR。
A class in Java 有一个 FileInputStream 类型的参数,我的问题是我应该如何发送这个参数 Caché proxie ? Caché 中什么类型的数据代表 Java 中的 FileInputStream?
此致,
Lucas Boeing Scarduelli
当您为 java 创建代理时,也应该为 FileInputStream 创建缓存-class。
简单 java class,将 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)
所以,效果很好。
在我的项目中,我通过 Java 网关使用 Intersystems Caché 与 Java 的集成,它基本上是映射 JAR 并在 Caché 中创建 class 代理以访问 Java class进入 JAR。
A class in Java 有一个 FileInputStream 类型的参数,我的问题是我应该如何发送这个参数 Caché proxie ? Caché 中什么类型的数据代表 Java 中的 FileInputStream?
此致,
Lucas Boeing Scarduelli
当您为 java 创建代理时,也应该为 FileInputStream 创建缓存-class。
简单 java class,将 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)
所以,效果很好。