2016-07-12 3 views
0

나는 나머지 서비스를 소비하기 위해 저지의 다음 나머지 클라이언트 구현을 사용합니다. 성공적으로 할 수 있습니다. 추가적으로, 이제는 요청 매개 변수를 보내야합니다. 생산자 측의 HttpServletRequest.저지 클라이언트를 사용하여 HTTP 요청 매개 변수를 보내는 방법

소비자 측의 저지 클라이언트 코드

private ClientResponse getWebClientResponse(String RESOURCE_PATH, String methodType, Object requestObj) { 
    WebResource webResource; 
    ClientResponse response = null; 
    try { 
     String environmentHost = EnvironmentUtil.resolveEnvironmentHost(); 
     Client client = prepareClient(); 
     String RWP_BASE_URI = environmentHost + "/workflow/rest"; 
     webResource = client.resource(RWP_BASE_URI); 
     WebResource path = webResource.path(RESOURCE_PATH); 
     if (GET.equals(methodType)) { 
      response = path.type(javax.ws.rs.core.MediaType.APPLICATION_JSON).get(
       ClientResponse.class); 
     } else if (POST.equalsIgnoreCase(methodType)) { 
      response = path.type(javax.ws.rs.core.MediaType.APPLICATION_JSON).post(ClientResponse.class, requestObj); 
     } 
    } catch (Exception e) { 
     throw new RuntimeException(e.getMessage()); 
    } 
    return response; 
} 

생산자 측

@Context 
public void setContext(SecurityContext context) { 
    this.context = context; 
} 

public HttpServletRequest getRequest() { 
    return request; 
} 

@Context 
public void setRequest(HttpServletRequest request) { 
    this.request = request; 
} 

public String getSessionUserPID(final HttpServletRequest request, 
           final SecurityContext context) { 
    if (request.getSession(false) == null) { 
     final String exceptionMessage = "getSessionUserPID() failed, session NOT FOUND for this request"; 
     final Response response = Response.status(ExceptionStatus.UNAUTHORIZED.getNumber()) 
       .entity(exceptionMessage).build(); 
     LOG.error(exceptionMessage); 
     throw new WebApplicationException(response); 
    } 

    if (context.getUserPrincipal() == null) { 
     final String exceptionMessage = "getSessionUserPID() failed, user principal NOT FOUND"; 
     final Response response = Response.status(ExceptionStatus.UNAUTHORIZED.getNumber()) 
       .entity(exceptionMessage).build(); 
     LOG.error(exceptionMessage); 
     throw new WebApplicationException(response); 
    } 

    final String userPID = context.getUserPrincipal().getName(); 
    if (userPID == null || userPID.isEmpty()) { 
     final String exceptionMessage = "getSessionUserPID() failed, user principal name cannot be null or empty"; 
     final Response response = Response.status(ExceptionStatus.UNAUTHORIZED.getNumber()) 
       .entity(exceptionMessage).build(); 
     LOG.error(exceptionMessage); 
     throw new WebApplicationException(response); 
    } 

    return userPID; 
} 

여기에 주요 목적은 현재 내가 웹 로직 보안 컨텍스트에서 사용자 정보를 얻을되지만 특정 시나리오에 나는이 부분을 통과해야 휴식 서비스 요청 및 HttpServletRequest 개체에서 가져옵니다. 어떻게 httpservletrequest에서 얻을 수

답변

0

QueryParam o r GET 메서드의 PathParam 및 서버에 요청 매개 변수를 보내기위한 POST 메서드의 FormParam.

+0

정확하게 질문하지 않았습니다. 정보가 경로 매개 변수로 전달되기를 원하지 않습니다. 서버 끝에서 httpservlet 요청 객체에서 정보를 얻고 싶습니다. 쿼리 매개 변수 또는 경로 매개 변수에 추가하면 소비자 서비스의 서명이 변경됩니다. 나는 그것을 방해해야하고 따라서 나는 매개 변수를 전달하고 소비자 측의 httpservlet 요청 객체를 통해 읽으려고 시도하고있다. – Balaji

+0

그런 다음 HttpHeader에 필요한 매개 변수를 추가한다. – Alireza

관련 문제