有沒有什麼方法可以消耗基於SOAP的Spring Web服務,而不會在客戶端生成存根(正如不斷提到的指向JAX-WS的線程所示)?在java servlet中使用Spring(SOAP)Web服務
這是我的完整場景:
我有2個Web應用程序,說APP1 & APP 2,這兩者有春的支持。 APP2將其API作爲接受POJO(Reqeust和Response對象)的Spring-WS公開。肥皂。現在,我想從APP1調用這些Web服務,但希望避免必須使用WSDL frmo APP2創建存根。這可能嗎?
更多的細節,這是我的Web服務的操作之一:
@PayloadRoot(localPart = "CreateNewRequest", namespace = "myNameSpace")
public CreateNewReqResponse createNewRequest(CreateNewReqRequest requestObj) throws Exception
{
NewCase newCase = this.localSpringService.createNewCase(requestObj.getParam1(), requestObj.getParam2());
CreateNewReqResponse response = this.objectFactory.createCreateNewReqResponse();
CreateNewReqResponseObject responseObject = this.objectFactory
.createCreateNewReqResponseObject();
if(null != newCase)
{
responseObject.setParam1(newCase.getParam1());
responseObject.setParam2(newCase.setParam2());
}
responseObject.setCaseRequestedDate(caseRequestedDate);
}
response.setResponseObject(responseObject);
return response;
}
現在,你可以看到,Web服務方法接受CreateNewReqRequest並返回CreateNewReqResponse。我試圖弄清楚的是,我怎樣才能從APP1調用這個Web服務,它對這些類沒有任何線索 - CreateNewReqRequest和CreateNewReqResponse?除了使用JAX-WS在APP1中創建存根(從WSDL)之外,沒有別的辦法嗎?
這兩個應用程序都是我們自己的(這是我們開發的),但運行在不同的服務器上,因爲APP1無法直接調用Web服務 - 跨域策略。因此,我將在APP1中編寫一個servlet,它將使用APP2公開的Web服務。
Hi Pratik。謝謝。我完全同意你的觀點,但我擔心的是,如果我的APP2提供的WSDL更改,那麼使用這種方法不需要在APP1中重新創建存根;這對我的情況可能沒問題,因爲我知道什麼時候更換我的APP2,但是當我使用全部第三方Web服務時會發生什麼?如果他們改變WSDL,那麼我必須重新創建存根。不是嗎?我不確定我是否喜歡那樣。爲什麼這樣依賴POJO呢? Spring Web服務使用SOAP的缺點是什麼?或者對於RESTful也是一樣的? – legendofawesomeness
尼廷,看到我的編輯上面作爲回答你的問題 –
是的,它清除了很多東西:)感謝Pratik。 – legendofawesomeness