在网络服务之间共享数据的最佳方式
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 必须实施持久性机制。
在我当前的场景中,我有两个 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 必须实施持久性机制。