devstory

Déployer Spring MVC sur Oracle WebLogic Server

  1. L'objectif de ce document
  2. Ajouter la configuration au projet
  3. L'emballage des applications
  4. Déployer sur Weblogic
  5. L'annulation du déploiement
  6. Certaines erreurs lors du déploiement

1. L'objectif de ce document

Dans ce poste, je vous guidera sur la façon de déployer l'application web Spring MVC sur Oracle WebLogic Server. La publication est basée sur:
  • Spring MVC 4.x

  • Oracle WebLogic Server 12c (12.2.1.1.0).

Assurez-vous que vous avez déjà installé WebLogic Server, sinon, vous pouvez voir les instructions ici:
Dans ce document, je conditonnerai une application web Spring MVC écrite sur Eclipse et déployée sur WebLogic Server.
Notez que si vous déployez Spring MVC sur d'autres serveurs tels que Tomcat et Glassfish, vous n'avez pas besoin de modifier quoi que ce soit sur votre code source. Toutefois, si vous le déployez sur WebLogic, vous devez ajouter des fichiers de configuration au code source avant le package.
Je vais déployer l'application "Hello World Spring MVC" sur WebLogic. Vous pouvez voir l'application ici:
  • Le Tutoriel Spring MVC pour débutant - Hello Spring 4 MVC
Ou télécharger le code source (Source Code):

2. Ajouter la configuration au projet

C'est l'image du projet après achèvement:
Ajoutez weblogic.xml au WEB-INF. Dans le fichier weblogic.xml vous devez configurer contextPath (context-root) pour l'application. Au cas où je le nomme comme /springmvc. Vous pouvez le nommer comme / si vous voulez utiliser contextPath vide.
/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. L'emballage des applications

Maven Clean:
Maven Install:
Le fichier war a été créé dans le dossier 'target' du projet.

4. Déployer sur Weblogic

Remarque: Si vous obtenez une erreur dans l'une des étapes de déploiement, voyons l'annexe à la fin de la publication.
Votre application a été déployée sur WebLogic et elle a le statut "prepared" (préparé). Vous devez prendre une autre étape pour l'activer.
Re-déverrouiller pour changer.
Start apps:
Votre application a été activée avec succès.
Test apps:

5. L'annulation du déploiement

Dans le cas où vous souhaitez redéployer, ou pour ne pas l'annuler (undeloy), vous devez stop l'application.

6. Certaines erreurs lors du déploiement

Si vous obtenez une erreur ci-dessous lors du processus de déploiement sur WebLogic:
java.io.FileNotFoundException:
Could not open ServletContext resource [/WEB-INF/SpringDispatcher-servlet.xml]
La cause de l'erreur trouvée est que votre projet Spring MVC utilise Annotation pour configurer (ne pas utiliser XML), mais l'application lit toujours la configuration à partir du fichier XML (SpringDispatcher-servlet.xml) qui n'existe pas sur votre projet.

Vous devez le configurer sur SpringWebAppInitializer pour vous assurer que l'application ne trouvera pas pour lire les fichiers XML mentionnés ci-dessus.
// Add code:

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

servletContext.addListener(new ContextLoaderListener(appContext));
Voir le code complet:
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, "/*");
    }

        // .........

}