59.3.2. 인터셉터 공급자 API 사용


59.3.2.1. 개요

인터셉터는 인터셉터 공급자 인터페이스 에 표시된 InterceptorProvider 인터페이스를 구현하는 모든 구성 요소로 등록할 수 있습니다.

인터셉터 공급자 인터페이스

package org.apache.cxf.interceptor;

import java.util.List;

public interface InterceptorProvider
{
    List<Interceptor<? extends Message>> getInInterceptors();

    List<Interceptor<? extends Message>> getOutInterceptors();

    List<Interceptor<? extends Message>> getInFaultInterceptors();

    List<Interceptor<? extends Message>> getOutFaultInterceptors();
}

인터페이스의 네 가지 방법을 사용하면 각 엔드포인트의 인터셉터 체인을 Java List 오브젝트로 검색할 수 있습니다. 개발자는 Java List 오브젝트에서 제공하는 방법을 사용하여 모든 체인에 인터셉터를 추가하고 제거할 수 있습니다.

59.3.2.2. 절차

InterceptorProvider API를 사용하여 런타임 구성 요소의 인터셉터 체인에 인터셉터를 연결하려면 다음을 수행해야 합니다.

  1. 인터셉터를 연결할 체인으로 런타임 구성 요소에 대한 액세스 권한을 가져옵니다.

    개발자는 Apache CXF 특정 API를 사용하여 표준 Java 애플리케이션 코드에서 런타임 구성 요소에 액세스해야 합니다. 일반적으로 런타임 구성 요소는 JAX-WS 또는 JAX-RS 아티팩트를 기본 Apache CXF 개체로 캐스팅하여 액세스할 수 있습니다.

  2. 인터셉터의 인스턴스를 생성합니다.
  3. 적절한 get 방법을 사용하여 원하는 인터셉터 체인을 검색합니다.
  4. List 오브젝트의 add() 메서드를 사용하여 인터셉터를 인터셉터 체인에 연결합니다.

    이 단계는 일반적으로 인터셉터 체인 검색과 결합됩니다.

59.3.2.3. 소비자에게 인터셉터 연결

프로그래밍 방식으로 사용자에게 인터셉터 연결 JAX-WS 소비자의 인바운드 인터셉터 체인에 인터셉터를 연결하는 코드를 보여줍니다.

프로그래밍 방식으로 사용자에게 인터셉터 연결

package com.fusesource.demo;

import java.io.File;
import java.net.URL;
import javax.xml.namespace.QName;
import javax.xml.ws.Service;

import org.apache.cxf.endpoint.Client;

public class Client
{
  public static void main(String args[])
  {
    QName serviceName = new QName("http://demo.eric.org", "stockQuoteReporter");
    Service s = Service.create(serviceName);

    QName portName = new QName("http://demo.eric.org", "stockQuoteReporterPort");
    s.addPort(portName, "http://schemas.xmlsoap.org/soap/", "http://localhost:9000/EricStockQuote");

    quoteReporter proxy = s.getPort(portName, quoteReporter.class);

    Client cxfClient = (Client) proxy;

    ValidateInterceptor validInterceptor = new ValidateInterceptor();
    cxfClient.getInInterceptor().add(validInterceptor);

    ...
  }
}

프로그래밍 방식으로 사용자에게 인터셉터 연결 의 코드는 다음을 수행합니다.

소비자에 대한 JAX-WS Service 오브젝트를 만듭니다.

소비자의 대상 주소를 제공하는 Service 오브젝트에 포트를 추가합니다.

서비스 공급자에서 메서드를 호출하는 데 사용되는 프록시를 생성합니다.

프록시를 org.apache.cxf.endpoint.Client 유형으로 캐스팅합니다.

인터셉터의 인스턴스를 생성합니다.

인바운드 인터셉터 체인에 인터셉터를 연결합니다.

59.3.2.4. 서비스 공급자에 인터셉터 연결

프로그래밍 방식으로 서비스 공급자에 인터셉터 연결 서비스 공급자의 아웃바운드 인터셉터 체인에 인터셉터를 연결하는 코드를 보여줍니다.

프로그래밍 방식으로 서비스 공급자에 인터셉터 연결

package com.fusesource.demo;
import java.util.*;

import org.apache.cxf.endpoint.Server;
import org.apache.cxf.frontend.ServerFactoryBean;
import org.apache.cxf.frontend.EndpointImpl;

public class stockQuoteReporter implements quoteReporter
{
  ...
  public stockQuoteReporter()
  {
    ServerFactoryBean sfb = new ServerFactoryBean();
    Server server = sfb.create();
    EndpointImpl endpt = server.getEndpoint();

    AuthTokenInterceptor authInterceptor = new AuthTokenInterceptor();

    endpt.getOutInterceptor().add(authInterceptor);
  }
}

프로그래밍 방식으로 서비스 공급자에 인터셉터 연결 의 코드는 다음을 수행합니다.

기본 Apache CXF 개체에 대한 액세스를 제공할 ServerFactoryBean 개체를 만듭니다.

Apache CXF가 엔드포인트를 나타내는 데 사용하는 서버 개체를 가져옵니다.

서비스 공급자의 Apache CXF EndpointImpl 오브젝트를 가져옵니다.

인터셉터의 인스턴스를 생성합니다.

인터셉터를 끝점에 연결합니다.s 아웃바운드 인터셉터 체인.

59.3.2.5. 버스에 인터셉터 연결

버스에 인터셉터 연결 는 인터셉터를 버스의 인바운드 인터셉터 체인에 연결하는 코드를 보여줍니다.

버스에 인터셉터 연결

import org.apache.cxf.BusFactory;
org.apache.cxf.Bus;

...

Bus bus = BusFactory.getDefaultBus();

WatchInterceptor watchInterceptor = new WatchInterceptor();

bus..getInInterceptor().add(watchInterceptor);

...

버스에 인터셉터 연결 의 코드는 다음을 수행합니다.

런타임 인스턴스의 기본 버스를 가져옵니다.

인터셉터의 인스턴스를 생성합니다.

인바운드 인터셉터 체인에 인터셉터를 연결합니다.

WatchInterceptor 는 런타임 인스턴스에서 생성된 모든 엔드포인트의 인바운드 인터셉터 체인에 연결됩니다.

Red Hat logoGithubRedditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

Red Hat을 사용하는 고객은 신뢰할 수 있는 콘텐츠가 포함된 제품과 서비스를 통해 혁신하고 목표를 달성할 수 있습니다.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

© 2024 Red Hat, Inc.