-2 java serialization servlets
我有两个客户端(A和B)和Servlet.我想,当客户端向SERVLET发送请求时,SERVLET将请求重定向到客户端B,客户端B将响应发送回客户端A.客户端不是服务器!它们是普通的socket客户端,因此不可能是经典的servlet重定向!
你有任何疑难解答的建议???
非常感谢!!!!
首先,您不能使用Java序列化序列化HttpServletRequest或HttpServletResponse.符合这些API的对象通常包括对servlet实现堆栈中"stuff"的引用,该堆栈本质上是不可序列化的.
其次,您无法将请求"重定向"到另一个客户端.从HTTP协议的角度来看,它没有意义.
当客户端向服务器发送请求并且服务器响应具有3xx状态代码,表示"在其他地方尝试该请求"时,会发生重定向.它是重定向到不同的服务器,而不是不同的客户端.
甚至忽略了重定向意味着什么的细节.您不能将HTTP请求发送到HTTP客户端角色中的某些内容.它不会期待它(听它),也不会知道如何处理它.(实际上它会违反HTTP协议.)
第三,"普通套接字客户端"无法与HTTP服务通信(使用Servlet或其他任何方式实现).客户端必须至少实现HTTP协议的一个子集,以便HTTP服务能够理解它自己.有可能实现"手工",但IMO这是一个坏主意......当有高质量的实现时,您可以免费使用.
简而言之,你似乎想做的事情是不可能/荒谬的.(如果我理解你的问题......这是值得商榷的.)
如果您解释了您实际上在这里尝试做什么,我们可能会建议合理的替代方法.
我正在尝试跨服务器连接两个Java客户端应用程序.客户端将能够直接与其他客户端通信.
从字面上看,你无法使用HTTP做到这一点.但是你可以构建一个HTTP服务器/ servlet,将消息从一个客户端传输到另一个客户端; 例如
但请注意,使用普通套接字客户端无法做到这一点.客户端必须是HTTP客户端.
如果您准备放弃服务器是HTTP服务器/ servlet的要求,则可以让"简单套接字"客户端打开到服务器的双工连接,并让服务器在客户端之间传递"消息".这需要为消息传递实现自定义"协议".
第三种选择是使用现有的RPC或对象代理技术; 例如RMI,CORBA,ICE等
| 归档时间: |
|
| 查看次数: |
6169 次 |
| 最近记录: |