java代理必须在后台上传文件并返回上传文件的Url。上传时,代理必须报告其进度。
我将代理标记为“在后台客户端线程中运行。
我陷入了以下两难境地:
我读过Notes client doesn't support multithreading。但我无法创建代理RunOnServer,因为它正在访问仅适用于客户端的Web服务器。
顺便说一句,这与another question of mine有关。
有没有更好的解决方案?
答案 0 :(得分:1)
如果您无法创建代理RunOnServer
,则可以使用LS2J
代替代理。使用线程创建自己的类并使用其属性
以下是自定义Java Class
和Java Timer
的示例:
import java.util.Timer;
import java.util.TimerTask;
public class Test
{
private boolean _isOver;
private int _counter;
private Timer _timer;
private String _url;
public Test()
{
_timer = new Timer("Timer");
}
public void Start() //Add parameters here that you want to use in Java
{
_counter = 0;
_isOver = false;
_url = "";
TimerTask timerTask = new TimerTask()
{
public void run()
{
if (_counter++ == 9)
{
_isOver = true;
_timer.cancel();
_url = "http://stackoverflow.com/";
}
}
};
_timer.scheduleAtFixedRate(timerTask, 30, 5000);
}
public int getCounter() { return _counter; }
public boolean getIsOver() { return _isOver; }
public String getURL() { return _url; }
}
在LotusScript
中添加全局LS2J
变量:
(Options)
Uselsx "*javacon"
Use "MyJavaLibrary"
(Declarations)
Dim jSession As JavaSession
Dim jClass As JavaClass
Dim jObject As JavaObject
Sub Initialize
Set jSession = New JavaSession()
Set jClass = jSession.GetClass("MyClass")
Set jObject = jClass.CreateObject
End Sub
要开始Java object
使用(LotusScript
中的Button
):
Call jObject.Start() 'Call with parameters that you want to use in Java
要检查状态并显示进度使用情况(LotusScript
中的Timer
):
If jObject.getIsOver() Then
s$ = jObject.getURL()
'Show results
Else
i% = jObject.getCounter()
'Show progress
End If