我正在开发基于套接字的Web服务(套接字客户端)和外部服务器之间的通信。由于webservices是多线程的(服务器为每个服务请求创建了一个线程),每个线程是否应该使用外部服务器打开一个新的套接字(在给定端口上),或者应该在webservice线程之间同步和共享套接字客户端。 我在这里感到困惑。是开放客户端Socket(java.net.Socket的对象)是一个昂贵的对象,如JDBC Connection,它可以(应该)由每个线程打开,并在完成后由线程关闭。
请帮忙
由于
答案 0 :(得分:0)
如果您正在讨论在客户端为服务器的每个请求创建新的Socket
,那么这是正确的方法。
这正是具有标签的浏览器的运作方式。
拥有单个同步Socket
意味着您需要拥有一个线程名称/ id的映射/表,请求URL /或任何其他唯一ID或任何其他ID来标识请求来自哪个线程以及哪个线程必须转发响应。这肯定会出现案例性能问题,而且不具备可扩展性。