Развертывание приложения Spring Boot на Oracle WebLogic Server

1- Цель статьи

В данной статье я покажу вам как развернуть приложение  Spring Boot на  WebLogic Server. Это  Web Server предоставленный с помощью  Oracle, бесплатно для скачивания, развития (developing), теста (testing), макетирования (prototyping) и демонстрации (demonstrating) вашего приложения. WebLogic выпущен по лицензии  OTN.
Удостоверьтесь, что вы успешно установили  WebLogic, если не вы можете посмотреть способ установки  WebLogic в статье ниже:
На самом деле, приложение  Spring Boot может быть упаковано в выполняемый файл  JAR (Executable JAR file). С данным файлом вы можете запустить приложение напрямую без необъодимости развертывания ни на каком Web Server. Executable JAR file может быть несовместимым со всеми  Web Server. Поэтому если вы хотите развернуть на определенном  Web Server​​​​​​​, то вам нужно упаковать приложение  Spring Boot в файл  WAR.

2- Edit code

Здесь у меня имеется проект  Spring Boot, разработанный с помощью  Eclipse IDE. При создании проекта  Spring Boot у вас есть 2 выбора для упаковки данного проекта это  WAR или  JAR.
Когда вы создаете проект  Spring Boot с опцией  "Packaging = War", Eclipse создает для вас 2 класс это  "AbcApplication & ServletInitializer". Файлы  WAR подходящие для развертывания (deploy) на  Web Server.
При это если вы создаете проект  Spring Boot с опцией  "Packaging = Jar", будет создан только один класс  AbcApplication. Приложение  Spring Boot при упаковке в файл  JAR, может выполняться (Executabe) независимо, без необходимости развертывания на каком-либо  Web Server. Но файл  JAR не подходит для развертывания на Web Server.

WAR File.

Если у вас есть готовый проект  Spring Boot, вам нужно изменить метод упаковки (Packaging) на  WAR:
На  Eclipse открыть файл  pom.xml, и измените метод упаковки (packaging) на  war.
Если ваш проект не имеет класс  ServletInitializer, создайте его.
ServletInitializer.java
package org.o7planning.example;

import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;

public class ServletInitializer extends SpringBootServletInitializer {

    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
        return application.sources(SpringBootWebLogicApplication.class);
    }

}
Добавить следующую сниппет конфигурацию в  pom.xml:
** pom.xml **
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-tomcat</artifactId>
    <scope>provided</scope>
</dependency>
Если имеется больше чем 1 класс  Application в вашем проекте, скажите  Spring Boot какой класс будет использоваться для вашего приложения.
** pom.xml **
<properties>
        <start-class>org.o7planning.example.OtherSpringBootWebApplication</start-class>
</properties>

weblogic.xml & dispatcherServlet-servlet.xml

Создать 2 файла  weblogic.xml & dispatcherServlet-servlet.xml в папке  src/main/webapp/WEB-INF. Заметьте, если данная папка не существует, создайте ее.
Ваше приложение при развертывании на WebLogic будет иметь  "context-root = /myweb", вы можете его изменить с помощью конфигурации в файле  weblogic.xml:
weblogic.xml
<?xml version="1.0" encoding="UTF-8"?>
<wls:weblogic-web-app
        xmlns:wls="http://xmlns.oracle.com/weblogic/weblogic-web-app"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://xmlns.oracle.com/weblogic/weblogic-web-app
        http://xmlns.oracle.com/weblogic/weblogic-web-app/1.4/weblogic-web-app.xsd">

    <wls:context-root>/myweb</wls:context-root>
    <wls:container-descriptor>
        <wls:prefer-application-packages>
            <wls:package-name>org.slf4j.*</wls:package-name>
            <wls:package-name>org.springframework.*</wls:package-name>
        </wls:prefer-application-packages>
    </wls:container-descriptor>

</wls:weblogic-web-app>
dispatcherServlet-servlet.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.springframework.org/schema/beans
    http://www.springframework.org/schema/beans/spring-beans.xsd">
    
</beans>

3- Install Spring Boot

В следующем шаге, вам нужно использовать Maven чтобы создать файл  WAR. Вам нужно удостовериться ваш  Eclipse использует  JDK вместо  JRE. Если нет, произойдет ошибка в данном процессе.
Нажмите на правую кнопку мыши на Project и выберите:
  • Run As/Maven Install

Теперь вы получите файл WAR расположенный в папке target проекта, вы можете использовать данный файл для развертывания на Tomcat Server.

4- Развернуть на WebLogic

После упаковки приложения в файл  WAR, вы можете развернуть данный файл на  WebLogic:
Есть 2 подхода для развертывания приложения на  WebLogic Server.
  1. Копировать файл WAR расположить в определенную папку сервер, потом развернуть данный файл на WebLogic. Если хотите переразвернуть приложение, вам нужно только скопировать новый файл WAR перезаписать старый файл и объявить WebLogic обновить приложение.
  2. Использовать функцию Upload для развертывания файла WAR.
OK, здесь я скопировал файл  WAR и расположил его в папке на сервере.
Нажмите на  "Activate Changes" для активации изменений.
Теперь ваше приложение имеет статус  "Prepared" (Подготовленный), оно еще не активировано для работы.

Test

5- Отмена развертывания (Undeploy)

Чтобы отменить развертывание (Undeploy) приложения на  WebLogic, вам нужно выполнить 2 шага.
  1. Остановить (Stop) приложение.
  2. Удалить приложение из WebLogic.

6- Обновить развертывание

Если ваше приложение обновлено, переупекуйте приложение и получится новый файл  WAR. Чтобы развернуть приложение у вас есть 2 способа, чтобы сделать это:
  1. Отмена развертывания (Undeploy) приложения и переразвернуть (Redeploy).
  2. Скопировать новый файл WAR и перезписать старый файл WAR, и объявить WebLogic переобновить приложение (Или перезагрузить WebLogic). Примечание: Данный способ применяется только когда ваше приложение развернуто напрямую из файла WAR, расположенный на сервере.
В предыдущем шаге я развернул приложение напрямую с файла  WAR расположеный в папке сервера. Теперь я скопирую новый файл, чтобы перезаписать старый.
И обновить (Update) приложение: