Ранее я работал с веб-сервером 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 и сервлетов (например, Tomcat) с использованием нативного кода, который не является стратегией реализации, которая была выбрана в конечном итоге (я считаю, что Websphere действительно следует этой модели реализации). Тем не менее, кот имеет Соединители и процитировать
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