2013-04-29 31 views
1

我正在進入一個需要一點基礎設施的web項目,其中我真的沒有太多想法,所以我在這裏請求您的聖人建議:)。我應該如何通過Java上的套接字發送實體

該項目使用MVC的彈簧,並與其他項目稱爲跟蹤器,由套接字。

問題是我需要通過web創建一個名爲task的實體對象,並且這個實體應該發送給跟蹤器,在那裏將被處理,一個第一個想法是發送實體序列化,但看起來並不真實好,因爲在這個實體內部有很多其他的追蹤器中不需要的其他實體。跟蹤者還應該發回一些關於任務實現的反饋。

我讀過使用實體任務需要的數據創建JSON文件並將其發送給跟蹤器通常是個好主意,但我只是想確定並知道是否還有其他可能。

在此先感謝。

+0

退房[網狀](http://netty.io/) – durron597 2013-04-29 13:25:01

回答

2

有很多的可能性。我認爲JSON是XML的一個很好的選擇。

對於JSON,你可以使用谷歌Gson(https://code.google.com/p/google-gson/)是一個非常有用和容易的庫轉換JSON-JAVA,反之亦然。

Java對象序列化是另一種可能性。對於通過套接字發送Java對象,你可以這樣做:

URL urlServlet = new URL("http://..."); 
    URLConnection connection = urlServlet.openConnection(); 

    connection.setDoInput(true); 
    connection.setDoOutput(true); 
    connection.setUseCaches(false); 

    connection.setRequestProperty("Content-Length", 
    "512"); 
    connection.setRequestProperty("Content-Type", 
    "application/x-java-serialized-object"); 

    ObjectOutputStream output = new ObjectOutputStream(connection.getOutputStream()); 
    output.writeObject(getOrdenesDTO()); 
+0

謝謝,我想我會給JSON一試,只是因爲是如果有一天我想改變發送數據的項目的語言,這是一個好的選擇。 – KBorja 2013-04-29 16:54:53

+0

當然,如果您使用JSON,您的項目將獲得互操作性。 – Gere 2013-04-29 17:30:59

2

有很多可能性:例如JSON和XML,但序列化是最簡單的一種。除了創建JSON文件或使用現有實體外,您還可以創建一個新的簡單Java bean,僅包含您真正需要的信息併發送它。

當然在這裏我假設「traker」應用程序將相應地開發。

0

在我看來,使用JSON而不是序列化更容易實現,但是每個字段成員必須轉換爲字符串並返回。

您可以標記您不想用transient關鍵字序列化的字段。

其他選項當然是更困難的寫自己的套接字協議。