Я работал с веб-сервером Apache раньше, используя PHP, Ruby и статические страницы JavaScript/HTML.
Одна вещь, с которой я запутался в Tomcat, в основном, ПОЧЕМУ, что Tomcat существует в первую очередь, вместо использования Apache с установленной JVM? Почему все эти популярные языки нуждаются в Java в своем специализированном контейнере, а именно Tomcat?
Если вы хотите использовать PHP для обслуживания контента, просто установите PHP на сервер Apache и вуаля, когда пользователь перейдет на mysite.com/mypage.php:
Почему это не так, как при работе с Java?
На мой взгляд, это должно выглядеть так: просто установите Java и JVM на сервер Apache, а затем, когда пользователь перейдет на mysite.com/mypage, это произойдет:
Это связано с тем, что файлы Java необходимо скомпилировать, и нет смысла перекомпилировать его при каждом запросе? Тогда почему бы просто не сопоставить запрос с соответствующим файлом .class
?
Это может показаться абсурдным для тех, кто уверен в Tomcat, но, как видите, я, к сожалению, этого не понимаю.
Php и Java - это платформы разработки, которые могут работать независимо от Apache. Для запуска PHP-скриптов/приложений вам сначала нужно установить PHP-интерпретатор, то же самое касается Java, где вам нужно будет установить JVM, который работает как интерпретатор для файлов/приложений Java.
Для запуска PHP файлов с помощью Apache вам необходимо включить расширение mod_php
, это в основном программа, которая позволяет вызывать PHP-интерпретатор из Apache и выполнять скрипты php. Для выполнения или запуска веб-приложений на платформе J2EE требуется веб-контейнер (https://docs.oracle.com/javaee/5/tutorial/doc/bnabo.html). Apache может подключаться к веб-контейнеру J2EE с помощью модуля, как правило, вы должны использовать AJP, чтобы Apache мог взаимодействовать с Tomcat и выполнять сервлеты Java или страницы JSP.
Вы не требуете, чтобы Apache запускал веб-приложения Java, однако вы должны использовать веб-контейнер J2EE для их запуска, поэтому технически Tomcat можно использовать в качестве веб-сервера, но он не рекомендуется для производства, поскольку Apache будет иметь лучшую производительность, особенно когда обслуживающий статический контент.
Tomcat - проект Apache. Хотя теоретически возможно реализовать JSP и контейнер Servlet (например, Tomcat) с использованием собственного кода, который не является стратегией реализации, которая была в конечном итоге выбрана (я считаю, что Websphere действительно соответствует этой модели реализации). Тем не менее, у tomcat есть Соединители и процитировать
AJP
При использовании одного сервера производительность при использовании собственного веб-сервера перед экземпляром Tomcat в большинстве случаев значительно хуже, чем автономный Tomcat с его стандартным HTTP-коннектором, даже если большая часть веб-приложения сделана из статических файлов, Если по какой-либо причине требуется интеграция с собственным веб-сервером, разъем AJP обеспечит более высокую производительность, чем прокси-HTTP. Кластеризация AJP является наиболее эффективной с точки зрения Tomcat. В противном случае это функционально эквивалентно кластеризации HTTP.
Родственные разъемы, поддерживаемые этой версией Tomcat:
JK 1.2.x with any of the supported servers mod_proxy on Apache HTTP Server 2.x (included by default in Apache HTTP Server 2.2), with AJP enabled
JSP and Servlet container
? Почему этот container
такая необходимая вещь? Как я упоминал в OP, другие языки, похоже, не имеют никакого container
кроме самого веб-сервера и интерпретатора языка (насколько я могу судить)
mod_php
, но для запуска Java на Apache вам нужен какой-тоWeb Container
, а Tomcat является его реализацией? Я думаю, я удивлен / смущен для PHP, это просто вызов интерпретатора, тогда как для Java это отдельный «контейнер», используемый ... если я правильно следовал этому