Intersystems Caché с Java Gateway - передать параметр как java.io.FileInputStream
В моем проекте я использую интеграцию Intersystems Caché с Java с помощью Java Gateway, он в основном отображает JAR и создает прокси классов в Caché для доступа к классам Java в JAR.
У класса в Java есть параметр типа FileInputStream, мой вопрос, как я должен отправить этот параметр Caché proxie? Какой тип данных в Caché представляет FileInputStream в Java?
С Уважением,
Лукас Боинг Скардуелли
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;
}
}
}
затем я создал проекцию для этого jar-файла в Caché Studio. И написал код
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)
Итак, это работает хорошо.