Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/fortran/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 服务器设计,当tomcat监听多个端口时_Java_Sockets_Tomcat_Jvm - Fatal编程技术网

Java 服务器设计,当tomcat监听多个端口时

Java 服务器设计,当tomcat监听多个端口时,java,sockets,tomcat,jvm,Java,Sockets,Tomcat,Jvm,根据中的澄清章节(来自MarkR) 我觉得,任何服务器都有一个端口,在这个端口上,服务器的listen()调用被阻止(比如tomcat),任何客户端(比如浏览器)都会在这个端口上发出connect()请求,例如,我假设tomcat服务器会执行以下操作(更正我) 但是根据 我看到tomcat可以监听多个端口,那么tomcat服务器的多/并行listen()调用设计如何呢?tomcat是否有多个进程,其中listen()在不同的端口上被阻止?tomcat为每个(绑定到特定端口,所以是:tomcat有

根据中的澄清章节(来自MarkR)

我觉得,任何服务器都有一个端口,在这个端口上,服务器的listen()调用被阻止(比如tomcat),任何客户端(比如浏览器)都会在这个端口上发出connect()请求,例如,我假设tomcat服务器会执行以下操作(更正我)

但是根据


我看到tomcat可以监听多个端口,那么tomcat服务器的多/并行listen()调用设计如何呢?tomcat是否有多个进程,其中listen()在不同的端口上被阻止?

tomcat为每个
(绑定到特定端口,所以是:tomcat有多个“进程”(线程),其中
接受
(不是
listen
)在每个端口上被阻止


请注意,Tomcat是完全开源的,所以如果您愿意,可以查看代码。

您的最后一个问题是正确的。@ElliottFrisch那么,设计是什么样子的?Tomcat服务器是fork+线程模型,而不是单进程/多线程模型。我需要更多信息。@user3317808这是一个进程,多个线程。您可以添加server.xml文件中的连接器;它们都在同一服务器实例中运行。请注意,每个连接器都有自己的线程池用于处理请求(请参见说明)。最大的问题是,你为什么想知道这些?除非你正在做一些非常令人讨厌的事情,否则它一点也不会影响web应用程序的设计。@JasonC在决定引入多个端口之前,必须通过实时监听多个端口来了解tomcat的行为/性能。我觉得这是可以做到的通过理解tomcat服务器的设计(高级)。是的,我知道可以使用server.xml,正如我在查询(link2)中提到的那样,但在我在这个xmlSchultz中添加了一个额外的端口号之后,tomcat服务器是否有两个主进程在两个不同的端口上侦听?我的查询指的是,tomcat是维护多个线程来维护多个侦听端口?还是多个进程来维护多个侦听端口?Apache tomcat绝不是多进程。如果您要求c将Tomcat与httpd进行比较,然后归结为您在httpd中选择的MPM与您在Tomcat中选择的连接器之间的差异。Tomcat使用单独的“acceptor”线程在每个套接字上调用
accept()
//original/main single process does below

socket();bind();listen(on default port 80);


loop{ 

  accept(); 

//app layer logic(i.e., Below activity is done on seperate thread from a threadpool in main process)
//reads in all of the HTTP request and converts it into an object called an HttpServletRequest. That object is then passed in to my servlet by Tomcat via a method call. 

}