2013-04-16 59 views
0

我正在使用Web服務,我想將它提升一個檔次。我使用Axis2和JAX-WS。我正在考慮轉移對象而不是String[]。在我搜索了一下之後,我發現JAXB是做這件事的正確支持者。但是,每次我想添加一個需要傳輸的模型類時,我需要做很多工作(關閉所有可以犯錯誤的註釋)。所以我認爲抽象一下會容易一些。基於對象的Java Webservice

我正在考慮使用Object類型創建Web服務。然後我可以使用方法addObject(Object object),removeObject(Object object),retrieveObject()。這意味着我的服務器需要處理接收對象。如果我然後添加一個新的模型類,我只需要在服務器端捕獲它。我的客戶需要包含造成冗餘的模型類,但我確定。我覺得Java在這個momemnt中不能支持我的想法。至少JAX-WS & JAXB技術。

你們可以告訴我,如果這是個好主意嗎?如果是這樣的話,也許可以指出我如何解決這個問題的正確方向(即使這意味着使用另一個技術)

在此先感謝!

+0

netbeans有一個嚮導,它將爲您創建模型類 –

+1

通常最好爲您的Web服務提供輸入域模型。用於創建採購訂單的WS需要'PurchaseOrder'的實例,並且查找客戶調用返回'Customer'的實例。通過輸入參數和返回值,可以生成良好的WSDL,以便用戶更輕鬆地與服務進行交互。 –

+0

您能解釋一些關於模型類的更多內容嗎?爲什麼使用它們需要很多工作? –

回答

0

您的客戶端不需要模型類型,但是當您將消息從服​​務器發送到客戶端時,您將不得不序列化和反序列化數據。我不確定JAX-WS是否與JAX-RS不同,但如果它們是相同的,那麼您可以添加註釋來標記是否要生成/使用json或xml。

一旦你將你的模型序列化爲json,你的客戶端讀取數據就沒有問題了。

另外,您是否可以在創建請求和響應對象時使用對象。在一個web服務,我最近寫了,我創建類似這樣

public class Response 
{ 
    private Object data; 
    private boolean success; 

    public Response() 
    { 
     super(); 
    } 

    //write getters and setters here 

} 

我認爲我使用Object類以類似的方式向你心目中什麼是服務響應類。

+0

感謝您的信息!如果在請求和響應對象中使用Object,則可能仍需要序列化和反序列化數據。我想通過將我的模型類(或其更簡單的版本)複製粘貼到客戶端來避免這種情況。 – Tankske

+0

@Tankske你將不得不序列化和反序列化你發送的數據,不管是什麼。 –

-1

我絕對推薦你使用JAXB(實現JAXB),特別是使用Jersey框架。它的使用非常簡單,並允許您編組和解組業務對象。

看這個Jersey Example

希望它能幫助!