我应该如何在Java上通过socket发送实体

时间:2013-04-29 13:14:51

标签: java json sockets entities

我正在进入一个需要一些基础设施的网络项目,其中我真的不太了解,所以我在这里请求你的圣人建议:)。

该项目使用spring作为MVC,并与其他项目连接,称为跟踪器,由套接字构成。

关键是我需要通过web创建和实体对象称为任务,并且该实体应该发送到跟踪器,在那里将被处理,一个第一个想法是发送序列化的实体,但看起来不是很好,因为在这个实体内部还有很多其他跟踪器不需要的实体。此外,跟踪器应该发回一些有关任务实现的反馈。

我已经读过,使用实体任务所需的数据制作一个JSON文件并将其发送到跟踪器通常是一个好主意,但我只是想确定并知道是否还有其他可能性。

提前致谢。

3 个答案:

答案 0 :(得分:2)

有很多可能性:例如JSON和XML,但序列化是最简单的。您可以创建一个新的,简单的Java bean,而不是创建JSON文件或使用现有实体,只包含您真正需要的信息并发送它。

当然,我假设“traker”应用程序将相应开发。

答案 1 :(得分:2)

有很多可能性。我认为JSON是一个比XML更好的选择。

对于JSON,您可以使用Google Gson(https://code.google.com/p/google-gson/)是一个非常有用且简单的库转换JSON-JAVA,反之亦然。

Java Objects序列化是另一种可能性。要通过套接字发送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());

答案 2 :(得分:0)

在我看来,使用JSON而不是序列化更容易实现,但是每个字段成员都必须转换为字符串并返回。

您可以使用transient关键字标记您不想序列化的字段。

其他选项当然是更难编写自己的套接字协议。