我有一個設計問題,如下所示:我想執行幾個soap web服務,其中每個響應都依賴於前者。 當獲得所有響應時,我想驗證所有獲得的數據,然後基於它創建一些輸出,並從數據庫更新中發出。如何維護自動佈線Web服務中的狀態?
因此我創建了一個TemplateFacade
方法,它包裝所有要執行的Web服務。問題:我顯然必須堅持方法調用之間的響應。這將是有問題的,因爲自動裝配服務應該定義爲無狀態並且是單身。
那麼如何使用注入來維護某種狀態的服務(至少在Executor.execute()
終止之前)呢?
你能推薦一個更好的設計方法嗎?
@Component
class Executor {
@Autowired
TemplateFacade template;
public void execute() {
template.run();
template.validate();
template.buildOutput();
template.updateDatabase();
}
}
@Service
class TemplateFacade {
//service classes wrapping webservice soap execution logic
@Autowired
PersonSoap personSoap;
@Autowired
CarSsoap carSoap;
@Autowired
ServiceDao dao;
private WebserviceRsp personRsp, carRsp;
void run() {
personRsp = personSoap.invoke();
//process response and prepare CarSoapXML accordingly, then send
carRsp = carSoap.invoke();
}
//the following methods will all
void validate() {
//validate both responses
}
void buildOutput() {
//create system out based on responses
}
void updateDatabase() {
dao.update(..);
}
}