из LS2J можно сразу гонять java *StreamОбмена параметрами не надо.
На диске рядом лежат 2 папки, например: \AddWatermark_in и \AddWatermark_out. Код на LS кладёт файл в первую папку. Через LS2J вызываете Java-метод, в него передаёте параметром имя файла. Java-код открывает файл из 1-й папки, после обработки кладёт файл результата с тем же именем во 2-ю папку, а из 1-й удаляет. LS-код забирает результат из 2-й папки по тому же имени. При таком подходе вереница из агентов ненужна.
Либо просто написать Java-агент. Лично я бы для такой задачи выбрал обработку очереди таких писем-запросов на сервере Java-агентом.
пример обмена из HTTP запроса
Visual Basic:
Function joProcess()
On Error GoTo ErrH
me.joCon.setRequestMethod(me.method_)
Dim in_ As Javaobject, clreader As Javaclass, clBuf As Javaclass, is_ As Javaobject
Dim os_ As Javaobject, osw_ As Javaobject, clWriter As Javaclass
If Len(me.body_)>0 Then
Call joCon.setDoOutput(True)
Set os_ = joCon.getOutputStream()
Set clWriter=jSession.GetClass(WRITER_CL)
Set osw_=clWriter.CreateObject({(L} & OUTSTREAM_CL &{;Ljava/lang/String;)V}, os_, {UTF-8})
osw_.write(me.body_)
Call osw_.flush()
Call osw_.close()
Call os_.close()
Call joCon.connect()
End If
' On Error 318 GoTo jErr
Set is_=joCon.getInputStream()
Dim ret As String
ret=me.joStreamProcessing.getBuffer(is_).toString()
me.responseCode_=joCon.getResponseMessage()
If joCon.getResponseCode()=200 Then
' me.responseCode_=CStr(joCon.getResponseCode()) & { OK}
Set me.headers_=joCon.getHeaderFields()
Else
End If
joProcess=ret
Visual Basic:
Private Const HTTPCLIENT_CL={java/net/http/HttpClient}
Private Const HTTPREQUEST_CL={java/net/http/HttpRequest}
Private Const HTTPRESPONSE_CL={java/net/http/HttpResponse}
Private Const STRING_CL={java/lang/String}
Private Const STRINGBUF_CL={java/lang/StringBuffer}
Java:
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
public class StreamProcessing {
public StringBuffer getBuffer(InputStream is) throws IOException{
BufferedReader in = new BufferedReader(new InputStreamReader(is));
String output;
StringBuffer response = new StringBuffer();
while ((output = in.readLine()) != null) {
response.append(output);
}
in.close();
return response;
}
}