在Web服务之间共享数据的最佳方式

时间:2015-05-06 10:51:09

标签: java spring cxf jax-ws

在我目前的情况下,我有两个网络服务,特此描述:

<jaxws:endpoint  id="backendService"
        implementor="com.foo.soap.BackendServiceImpl"
        address="/BackendService" />

<jaxws:endpoint  id="frontendService"
        implementor="com.foo.soap.FrontendServiceImpl"
        address="/FrontendService" />

Backendservice监听一些后台应用程序以通知进度,而frontendservice允许前台应用程序知道数据是否准备就绪。 所以,简单地说:

public Interface Backendservice{
        public void done(Long reqID); //sets backendservice status to true for that request ID
}

public Interface FrontendService{
    public boolean isDone(Long reqID); //returns true if that request was completed
}

在两个webservices之间交换该布尔值的最佳方法是什么? 我会考虑一个Singleton类,因此有类似的东西:

public void done(Long reqID){
     Singleton.getInstance().setStatus(reqID, true);
}
public boolean isDone(Long reqID){
          return Singleton.getInstance().getStatus(reqID);
}

但这是最好的方法吗?或者spring / cxf提供了更好的方法吗?

1 个答案:

答案 0 :(得分:1)

您可以拥有一个包含reqID及其当前状态的基础数据库。

使用单例很可能意味着你将把东西存储在内存中,这可能不会使你的应用程序非常大。一旦应用程序关闭和/或必须实现持久性机制,您也将丢失所有内容。