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

Best way to share data among webservices

在我当前的场景中,我有两个 web 服务,特此描述:

<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
}

在两个网络服务之间交换布尔值的最佳方式是什么? 我会考虑一个 Singleton class,因此有这样的东西:

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

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

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

使用单例很可能意味着您将在内存中存储内容,这可能不会使您的应用程序扩展太多。一旦应用程序关闭,您也将丢失所有内容 and/or 必须实施持久性机制。