REST客户端与Wildfly10问题

问题描述:

您好,我有一个服务器端休息客户端应该调用另一个服务器休息API的问题。 它实际上与JBoss AS 7.1和Tomee一起工作,但当我使用Wildfly 10.1时,web服务响应404。REST客户端与Wildfly10问题

目标端点使用cookie身份验证来检查授权,这由servletFilter完成。 于是拨打服务我有一个cookie: 的Cookie:“COOKIE_NAME:TOKEN”

的Servlet过滤器是实际工作的罚款,事实上如果我调用相同的web服务与任何其他客户端(我试过的IntelliJ的一个邮差)它工作正常。

该问题只发生在服务器端调用通过Play框架1.2.5应用程序使用play WS lib完成。

这里的代码: (超类方法返回WS.WSRequest的一个实例)

@play.mvc.Before(priority = 0) 
    protected static WS.WSRequest authCookieHttpClient(String relativeUrl) throws IllegalStateException { 

     if (JWT_AUDIENCE != null && JWT_ISSUER != null && JWT_SECRET != null && JWT_TIMEOUT != null && API_ENDPOINT != null && AUTH_COOKIE_NAME != null) { 
      JWTClaims jwtClaims = new JWTClaims(
        JWT_ISSUER, 
        Security.getConnectedUser().username, 
        JWT_AUDIENCE, 
        JWT_TIMEOUT 
      ); 
      WS.WSRequest request = WS.url(API_ENDPOINT + relativeUrl); 
      JWTProducer jwtProducer = new JWTProducer(JWT_SECRET, jwtClaims); 

      try { 
       request.setHeader("Cookie", 
         AUTH_COOKIE_NAME + "=" + URLEncoder.encode(jwtProducer.signPayload(), "utf-8")); 
      } catch (UnsupportedEncodingException e) { 
       Logger.error("Unable to encode cookie info", e); 
      } 

      return request; 
     } 
     throw new IllegalStateException("Cannot use parent controller: " + ApiSubscriber.class + " without configuring API endpoint and JWT features"); 
    } 

调用代码:

WS.HttpResponse res = authCookieHttpClient(areaUrl + sb.toString()).get(); 

相同的请求工作正常与邮差/的Intellij客户端( cookie头等于播放WS请求)

所有工作正常与JAX-RS impl的JBoss AS 7.1(ee6)。由Jersey提供

它不适用于带有RestEasy提供的JAX-RS impl的WildFly 10.1(ee7)。 (重定向类似不被cookie所支持,所以客户端返回404)

任何建议? 谢谢。

问题是由播放框架java客户端生成的queryString造成的。 虽然在Jboss AS 7.1与泽西工作正常接受类似var1=&var2=123与RestEasy这样的查询失败,但没有引发任何异议,它变成了一个404响应。

目标端点当然是使用@QueryParam来自javax.ws.rs来映射queryString参数。

我发现该解决方案将调试信息添加到WildFly standalone xml(用于请求/响应),然后是登录的异常。

log http requests in Wildfly

希望它能帮助。