Intersystems Caché с Java Gateway — передать параметр как java.io.FileInputStream

В моем проекте я использую интеграцию Intersystems Caché с Java с помощью шлюза Java, он в основном отображает файлы JAR и создает прокси-серверы классов в Caché для доступа к классам Java в JAR.

Класс в Java имеет параметр типа FileInputStream , мой вопрос в том, как мне отправить этот параметр Caché proxy ? Какой тип данных в Caché представляет FileInputStream в Java?

С уважением,

Лукас Боинг Скардуэлли


person Lucas Boeing Scarduelli    schedule 25.09.2015    source источник


Ответы (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)

так что работает хорошо.

person DAiMor    schedule 26.09.2015
comment
Спасибо, Дмитрий, все в порядке. - person Lucas Boeing Scarduelli; 30.09.2015