【问题标题】:How Serialize HttpServletRequest/HttpServletResponse? [closed]如何序列化 HttpServletRequest/HttpServletResponse? [关闭]
【发布时间】:2013-01-19 10:01:23
【问题描述】:

我有两个客户端(A 和 B)和 Servlet。我想,当 A 客户端向 SERVLET 发送请求时,SERVLET 将请求重定向到客户端 B,客户端 B 将响应发送回客户端 A。客户端不是 SERVLETS !!!它们是普通的套接字客户端,因此不可能经典的 servlet 重定向!!

您对故障排除有什么建议吗???

非常感谢!!!!

【问题讨论】:

  • 您要解决的真正问题是什么?
  • 我正在尝试跨服务器连接两个 java 客户端应用程序。客户端将能够直接与其他客户端通信...无需服务器
  • 我试图通过重新阅读来理解这个问题的思考过程,但仍然不能。两个 java 客户端应用程序?希望您在“客户”的含义上建立了更多的基础。

标签: java servlets serialization


【解决方案1】:

首先,您不能使用 Java 序列化来序列化 HttpServletRequest 或 HttpServletResponse。符合这些 API 的对象通常包括对 servlet 实现堆栈中的“东西”的引用,这些东西本质上是不可序列化的。

其次,您不能将请求“重定向”到另一个客户端。从 HTTP 协议的角度来看是没有意义的。

  • 当客户端向服务器发送请求并且服务器响应有一个 3xx 状态代码表示“在其他地方尝试该请求”时,就会发生重定向。这是重定向到不同的服务器,而不是不同的客户端。

  • 甚至忽略重定向含义的细节。您不能向 HTTP 客户端角色中的对象发送 HTTP 请求。它不会期待它(听它),也不知道如何处理它。 (而且确实违反了 HTTP 协议。)

第三,“普通套接字客户端”不能与 HTTP 服务(使用 Servlet 或其他任何东西实现)通信。客户端必须至少实现 HTTP 协议的一个子集,才能让 HTTP 服务理解它自己。可以“手动”实现,但 IMO 这是一个坏主意......当有高质量的实现可以免费使用时。

简而言之,您似乎试图做的事情是不可能的/荒谬的。 (如果我正确理解你的问题......这是有争议的。)


如果您解释了您在此处实际尝试执行的操作,我们或许可以提出明智的替代方法。


我正在尝试跨服务器连接两个 java 客户端应用程序。客户端将能够直接与其他客户端通信。

从字面上看,您不能使用 HTTP 做到这一点。但是您可以构建一个 HTTP 服务器/servlet,将消息从一个客户端传输到另一个客户端;例如

  1. 客户端 A 向服务器发送包含 A 消息的 PUT 请求。
  2. 服务器存储消息并回复客户端 A。
  3. 客户端 B 发送一个 GET 请求,询问“任何消息吗?”到服务器。
  4. 服务器查找消息并以来自 A 的消息进行响应。

但请注意,您不能使用普通的套接字客户端做到这一点。客户端必须是 HTTP 客户端。

如果您准备放弃服务器是 HTTP 服务器/servlet 的要求,您可以让“简单套接字”客户端打开到服务器的双工连接,并让服务器在客户端之间传递“消息”。这需要为消息传递实施自定义“协议”。

第三种选择是使用现有的 RPC 或对象代理技术;例如RMI、CORBA、ICE 等

【讨论】:

  • 感谢您的及时回复!!我有两个不同的客户端应用程序。他们在不同的地点,并相互交换信息。我试图找到通过服务器组合这两个应用程序的最简单方法。发送的数据不能通过服务器。服务器仅用于连接它们。这有点像 TCP/UDP 打孔......
  • 如果A需要直接向B发送信息,则需要直接打开到B的连接。服务器唯一可能的角色可能是告诉 A B 在哪里;即作为某种“名称服务”或“交易服务”。
  • 你认为Java RMI可以通过Server直接连接两个Client吗?
  • @sales1307 不,它不能。 RMI 也是一个客户端/服务器协议。
  • 我认为你不会在这方面取得任何进展,直到你明白“客户端”和“服务器”实际上是 2请求/响应交互中的角色。因此,如果某物向您的“客户端 B”发送请求,则“客户端 B”必须处于服务器角色才能接收它。 “客户”发送请求。 “服务器”侦听请求并发送回复。
猜你喜欢
  • 2016-08-11
  • 1970-01-01
  • 2011-07-28
  • 1970-01-01
  • 2017-08-04
  • 2017-12-01
  • 1970-01-01
  • 2015-07-13
  • 2011-12-02
相关资源
最近更新 更多