首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何计算web服务客户端空闲时间

如何计算web服务客户端空闲时间
EN

Stack Overflow用户
提问于 2014-03-19 15:53:35
回答 2查看 176关注 0票数 0

基于apache CXF的soap web服务客户端也使用具有心跳服务的web服务。如果客户端在10秒内没有向web服务发送任何请求,则客户端应该向服务器发送心跳请求。我的问题是,我们如何计算这10秒的空闲时间。

EN

回答 2

Stack Overflow用户

发布于 2014-03-19 17:26:23

如果你有一个单独的类,你正在调用web服务,我想你可以实现如下。

KPHeartBeat.java

代码语言:javascript
复制
public class KPHearBeat {

    private static Timer timer;
    static{
        timer = new Timer();
    }

    public String callWebService(int input){

        timer.cancel();
        System.out.println("calling my webService");
        startTimer();
        System.out.println("Starting timer");
        return "Done";
    }

    private void startTimer() {
        timer.purge();
        timer = new Timer();
        timer.scheduleAtFixedRate(new TimerTask() {

            @Override
            public void run() {

                System.out.println("Calling Heart Beat service");

            }
        }, 10000, 10000);
    }

}

JUNIT类;

代码语言:javascript
复制
public class KPTestTimer {

    @Test
    public void testTimer(){

        KPHearBeat kp = new KPHearBeat();

        kp.callWebService(1);
        try {
            Thread.currentThread().sleep(15000);
        } catch (InterruptedException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        kp.callWebService(2);
        try {
            Thread.currentThread().sleep(8000);
        } catch (InterruptedException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        kp.callWebService(3);
        try {
            Thread.currentThread().sleep(25000);
        } catch (InterruptedException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

    }
}

如果你有多个方法,并且你在代码中的不同地方调用它,那么我认为你可以使用单例类来处理定时器。我不认为拦截器真的能帮到你。

票数 1
EN

Stack Overflow用户

发布于 2014-03-19 17:17:50

我认为这取决于您如何实现客户端。

以下是我的建议:

您可以为客户端设置标志,如果客户端调用服务,它可以将标志设置为true,并且您有一个计时器来检查标志并每隔10秒重新设置标志。一旦标志在时间重置之前为假,客户端就可以向心跳服务发送ping。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22499488

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档