我在寫一個客戶端工具,它使用soap xml webservices(使用CXF從提供的wsdl自動生成類)。我不知道哪個設計最適合構建我想發送給web服務的xml請求。我的問題是要發送的請求必須由許多不同的部分/對象組成。我正在尋找一種乾淨的方式來構建這些部分的創建,最終形成完整的請求。構建XML請求的體系結構?
該請求可能會增加到200-500個XML行,因此在單個類中創建這些請求可能不是個好主意。
爲了說明我的目標,讓我們假設一個請求需要一個Person
對象,有些PARAMS必須是對象,如姓名,生日,地址等我想到了以下設計的設定:
1)靜態工具返回構造的XML部分
class XMLUtil {
public static PersonType createPerson(String name, String birthday, Address Address) {
//the xml person to send within the request
PersonType p = new PersonType();
p.setName(name);
p.setBirthday(birthday);
p.setAddress(address);
//assume some more params, but the concept is clear I hope
return p;
}
}
2)靜態工具,增加了構造的XML部分到XML請求
class XMLUtil {
public static void addPerson(WebserviceReq req, String name, String birthday, Address Address) {
//create person as above
req.addPerson(p);
}
}
3)非靜態服務
class XMLService {
private WebserviceReq req;
public XMLService(WebserviceReq req) {
this.req = req;
}
public void createPerson(String name, String birthday, Address Address) {
//create person as above
req.addPerson(p);
}
public WebserviceReq getWebserviceReq() {
return req;
}
}
用法:
1)
WebserviceReq req = new WebserviceReq();
req.addPerson(XMLUtil.createPerson("test", "2014-01-01", address));
req.send();
2)
WebserviceReq req = new WebserviceReq();
XMLUtil.addPerson(req, "test", "2014-01-01", address);
req.send();
3)
WebserviceReq req = new WebserviceReq();
XMLService service = new XMLService(req);
service.createPerson("test", "2014-01-01", address);
service.getWebserviceReq();
req.send();
如果不僅爲xml請求構造人物對象,而且還嘗試以某種方式封裝更多的部分,那麼您會更喜歡哪種方法,以便沒有一個類別被炸燬?
好主意,但我必須根據從Web服務提供的WSDL自動生成web服務類。 Usig你的方法,我不得不進一步創建一個包裝類爲我想要使用的生成的類... – membersound
是的,這是真的 - 你也必須編寫一個新的類,以提供任何功能,因爲你生成的類實際上並沒有任何功能。在那些類中,你將不得不明確地引用你生成的類的所有數據成員。 – user3221160