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


See Also:
В данной статье я покажу вам как развернуть приложение 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):
Это изображение 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>
Maven Clean:


Maven Install:


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






Примечание: если вы получаете ошибку в одном из шаге при развертывании, посмотрите аппендикс в конце статьи.




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

Еще раз раблокировать для редактирования:

Start apps:


Ваше приложение успешно активировано.

Test apps:



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

Если вы получаете ошибку при развертывании на 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 выше.
Вам нужно конфигурировать на 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, "/*");
}
// .........
}