2012-05-30 17 views
0

我正在編寫我們網絡上兩個舊應用程序之間的橋樑。一個web服務採用URL編碼參數(GET)並返回一個XML文檔。就像這樣:將請求映射到非標準Web服務

http://mytest.com/getData/?format=xml&dateStart=2012-01-01

我的問題是這樣的 - 我可以使用XSD爲返回的XML和馬歇爾它爲Java對象(XJC定義)..但有什麼辦法向請求/響應地圖一個jax-ws web服務(或類似的嗎?)它不是SOAP--所以我不能走WSDL,CXF/JAX-WS路線,對嗎?

我真的希望有一個優雅的解決方案,而不必從頭開始編寫代碼(URL請求,返回流,然後是元帥)。有沒有框架可以讓我配置一個請求?我認爲WSDL支持verb =「GET」,但不幸的是,我似乎無法使用Apache CXF和WSDL2JAVA。

我完全脫離基地嗎?

回答

1

我認爲JAX-RS可能在這裏使用。只需創建XSD架構並將它們轉換爲Java類,併爲該站點使用REST客戶端即可。

你也可以用CXF來做。請參閱here

+0

嗯,可能是解決辦法 - 將REST服務走在GET參數值? –

+0

是的,它應該。在定義REST服務時,您使用@GET註釋來通知服務器將爲GET請求提供服務,並且參數應該位於URL中。所以如果你創建了一個客戶端,它應該對GET請求採取這種方式。 – npe

+0

謝謝!像魅力一樣工作。我最終使用Jersey作爲客戶端,因爲它使事情變得非常簡單 –

0

檢出WSGen,或者可以將WSDL添加到JAX-WS端點的末尾以獲取生成的WSDL。這樣您所要做的就是創建類似於JAX-RS的JAX-WS註釋類,並生成WSDL,並且它應該能夠處理您的XJC生成的對象而不會出現問題。

http://metro.java.net/guide/ch02.html#create-a-metro-web-services-endpoint

+0

端點不能在這裏更改..並且沒有任何WSDL - 這個東西是舊的,並且是wsdl。它甚至不支持HTTP POST。 –

+0

我不是說你需要編寫一個WSDL,它是由JAX-WS自動生成的。但是由於您描述的服務採用URL編碼參數並生成XML,因此它不是SOAP,它是REST,它是JAX-RS,Jersey是標準參考實現,在jersey.java上有一個很好的「入門指南」。 net – LINEMAN78

+0

您還可以使用類似於通過WSDL生成JAX-WS的WADL爲JAX-RS定義和生成這些端點。 – LINEMAN78