0
私は、Jerseyの次の残りのクライアント実装を使用して休憩サービスを消費します。これを正常に実行できます。さらに、リクエストパラメータを送信する必要がありますプロデューサ側のHttpServletRequestJerseyクライアントを使用して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;
}
ここでの主な目的は、現在、私は、WebLogicセキュリティコンテキストからユーザー情報を取得されますが、特定のシナリオのために、私はこの部分を渡す必要がありますHttpServletRequestオブジェクトから取得することができます。httpservletrequestからこれを取得するにはどうすればいいですか?
あなたは私の質問を正しく受け取りませんでした。私は情報がパスパラメータとして渡されることを望んでいません。サーバー側では、httpservlet要求オブジェクトから情報を取得する必要があります。クエリパラメータまたはパスパラメータに追加すると、コンシューマサービスの署名が変更されます。私はそれを妨害するはずではないので、パラメータを渡して消費者側のhttpservlet要求オブジェクトを介してそれを読み取ろうとしています – Balaji
次に、必要なパラメータをHttpHeaderに追加します – Alireza