Apache Wink REST 클라이언트를 사용하는 클라이언트 구현

Apache Wink REST 클라이언트를 사용하여 RESTful 서비스에서 요청을 전송하고 응답을 처리할 수 있습니다. Java™ 프로그램에서 클라이언트 API를 사용하여 웹 서비스와 통신할 수 있습니다.

이 태스크 정보

기본적으로 Apache Wink 클라이언트는 요청을 발행하고 응답을 처리하기 위해 Java 런타임 환경의 java.net.HttpURLConnection 클래스를 사용합니다. Apache Wink 클라이언트는 Apache HttpClient 4.0을 기본 클라이언트 전송으로 사용할 수도 있습니다.

또한 JAX-RS 엔티티 제공자를 사용하여 요청 엔티티를 직렬화하거나 응답 엔티티를 직렬화 해제할 수 있습니다. JAX-RS 서버 측 서비스에서 사용되는 표준 JAX-RS 제공자가 클라이언트에 제공됩니다.

Apache Wink REST 클라이언트를 프로그래밍 방식으로 또는 JVM(Java Virtual Machine) 특성을 설정하여 구성할 수 있습니다.

Apache Wink REST 클라이언트를 구현하려면 먼저 org.apache.wink.client.RestClient를 구성하는 데 사용할 org.apache.wink.client.ClientConfig 오브젝트를 작성해야 합니다. RestClient 오브젝트에 대한 구성 설정을 프로그래밍 방식으로 변경하거나 JVM 특성을 사용하여 기본 ClientConfig 오브젝트 값을 수정할 수 있습니다.

RestClient 오브젝트의 구성 설정을 프로그래밍 방식으로 구성하려면 ClientConfig 오브젝트의 공용 메소드를 시작하십시오.
참고: ClientConfig 오브젝트가 RestClient 오브젝트 구성에 사용된 후에는 ClientConfig 오브젝트를 수정할 수 없습니다. 이 오브젝트를 수정하려고 시도하면 org.apache.wink.client.ClientConfigException 오류 메시지가 발생합니다.
또는 기본 ClientConfig 오브젝트 값을 수정하기 위해 JVM 특성을 사용하여 RestClient 오브젝트의 구성 설정을 구성할 수 있습니다. 다음 JVM 특성을 사용하여 기본 ClientConfig 오브젝트 값을 수정하십시오.
wink.client.readTimeout

이 특성은 RestClient 오브젝트가 제한시간이 초과되기 전까지 요청에 대한 응답을 대기하는 시간을 밀리초 단위로 지정합니다. 값 0은 클라이언트가 무제한 대기하고 제한시간이 초과되지 않음을 의미합니다.

기본값은 60,000밀리초입니다.

wink.client.connectTimeout

이 특성은 RestClient 오브젝트가 대상 자원에 연결하려고 시도하는 동안 제한시간이 초과되기 전까지 대기하는 시간을 밀리초 단위로 지정합니다. 값 0은 클라이언트가 무제한 대기하고 제한시간이 초과되지 않음을 의미합니다.

기본값은 60,000밀리초입니다.

JVM 특성을 사용하여 지정하는 RestClient 오브젝트의 값을 프로그래밍 방식으로 변경할 수 있습니다. 프로그램 값이 JVM 특성 값에 우선합니다.

프로시저

  1. org.apache.wink.client.ClientConfig 오브젝트를 작성하십시오.
    다음 코드 스니펫은 org.apache.wink.client.ClientConfig 오브젝트를 작성하는 방법을 보여줍니다.
    org.apache.wink.client.ClientConfig clientConfig = new org.apache.wink.client.ClientConfig();
    .
    Apache HTTP 클라이언트를 기본 전송으로 사용하는 경우 org.apache.wink.client.ApacheHttpClientConfig 오브젝트를 대신 작성하고 사용하십시오. 다음 코드 스니펫은 org.apache.wink.client.ApacheHttpClientConfig 오브젝트를 작성하는 방법을 보여줍니다.
    org.apache.wink.client.ClientConfig clientConfig = new org.apache.wink.client.ApacheHttpClientConfig();
  2. (선택사항) RestClient 오브젝트에 사용할 기본 ClientConfig 오브젝트 값을 수정하십시오.
    • 프로그래밍 방식으로 RestClient 오브젝트의 기본 구성 설정을 선택적으로 수정할 수 있습니다. RestClient 오브젝트의 구성 설정을 프로그래밍 방식으로 지정하려면 ClientConfig 오브젝트의 공개 메소드를 시작하십시오. 예를 들면, 다음과 같습니다.
      clientConfig.connectTimeout(30000);
      clientConfig.readTimeout(30000);
    • 독립형 비관리 클라이언트 런타임 환경에서 JAX-RS용 씬 클라이언트를 사용하는 경우 JVM 특성을 사용하여 RestClient 오브젝트의 구성 설정을 선택적으로 수정할 수 있습니다. 씬 클라이언트가 실행 중인 JVM에서 사용자 정의 JVM 특성을 설정하십시오.
    • 독립형 클라이언트 런타임 환경으로 JAX-RS용 씬 클라이언트를 사용하지 않지만 애플리케이션 서버에 설치되는 것을 목적으로 하는 RestClient 오브젝트를 애플리케이션에서 사용하는 경우 JVM 특성을 사용하여 RestClient 오브젝트의 구성 설정을 선택적으로 수정할 수 있습니다. 관리 콘솔을 사용하여 애플리케이션 서버에 설치된 애플리케이션에서 실행되고 있는 REST 클라이언트에 대해 사용자 정의 JVM 특성을 설정하십시오. 관리 콘솔을 사용하여 이러한 사용자 정의 JVM 특성을 설정하는 것에 대한 세부사항은 JVM(Java Virtual Machine) 사용자 정의 특성 정보를 참조하십시오.
  3. (선택사항) 사용자 정의 엔티티 제공자를 사용하는 경우 클라이언트 구성을 사용하여 엔티티 제공자를 추가하십시오.
    org.apache.wink.client.ClientConfig clientConfig = new org.apache.wink.client.ClientConfig();
    
    javax.ws.rs.core.Application app = new javax.ws.rs.core.Application() {
           public Set<Class<?>> getClasses() {
               Set<Class<?>> classes = new HashSet<Class<?>>();
               classes.add(MyCustomEntityProvider.class);
               return classes;
           }
    };
    clientConfig.applications(app);
  4. 클라이언트 구성을 사용하여 org.apache.wink.client.RestClient 오브젝트를 작성하십시오.
    org.apache.wink.client.ClientConfig clientConfig = new org.apache.wink.client.ClientConfig();
    
    javax.ws.rs.core.Application app = new javax.ws.rs.core.Application() {
           public Set<Class<?>> getClasses() {
               Set<Class<?>> classes = new HashSet<Class<?>>();
               classes.add(MyCustomEntityProvider.class);
               return classes;
           }
    };
    clientConfig.applications(app);
    
    org.apache.wink.client.RestClient client = new org.apache.wink.client.RestClient(clientConfig);
  5. REST 클라이언트의 URI를 사용하여 org.apache.wink.client.Resource 오브젝트를 작성하십시오.
    org.apache.wink.client.ClientConfig clientConfig = new org.apache.wink.client.ClientConfig();
    
    javax.ws.rs.core.Application app = new javax.ws.rs.core.Application() {
           public Set<Class<?>> getClasses() {
               Set<Class<?>> classes = new HashSet<Class<?>>();
               classes.add(MyCustomEntityProvider.class);
               return classes;
           }
    };
    clientConfig.applications(app);
    
    org.apache.wink.client.RestClient client = new org.apache.wink.client.RestClient(clientConfig);
    
    org.apache.wink.client.Resource resource = client.resource(“http://www.example.com/rest/api/book/123”);
  6. Resource 오브젝트에서 메소드를 호출하여 보류 중인 요청에 요청 헤더를 추가할 수 있습니다.
    요청 컨텐츠를 요청을 전송하는 매개변수로 사용하여 post()와 같은 Java 메소드를 호출할 수 있습니다. 다음 예에서는 Content-Type 헤더 값 text/plain 및 Accept 헤더 값 */*를 사용하여 HTTP POST 요청을 작성합니다.
    org.apache.wink.client.ClientConfig clientConfig = new org.apache.wink.client.ClientConfig();
    
    javax.ws.rs.core.Application app = new javax.ws.rs.core.Application() {
           public Set<Class<?>> getClasses() {
               Set<Class<?>> classes = new HashSet<Class<?>>();
               classes.add(MyCustomEntityProvider.class);
               return classes;
           }
    };
    clientConfig.applications(app);
    
    org.apache.wink.client.RestClient client = new org.apache.wink.client.RestClient(clientConfig);
    
    org.apache.wink.client.Resource resource = client.resource(“http://www.example.com/rest/api/book/123”);
    
    ClientResponse response = resource.contentType(“text/plain”).accept(“*/*”).post(“The request body as a string”);
    String 오브젝트를 사용하여 resource.post("The request body as a string")을 호출하는 대신 유효한 javax.ws.rs.ext.MessageBodyWriter 오브젝트가 포함된 클래스(예: JAXB 어노테이션이 있는 클래스, byte[] 또는 사용자 정의 엔티티 제공자가 있는 사용자 정의 클래스)가 있는 다른 오브젝트를 사용할 수 있습니다.
  7. 상태 코드, 응답 헤더 또는 응답 메시지 본문을 사용하여 응답을 처리하십시오.
    org.apache.wink.client.ClientConfig clientConfig = new org.apache.wink.client.ClientConfig();
    
    javax.ws.rs.core.Application app = new javax.ws.rs.core.Application() {
           public Set<Class<?>> getClasses() {
               Set<Class<?>> classes = new HashSet<Class<?>>();
               classes.add(MyCustomEntityProvider.class);
               return classes;
           }
    };
    clientConfig.applications(app);
    
    org.apache.wink.client.RestClient client = new org.apache.wink.client.RestClient(clientConfig);
    
    org.apache.wink.client.Resource resource = client.resource(“http://www.example.com/rest/api/book/123”);
    
    ClientResponse response = resource.contentType(“text/plain”).accept(“*/*”).post(“The request body as a string”);
        
    System.out.println(“The response code is: “ + response.getStatusCode());
    System.out.println(“The response message body is: “ + response.getEntity(String.class));
    String.class 파일을 사용하여 response.getEntity(String.class) 오브젝트를 호출하는 대신 유효한 javax.ws.rs.ext.MessageBodyReader 오브젝트가 있는 다른 클래스(예: JAXB 어노테이션이 있는 클래스, byte[] 또는 사용자 정의 엔티티 제공자가 있는 사용자 정의 클래스)를 사용할 수 있습니다.
  8. (선택사항) 기본 인증 보안 토큰을 전송하도록 클라이언트를 구성하십시오. 클라이언트에 대한 기본 인증을 구성하기 위해 사용자 자신이 해당 HTTP 헤더를 관리하는 것을 선택하거나 제공된 BasicAuthSecurityHandler 핸들러 클래스를 사용할 수 있습니다. BasicAuthSecurityHandler 클래스는 Wink 클라이언트 애플리케이션에서 기본 인증의 사용을 단순화합니다. 기본 HTTP 인증을 수행하기 위해 보안 클라이언트 핸들러를 사용하는 것에 대해 자세히 알아보려면 웹 컨테이너 정보에서 JAX-RS 애플리케이션 보안 설정을 참조하십시오.

결과

Apache Wink REST 클라이언트를 사용하여 JAX-RS 애플리케이션에 요청을 발행할 수 있는 JAX-RS 클라이언트를 구현했습니다.


주제 유형을 표시하는 아이콘 태스크 주제



시간소인 아이콘 마지막 업데이트 날짜: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=twbs_jaxrs_impl_client_winkrestclient
파일 이름:twbs_jaxrs_impl_client_winkrestclient.html