2017-06-05 4 views
1

J'ai mis à jour mon Wildfly 8.2.1.Final avec une nouvelle version de RESTEasy pour pouvoir utiliser le support SNI (non disponible en 3.0.10. Version finale). J'ai donc copié le resteasy-jboss-modules-3.0.23.Version finale dans mon répertoire /wildfly/modules/system/layers/base. Mais maintenant j'ai un comportement différent! mes services de repos ne sont pas appelés. Et quand je l'ai inspecté le contexte chemin/servlet j'ai trouvé des valeurs différentes entre les versions 3.0.10.Final et 3.0.23.Final:ServletPath passe de RESTEasy 3.0.10.Final à 3.0.23.Final

Avec RESTEasy 3.0.10.Final Je les valeurs suivantes:

 String contextPath = request.getContextPath(); // = "/myApp" 
     String servletPath = request.getServletPath(); // = "/api" 
     String pathInfo = request.getPathInfo(); // = "/auth" 

Et avec RESTEasy 3.0.23.Final Je:

 String contextPath = request.getContextPath(); // = "/myApp" 
     String servletPath = request.getServletPath(); // = "/api/auth" 
     String pathInfo = request.getPathInfo(); // = null 

mon jboss-web.xml:

<?xml version="1.0" encoding="UTF-8"?> 
<jboss-web> 
    <context-root>/myApp</context-root> 
</jboss-web> 

Et je n'ai aucun mappage de servlet dans mon fichier web.xml. Tout ce que j'ai est classe extension javax.ws.rs.core.Application avec @ApplicationPath annotation:

@ApplicationPath("/api") 
public class RESTActivator extends Application { 
    private final Set<Class<?>> classes; 

    public RESTActivator() { 
     HashSet<Class<?>> c = new HashSet<>(); 
     c.add(ARestService.class); 
     c.add(AnotherRestService.class); 
     classes = Collections.unmodifiableSet(c); 
    } 

    @Override 
    public Set<Class<?>> getClasses() { 
     return classes; 
    } 
} 
+0

À quoi ressemblent les mappages de servlet dans votre fichier web.xml? –

+0

@Steve C J'ai mis à jour la question avec la configuration des mappings – ElArbi

Répondre

1

Le comportement de request.getServletPath() et request.getPathInfo() dans un contexte JAX-RS n'est pas défini par la spécification, donc je suppose qu'une implémentation est libre de gérer ces choses comme elle l'entend.

Si ces composants de chemin d'accès sont importants, vous pouvez utiliser les services d'un javax.ws.rs.core.UriInfo injecté via @javax.ws.rs.core.Context à la place.

+0

Lorsque j'injecte un javax.ws.rs.core.UriInfo avec @Context, j'obtiens une valeur nulle – ElArbi

+0

Même lorsqu'une requête est en cours de traitement? –

+0

Oui même lorsqu'une demande est en cours de traitement – ElArbi