Блог оракула Сервер – это масштабируемый сервер приложений корпоративной платформы Java для веб-приложений на базе Java. Он популярен в коммерческой сфере, где компаниям требуется надежное программное обеспечение, которое поставляется с корпоративной поддержкой.
Apache Tomcat – это контейнер Java-сервлетов с открытым исходным кодом, который реализует многие корпоративные спецификации Java, такие как API веб-сайтов, Страницы Java-сервера и, что не менее важно, Java-сервлет. Tomcat – это легкий сервер, идеально подходящий для современных развертываний, включая Docker, Kubernetes и облачные развертывания.
Зачем переходить с Weblogic на Tomcat?
Уменьшите сложность
- Веб-блог сложен как в программировании, так и в администрировании.
- Разработка, отладка и развертывание в Weblogic занимают больше времени. Он слишком тяжелый.
- Tomcat быстрее справляется с такими задачами, как передислокация. Он фокусируется на основных функциях.
Снизить эксплуатационные расходы
- Поддержание блога обходится очень дорого. Одной из существенных затрат является лицензирование.
- Оборудование, необходимое для поддержки экземпляра Weblogic, и связанные с этим затраты на пространство/мощность/охлаждение высоки.
- Типичные эксплуатационные расходы Tomcat оцениваются от ¼ до ⅙ стоимости Weblogic
Автоматическое масштабирование сервера приложений WebLogic является сложной задачей, поскольку архитектура развертывания WebLogic сложна.
Контрольный список для определения пригодности к миграции
Приложение было разработано с использованием Tomcat в качестве среды выполнения во время разработки | Определение изменений конфигурации и развертывания | Да |
Приложение в основном использует сервлеты и/или JSP | Проверьте, использует ли приложение какие-либо сервисы, специфичные для WebLogic, и определите их эквивалентные замены для Tomcat | Да |
Приложение использует Spring framework | Определение изменений конфигурации и развертывания | Да |
Приложение написано в строгом соответствии со стандартами | Определите, используются ли другие технологии Java EE, и определите эквивалентные замены для Tomcat | Да |
Приложение представляет собой стороннее программное обеспечение, которое также доступно для Tomcat | Получите версию веб-приложения Tomcat и разверните его в Tomcat | Да |
Приложение использует EJB или другие функции сервера WebLogic, недоступные для Tomcat | Необходим рефакторинг кода, чтобы исключить использование такой функциональности. Предпочтительно это “новое приложение”, а не миграция | Нет |
Обычные Java-приложения (Загрузка без Пружины):
Существуют хорошо известные различия в конфигурации веб-приложения и соглашениях о расположении файлов между WebLogic и стандартами спецификации Java-сервлетов. Повышение соответствия вашего приложения стандартам делает его пригодным для работы на Tomcat.
Элементы для проверки и переноса в стандарт Java-сервлетов:
- Если в веб-приложении есть JSP, убедитесь, что все ссылки на
java.util. *
пакеты содержат соответствующие инструкции в файле JSP. - Убедитесь, что корневой каталог веб-приложения содержит каталог WEB-INF с
web.xml
файл внутри него. XML в этом файле должен указывать ваши сопоставления из любогоweblogic.properties
файла, который у вас был. - Если вы уже использовали
web.xml
файл для WebLogic, вам, скорее всего, придется очистить его от нестандартных элементов и атрибутов и найти стандартный способ сделать то же самое. Кот укажет вам на это. - Переместите свой каталог классов (если он у вас есть) из корневого каталога вашего веб-приложения в
WEB-INF/классы
. - Переместите любые файлы JSP из вашего каталога
файлы jsp
(если он у вас есть) в корневой каталог вашего веб-приложения. Tomcat требует, чтобы они находились в корневом каталоге вашего веб-приложения. - Переместите все файлы JAR, входящие в комплект вашего веб-приложения, в
WEB-INF/lib
. - Удалите или удалите любой код в вашем веб-приложении, который импортирует/использует
com.bea. *
илиcom.блог. *
пакеты. - Если веб-приложение использует сервлет “вызывающий”, где сервлет нигде не отображается в
web.xml
файл, и сервлет по-прежнему вызывается через URI, такой как/сервлеты/com.MyCompany.MyServlet
. Tomcat поставляется с сервлетом вызывателя, который по умолчанию отключен. Если вам нужно его использовать, обратитесь к документации Tomcat, чтобы включить его.
Необходимо выполнить описанные выше действия, чтобы сделать приложение подходящим для развертывания на внешнем сервере tomcat.
Проблемы
- Если вы планируете развернуть приложение на встроенном сервере tomcat, Spring Boot framework – идеальный способ.
- Но по какой-то причине, если вы не можете перейти на весеннюю загрузку, то вам понадобятся дополнительные усилия. Вам нужно будет написать решение для встраивания сервера Tomcat в ваше приложение с помощью tomcat-embed API
Приложения с пружинной загрузкой
Приложения spring boot могут быть развернуты либо на встроенном сервере tomcat, либо на отдельном сервере tomcat.
Встроенный сервер Tomcat
Это упрощает запуск приложения без установки/настройки внешнего сервера во время разработки и развертывания.
Сгенерированный файл jar будет содержать сервер Tomcat внутри, что позволит запускать приложение только с помощью среды выполнения java.
Это предпочтительный подход для контейнеризации приложения с помощью Docker и развертывания контейнера в среде, размещенной в контейнерах, такой как Kubernetes.
Автономный/Внешний сервер Tomcat
Это традиционный способ. У вас есть файл war, который будет использоваться для развертывания приложения на внешней установке tomcat.
Здесь в одной установке Tomcat может быть запущено множество приложений.
Любой блог.свойства
файл, который у вас был, не будет использоваться при загрузке Spring. Если есть какая-либо необходимая конфигурация, переместите ее в файл application.properties
.
Для всех изменений, необходимых для перехода с Weblogic на Tomcat, предусмотрены шаги как для встроенного Tomcat, так и для автономного Tomcat.
Изменения в зависимостях
По умолчанию в Spring Boot включен встроенный сервер Tomcat.
Зависимость
spring-boot-starter-web
, которая используется почти во всех приложениях на основе Spring Boot, включает встроенную зависимость Tomcatspring-boot-starter-tomcat
внутри.В приложении WebLogic они явно исключили бы эту зависимость Tomcat в
pom.xml
файл, как показано ниже.
org.springframework.boot spring-boot-starter-web org.springframework.boot spring-boot-starter-tomcat
Для встроенного кота
Удалите тег
<исключения>
и его содержимое, чтобы добавить обратно встроенную зависимость Tomcat.Здесь мы используем упаковку jar для развертывания. От pom.xml , удалите строку
<упаковка>война
, если таковая имеется.Пожалуйста, обратите внимание, что когда упаковка не объявлена, Maven предполагает, что артефакт по умолчанию: jar.
Для автономного кота
- Нам необходимо убедиться, что встроенный контейнер сервлетов не мешает контейнеру сервлетов, в котором развернут файл war.
- Для этого вам необходимо пометить зависимость встроенного контейнера сервлета как “предоставленную” в
pom.xml
:
org.springframework.boot spring-boot-starter-tomcat provided
- Здесь мы используем военную упаковку для развертывания. Объявить типу упаковки “войну” в pom.xml файл следующим образом:
0.0.1-your-app-version war your-app-name
Изменения в инициализаторе сервлета:
В приложении Spring Boot, развернутом в WebLogic, сервлет расширяет инициализатор SpringBootServletInitializer, и этот инициализатор напрямую реализует инициализатор WebApplicationInitializer.
Это можно либо найти в основном классе с помощью @SpringBootApplication
самого:
import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.web.servlet.support.SpringBootServletInitializer; import org.springframework.web.WebApplicationInitializer; @SpringBootApplication public class MyApplication extends SpringBootServletInitializer implements WebApplicationInitializer { @Override protected SpringApplicationBuilder configure(SpringApplicationBuilder application) { return application.sources(Application.class); } public static void main(String[] args) { SpringApplication.run(Application.class, args); } }
Или это можно найти в отдельном классе следующим образом:
import org.springframework.boot.builder.SpringApplicationBuilder; import org.springframework.boot.web.servlet.support.SpringBootServletInitializer; public class ServletInitializer extends SpringBootServletInitializer implements WebApplicationInitializer { @Override protected SpringApplicationBuilder configure(SpringApplicationBuilder application) { return application.sources(ServerTestApplication.class); } }
В любом случае выполните следующие действия и внесите изменения в один из классов.
Для автономного кота:
- Нам не нужна реализация инициализатора WebApplicationInitializer. Удалите эту инструкцию
реализует инициализатор WebApplicationInitializer
. - Убедитесь, что инициализатор SpringBootServletInitializer расширен и переопределяет метод configure, как в приведенном выше фрагменте кода.
Для встроенного кота:
- Нам не нужна реализация инициализатора WebApplicationInitializer. Также нам не нужно расширять инициализатор Springbootservlet, что также означает удаление переопределенного метода configure.
- Результирующий основной класс должен иметь формат по умолчанию:
@SpringBootApplication public class MyApplication { public static void main(String[] args) { SpringApplication.run(Application.class, args); } //Other methods, beans, etc. }
- Если у вас был отдельный класс ServletInitializer, этот класс можно удалить, так как он больше не требуется.
Развертывание
Создайте развертываемый файл jar/war с помощью Maven.
Выполните следующие команды в корневой папке проекта, чтобы создать файлы jar/war:
mvn clean mvn install
В качестве альтернативы вы можете использовать инструменты IDE maven для создания файлов jar/war. Это создает файл jar/war по пути {корень проекта}/цель.
Для встроенного кота:
- Используйте созданный файл jar для развертывания приложения. Этот jar можно запустить, используя только среду выполнения java, без настройки сервера.
- Вы можете легко контейнеризировать это приложение с помощью Docker.
Для автономного кота:
Используйте созданный файл war для развертывания приложения на внешнем сервере Tomcat.
записка: Версия tomcat, присутствующая в вашем дереве зависимостей, должна совпадать с установленной вами внешней версией Tomcat. Это можно решить двумя способами:
- Проверьте версию tomcat в дереве зависимостей и установите ту же версию извне для развертывания.
- Если вам необходимо сохранить определенную версию внешнего tomcat, вы также можете изменить версию, используемую в приложении, указав ее в pom.xml . Но этот метод может привести к каскадным ошибкам, которые необходимо устранить.
11 10.0.5
Если ваше приложение успешно запущено на Tomcat, слава вам! Вы успешно взломали блокировку поставщика из-за преимуществ открытого исходного кода.
Ваше здоровье!
Оригинал: “https://dev.to/varshithv/migration-of-java-spring-boot-applications-from-weblogic-to-tomcat-server-jpd”