WSIF(Web Services Invocation Framework)는 서비스의 형식
또는 서비스가 호출되는 전송 프로토콜에 상관없이
웹 서비스를 호출하는 Java™
API를 제공합니다.
이 태스크 정보
WSIF API는 WSDL(Web Services Description Language) 정의
웹 서비스 호출을 지원합니다. WSIF는 WSIF 클라이언트 및 웹 서비스 매개체에서
사용할 목적으로 제공됩니다.
WSIF API는 WSDL의 추상 서비스 설명에 의해 구동되며,
사용 중인 바인딩과 완전히 독립적입니다. 이 독립은 WSDL 용어를 사용하여 메시지
파트, 조작, 기타 항목을 나타내므로 API가 좀더 원활하게 작업하도록 합니다.
WSIF
API는 다음 경우에 WSDL 사용 모델로 디자인되었습니다.
- 필요한 포트 유형을 지원하는 포트를 선택합니다.
- 필수 파트로 구성된 필수 추상 입력 메시지를 제공하여 조작을 호출하므로
메시지가 특정 바인딩 프로토콜에 맵핑되는 방법은 문제되지 않습니다.
다른 웹 서비스 API(예: SOAP API)는 WSDL에서 디자인되지는
않았지만 대상 URI 및 인코딩 유형과 같은 연관된 구문과 함께
특정 바인딩 프로토콜에 적용됩니다.
기본 WSIF API 인터페이스는
다음 프로시저에서 설명합니다.
참고: Apache는 더 이상 WSIF를 지원하지 않습니다.
- WSIFMessage 인터페이스를 통해 포트에 전송할 메시지를 작성하십시오.
WSDL에서 메시지는 조작에 대한 입력이나 출력의 추상 유형을 설명합니다.
해당 WSIF 클래스는 메모리에서 조작의 입력 또는 출력을 표시하는
WSIFMessage입니다. WSIFMessage 인터페이스는 데이터의 표시와 WSDL이 정의한 추상 유형을 분리합니다.
WSIFMessage 클래스는 이름 지정된 파트 세트의 컨테이너입니다.
WSIFMessage 클래스는 JVM(Java Virtual Machine) 사이에서
전송될 수 있습니다.
- 런타임에 WSIF 메시지를 표시할 형식(Java 클래스 또는 XML)을 선택하십시오.
런타임 환경에서 WSDL 메시지를 표시하는 다음 두 가지 방법이 있습니다.
- JAX-RPC(Java API for XML-based Remote Procedure Call)에서 제공하는 것과 같이
Java 맵핑에 대한 WSDL에
기반하여 생성된 Java 클래스.
- 데이터의 XML 표시(예: SOAP 인코딩 사용).
각 옵션은
서로 다른 시나리오에서 이점을 제공합니다. Java 클래스는
표준 Java 클라이언트에서 WSIF를 사용할 때의 일반적인 접근 방식입니다.
그러나
매개체로 WSIF를 사용하는 다른 시나리오에서는 WSDL 메시지를 SOAP 인코드
형식으로 유지하는 것이 좀더 효과적입니다. 메시지를 정의하는 데 사용되는 스타일은 메시지 내에서 일관되어야
한 메시지에 있는 모든 파트가 일관됩니다. 문자열(
getRepresentationStyle())은
항상
null을 리턴합니다. 이는 이 WSIFMessage 클래스의 파트가
Java 오브젝트로 표시된다는 것을 의미합니다.
- WSIF 메시지의 파트를 가져와 설정하십시오.
WSIFMessage 클래스에 setObjectPart 또는 setTypePart
메소드를 사용하여 파트를 추가합니다. 각 파트는 이름 지정되어
있습니다. 메시지 내의 파트 이름은 고유합니다. 둘 이상 파트를 설정했으면
마지막 설정이 사용됩니다.
WSIFMessage 클래스에서 getObjectPart 또는
getTypePart 메소드를 사용하여 이름으로 파트를
가져옵니다. 이름 지정된 파트가 존재하지 않으면,
메소드는 WSIFException 오류를 리턴합니다.
getParts() 및 getPartNames() 메소드를 사용하여 메시지에서 파트를 가져오는 데 반복기를
사용할 수 있습니다.
파트가 설정되는 순서는 현재 중요치 않지만 파트가 WSDL에서 지정된
매개변수 순서대로 설정되면 메시지 구현이 좀 더 효과적일 수 있습니다.
WSIFMessage 클래스는 복제 및 직렬화가 가능합니다. 설정된
파트를 복제할 수 없는 경우, 구현은 직렬화를 사용하여 복제를 시도해야 합니다.
파트를
직렬화할 수도 없는 경우, 복제가 시도되면 CloneNotSupportedException 예외가 발생합니다.
- WSIF 메시지 이름을 설정하십시오.
파트를 포함하는 것 외에도 WSIFMessage 클래스에는 메시지 이름이 있습니다.
이는 WSDL 및 WSIF가 지원하는 조작 오버로드에 필요합니다.
WSIFMessage 인터페이스(/wsi/org/apache/wsif/WSIFMessage.html)에 대한
자세한 정보는 WSIF와 함께 제공되는 생성된 API 문서를 참조하십시오.
- WSIFService 인터페이스 및 WSIFServiceFactory 클래스를 통해 포트 팩토리 또는
서비스를 찾으십시오.
WSIFService 인터페이스는 하나 이상의 포트에서 서비스를 사용할 수 있는
WSDL 접근 방식을 모델링 및 지원하는 포트 팩토리입니다. 팩토리는
포트 구현을 숨깁니다. WSIF는 특정 프로토콜 및 전송에 기반하여 런타임에 WSDL을 통해 구성된
동적 포트를 지원합니다. 예를 들어 동적 SOAP 포트는 해당 서비스의 WSDL 설명에 기반하여
모든 SOAP 서비스를 호출할 수 있으므로 런타임에 사용 가능한 포트 세트를 숨기고
수정할 수 있습니다.
웹 주소의 WSDL 문서 또는 코드 생성 코드 기본에서 서비스를 찾으려면
WSIFServiceFactory 클래스를 사용하십시오.
- WSIFPort 인터페이스 및 WSIFOperation 인터페이스를 통해 조작을
호출하십시오.
WSIFPort 인터페이스는 조작 호출의 세부사항을 처리합니다.
포트는 서비스의 구현에 대한 액세스를 제공합니다.
WSDL 문서는 다양한 많은 WSDL 바인딩을 제공할 수 있으며
이 바인딩은 다중 포트를 구동할 수 있습니다. 클라이언트가 포트를
선택하거나 서비스 스텁이 포트를 선택하거나 WSIF가 기본 포트를 선택할 수 있습니다.
포트는 조작 오브젝트를 검색할 수 있는 인터페이스를 제공합니다.
WSIFOperation 인터페이스는 지정된 조작을 실행할 수 있는 기능을 제공합니다.
포트가 직렬화되어 나중에 직렬화 해제되는 경우, WSIF는 인스턴스를 식별할 수 있도록
클라이언트가 서버에게 정확한 정보를 제공할 수 있게 보장합니다. 서버
인스턴스가 더 이상 사용 가능하지 않은 경우, 서버가 결함을 작성할지
또는 새 인스턴스를 제공할지 여부를 결정해야 합니다. 해당 작동은
서비스 유형에 따라 달라질 수 있습니다. 예를 들어,
엔터프라이즈 Bean의 경우 WSIFPort 인터페이스는 EJB 홈을 저장하고
이를 사용하여 각 호출 전에 Bean을 선택합니다. 클라이언트는 인스턴스 지원이
필요할 때 포트 인스턴스를 직렬화하거나 유지보수할 책임이 있습니다.
클라이언트는 각 호출에 대한 메시지 및 새 조작을 작성해야 합니다.