Рубрики
Без рубрики

Миграция загрузочных приложений Java/ Spring: С Weblogic на сервер Tomcat

Oracle WebLogic Server – это масштабируемый сервер приложений корпоративной платформы Java для веб-приложений на базе Java… С тегами java, tomcat, weblogic, сервер.

Блог оракула Сервер – это масштабируемый сервер приложений корпоративной платформы 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, включает встроенную зависимость Tomcat spring-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”