java代理的多线程处理

java代理的多线程处理,java,multithreading,lotus-domino,lotusscript,lotus-formula,Java,Multithreading,Lotus Domino,Lotusscript,Lotus Formula,java代理必须在后台上传文件并返回上传文件的Url。上载时,代理必须报告其进度 我将代理标记为“在后台客户端线程中运行” 我陷入了以下困境: 我可以从Lotus脚本运行代理,并在内存文件中传递其参数,但客户端实际上并不在自己的线程中运行,而是阻塞整个客户端 我可以从公式运行代理,但是我不能传递任何参数 如果我使用Lotus脚本并在Java中自己处理线程,我的线程甚至不会启动 我已经读到了。但是我不能让代理运行服务器,因为它正在访问一个只对客户端可用的web服务器 顺便说一句,这和我的工作有

java代理必须在后台上传文件并返回上传文件的Url。上载时,代理必须报告其进度

我将代理标记为“在后台客户端线程中运行”

我陷入了以下困境:

  • 我可以从Lotus脚本运行代理,并在内存文件中传递其参数,但客户端实际上并不在自己的线程中运行,而是阻塞整个客户端
  • 我可以从公式运行代理,但是我不能传递任何参数
  • 如果我使用Lotus脚本并在Java中自己处理线程,我的线程甚至不会启动
我已经读到了。但是我不能让代理运行服务器,因为它正在访问一个只对客户端可用的web服务器

顺便说一句,这和我的工作有关


是否有更好的解决方案?

如果无法使代理运行服务器
则可以使用
LS2J
而不是代理。使用线程创建自己的类并使用其属性。
下面是自定义
Java类
Java定时器
的示例:

LotusScript
中添加全局
LS2J
变量:

(选项)
Uselsx“*javacon”
使用“MyJavaLibrary”
(声明)
Dim jSession作为JavaSession
将jClass定义为JavaClass
将jObject设置为JavaObject
子初始化
Set jSession=newjavasession()
设置jClass=jSession.GetClass(“MyClass”)
设置jObject=jClass.CreateObject
端接头
要启动
Java对象
请使用(在
按钮的
LotusScript
中):

Call jObject.Start()'调用要在Java中使用的参数
要检查状态并显示进度,请使用(
Timer
LotusScript
):

如果jObject.getIsOver()那么
s$=jObject.getURL()
"展示成果"
其他的
i%=jObject.getCounter()
"进步",
如果结束

如能对否决票做出任何解释,我将不胜感激!
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; }
}