29.2. 프록시를 인스턴스화합니다.


29.2.1. 개요

Apache CXF가 Spring Framework를 사용하면 Cryostat-WS API를 사용하여 서비스 프록시를 생성하는 번거로움을 방지할 수 있습니다. 구성 파일에서 클라이언트 끝점을 정의한 다음 구현 코드에 프록시를 직접 삽입할 수 있습니다. 런타임이 구현 오브젝트를 인스턴스화할 때 구성을 기반으로 외부 서비스에 대한 프록시도 인스턴스화합니다. 구현은 인스턴스화된 프록시를 참조하여 전달됩니다.

프록시는 구성 파일의 정보를 사용하여 인스턴스화되므로 WSDL 위치는 하드 코딩할 필요가 없습니다. 배포 시 변경할 수 있습니다. 런타임에서 애플리케이션의 classpath에서 WSDL을 검색하도록 지정할 수도 있습니다.

29.2.2. 프로세스

외부 서비스의 프록시를 서비스 공급자의 구현에 삽입하려면 다음을 수행합니다.

  1. 애플리케이션의 모든 부분에 액세스할 수 있는 잘 알려진 위치에 필요한 WSDL 문서를 배포합니다.

    참고

    애플리케이션을 WAR 파일로 배포하는 경우 WAR의 internet -INF/wsdl 폴더에 모든 WSDL 문서 및 XML 스키마 문서를 배치하는 것이 좋습니다.

    참고

    애플리케이션을 JAR 파일로 배포하는 경우 JAR의 META-INF/wsdl 폴더에 모든 WSDL 문서 및 XML 스키마 문서를 배치하는 것이 좋습니다.

  2. 삽입 중인 프록시에 대해 Cryostat-WS 클라이언트 끝점을 구성합니다.
  3. @Resource 주석을 사용하여 제공하는 서비스에 프록시를 삽입합니다. ???

29.2.3. 프록시 구성

애플리케이션의 구성 파일에서 jaxws:client 요소를 사용하여 Cryostat-WS 클라이언트 끝점을 구성합니다. 이는 런타임에서 지정된 속성을 사용하여 org.apache.cxf.jaxws.JaxWsClientProxy 오브젝트를 인스턴스화하도록 지시합니다. 이 오브젝트는 서비스 공급자에 삽입될 프록시입니다.

최소한 다음 속성에 대한 값을 제공해야 합니다.

  • ID- Specifies할 클라이언트를 식별하는 데 사용되는 ID입니다.
  • serviceClass- 프록시가 요청을 수행하는 서비스의 SEI를 지정합니다.

예 29.1. “서비스 구현에 삽입할 프록시 구성” Cryostat-WS 클라이언트 끝점에 대한 구성이 표시됩니다.

예 29.1. 서비스 구현에 삽입할 프록시 구성

<beans ...
  xmlns:jaxws="http://cxf.apache.org/jaxws"
  ...
  schemaLocation="...
    http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd
    ...">
  <jaxws:client id="bookClient"
                serviceClass="org.apache.cxf.demo.BookService"
                wsdlLocation="classpath:books.wsdl"/>
  ...
</beans>
참고

예 29.1. “서비스 구현에 삽입할 프록시 구성” 에서 wsdlLocation 속성은 classpath에서 WSDL을 로드하도록 런타임에 지시합니다. book.wsdl 이 classpath에 있으면 런타임에서 찾을 수 있습니다.

Cryostat-WS 클라이언트 구성에 대한 자세한 내용은 17.2절. “소비자 끝점 구성” 을 참조하십시오.

29.2.4. 공급자 구현 코딩

예 29.2. “서비스 구현에 프록시 삽입” 에 표시된 대로 @Resource 를 사용하여 구성된 프록시를 서비스 구현에 리소스로 삽입합니다.

예 29.2. 서비스 구현에 프록시 삽입

package demo.hw.server;

import org.apache.hello_world_soap_http.Greeter;

@javax.jws.WebService(portName = "SoapPort", serviceName = "SOAPService",
                      targetNamespace = "http://apache.org/hello_world_soap_http",
                      endpointInterface = "org.apache.hello_world_soap_http.Greeter")
public class StoreImpl implements Store {

@Resource(name="bookClient") private BookService proxy;

}

주석의 name 속성은 Cryostat-WS 클라이언트의 id 속성 값에 해당합니다. 구성된 프록시는 주석 직후 선언된 BookService 오브젝트에 삽입됩니다. 이 오브젝트를 사용하여 프록시의 외부 서비스에서 호출할 수 있습니다.

Red Hat logoGithubRedditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

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

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

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

Red Hat 소개

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

© 2024 Red Hat, Inc.