Развертывание Spring MVC на сервере Oracle WebLogic Server

View more categories:

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

В данной статье я покажу вам как развернуть приложение Spring MVC на  Oracle WebLogic Server. Статья основана на:
  • Spring MVC 4.x

  • Oracle WebLogic Server 12c (12.2.1.1.0).

Удостоверьтесь, что вы уже скачали  WebLogic Server, если еще не установили вы можете посмотреть инструкцию по ссылке:
В данной статье я упакую приложение Spring MVC, написанное в  Eclipse и разверну его на  WebLogic Server.
Заметьте, если вы разворачиваете Spring MVC на других серверах, таких как Tomcat, Glassfish вам не нужно ничего менять на вашем исходном коде. Но если разворачиваете на WebLogic вам нужно добавить некоторые файлы конфигурации к исходному коду перед упаковкой.
Я разверну приложение  "Hello World Spring MVC" на  WebLogic. Вы можете посмотреть приложение по ссылке:
Или скачать исходный код (Source Code):

2- Добавить конфигурацию в Project

Это изображение Project после завершения:
Добавить  weblogic.xml в  WEB-INF. В файле  weblogic.xml вам нужно конфигурировать  contextPath (context-root) для приложения. Здесь я установил  /springmvc. Вы можете установить как   / если хотите использовать пустой   contextPath.
/WEB-INF/weblogic.xml
<?xml version='1.0' encoding='UTF-8'?>
<weblogic-web-app>
    <context-root>/springmvc</context-root>
    <container-descriptor>
        <show-archived-real-path-enabled>true</show-archived-real-path-enabled>
    </container-descriptor>
</weblogic-web-app>

3- Упаковка приложения

Maven Clean:
Maven Install:
Файл  war создан в папке  'target' в project.

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

Примечание: если вы получаете ошибку в одном из шаге при развертывании, посмотрите аппендикс в конце статьи.
Ваше приложение развернуто на  WebLogic, и имеет состояние "prepared" (Подготовлен). Вам нужно сделать еще один шаг чтобы активировать его.
Еще раз раблокировать для редактирования:
Start apps:
Ваше приложение успешно активировано.

Test apps:

5- Отменить развертывание

В случае, если вы хотите еще раз развернуть, или отменить развертывание (undeloy) для начала вам нужно остановить ( stop) приложение.

6- Некоторые ошибки при развертывании

Если вы получаете ошибку при развертывании на WebLogic вы получаете ошибку как в изображении ниже:
java.io.FileNotFoundException:
Could not open ServletContext resource [/WEB-INF/SpringDispatcher-servlet.xml]
Причиной ошибки является то, что ваш project Spring MVC использует Annotation для конфигурации (Не использует XML), но приложение все равно читает конфигурацию из файла XML ( SpringDispatcher-servlet.xml), этот файл не существует на вашем Project.

Вам нужно конфигурировать на  SpringWebAppInitializer,  чтобы удостовериться, что приложение не найдет файл для чтения файлов XML выше.
// Add code:

dispatcher.setInitParameter("contextClass", appContext.getClass().getName());

servletContext.addListener(new ContextLoaderListener(appContext));
Смотреть полный код:
SpringWebAppInitializer.java
package org.o7planning.hellospringmvc.config;

import javax.servlet.FilterRegistration;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.ServletRegistration;

import org.springframework.web.WebApplicationInitializer;
import org.springframework.web.context.ContextLoaderListener;
import org.springframework.web.context.support.AnnotationConfigWebApplicationContext;
import org.springframework.web.filter.CharacterEncodingFilter;
import org.springframework.web.servlet.DispatcherServlet;

public class SpringWebAppInitializer implements WebApplicationInitializer {

    @Override
    public void onStartup(ServletContext servletContext) throws ServletException {
        AnnotationConfigWebApplicationContext appContext = new AnnotationConfigWebApplicationContext();
        appContext.register(ApplicationContextConfig.class);

        // Dispatcher Servlet
        ServletRegistration.Dynamic dispatcher = servletContext.addServlet("SpringDispatcher",
                new DispatcherServlet(appContext));
        dispatcher.setLoadOnStartup(1);
        dispatcher.addMapping("/");

        // IMPORTANT!!
        dispatcher.setInitParameter("contextClass", appContext.getClass().getName());

        // IMPORTANT!!
        servletContext.addListener(new ContextLoaderListener(appContext));

        // UTF8 Charactor Filter.
        FilterRegistration.Dynamic fr = servletContext.addFilter("encodingFilter", CharacterEncodingFilter.class);

        fr.setInitParameter("encoding", "UTF-8");
        fr.setInitParameter("forceEncoding", "true");
        fr.addMappingForUrlPatterns(null, true, "/*");
    }

        // .........

}

View more categories: