SAAJ(SOAP with Attachments API for Java) 인터페이스
SAAJ(SOAP with Attachments API for Java™) 인터페이스는 Java 프로그래밍 모델에서 인터넷을 통해 XML 문서를 보내는 표준 방법을 제공하는 SOAP 메시징에 사용됩니다. SAAJ는 런타임 환경을 통해 순회할 때 적절한 컨텍스트에 대해 SOAP 메시지를 조작하기 위해 사용됩니다.
JAX-RPC(Java API for XML-Based RPC) 프로그래밍 모델은 SAAJ 1.2를 지원하여 XML을 조작합니다.
JAX-WS 프로그래밍 모델은 SAAJ 1.2 및 1.3을 지원합니다. SAAJ 1.3은 SOAP 1.2 메시지에 대한 지원을 포함합니다.
SAAJ 1.2 및 SAAJ 1.3 스펙의 차이점은 "SAAJ 버전의 차이점" 토픽에서 검토할 수 있습니다.
웹 서비스에서 메시지 사용 방법
웹 서비스는 XML 기술을 사용하여 메시지를 교환합니다. 이 메시지는 XML 스키마를 확인합니다. 웹 서비스 애플리케이션 개발 시 DOM(Document Object Model)과 같이 제한된 XML API와 작업합니다. 런타임 중 Java 오브젝트를 조작하고 직렬화 및 직렬화 해제를 완료하는 것이 가장 효율적입니다.
웹 서비스는 SOAP 메시지를 사용하여 클라이언트와 서버 간 원격 프로시저 호출(RPC)을 나타냅니다. 일반적으로 SOAP 메시지는 매개변수를 표시하고 값을 리턴하는 일련의 Java 값-유형 비즈니스 오브젝트로 역직렬화됩니다. 또한, Java 프로그래밍 모델은 애플리케이션과 핸들러를 지원하는 API를 제공하여 SOAP 메시지를 직접 조작합니다. 프로그래밍 모델에서 지원되는 XML 스키마 유형의 수가 제한되기 때문에, 스펙은 SAAJ 데이터 모델을 확장기능으로 제공하여 메시지를 조작합니다.
XML 스키마 유형을 조작하려면, XML 스키마 유형을 사용자 정의 데이터 바인더가 있는 Java 유형으로 맵핑해야 합니다.
SAAJ 인터페이스
SAAJ-관련 클래스는 javax.xml.soap 패키지에 있습니다. SAAJ는 인터페이스와 추상 클래스에 빌드되며 다수의 클래스가 팩토리 메소드 호출로 시작되어 SOAPConnectionFactory 및 SOAPFactory와 같은 팩토리를 작성합니다.

Permission:
/opt/IBM/WebSphere/AppServer/java/jre/lib/jaxm.properties : access denied
(java.io.FilePermission /opt/IBM/WebSphere/AppServer/java/jre/lib/jaxm.properties
read)
Code:
com.ibm.ws.wsfvt.test.binding.addr1.binder.AddressBinder
in {file:/opt/IBM/WebSphere/AppServer/profiles/AppSrv01/installedApps/
ahp6405Node01Cell/DataBinding.ear/address1.war/WEB-INF/lib
/addressbinder1.jar}
Stack Trace:
java.security.AccessControlException: access denied (java.io.FilePermission
/opt/IBM/WebSphere/AppServer/java/jre/lib/jaxm.properties read)
.
SOAPFactory는 예외를 무시하고 로드할 구현을 판별하는 다음 단계로 계속합니다. 따라서 이 보안 예외에 대한 로그 항목을 무시할 수 있습니다.
이 제품은 WS-Addressing(WS-A), WS-Atomic Transaction(WS-AT), WS-Notification과 같은 다른 웹 서비스 기술 지원에 SOAPFactory를 사용하기 때문에 Java 보안이 사용되는 경우 모든 웹 서비스 애플리케이션에서 이 SecurityException을 무시할 수 있습니다.
gotcha- SOAPMessage: 메시지, XML 및 비-XML 파트 포함
- SOAPHeader: SOAP 헤더 XML 요소 표시
- SOAPBody: SOAP 본문 XML 요소 표시
- SOAPElement: SOAP 메시지의 다른 요소 표시
- MessageContext: SOAP 메시지 및 관련 특성 포함
- AttachmentPart: 2진 첨부 파일 표시
- SOAPPart: 메시지의 XML 파트 표시
- SOAPEnvelope: SOAP 엔벨로프 XML 요소 표시
- SOAPFault: SOAP 결함 XML 요소 표시
SAAJ 모델의 1차 인터페이스는 javax.xml.soap.SOAPElement이며, SOAPElement라고도 합니다. 이 모델을 사용하여 애플리케이션은 이미 존재하는 DOM 코드를 사용하는 SAAJ 모델을 처리할 수 있습니다. 보다 쉽게 이미 존재하는 DOM 오브젝트를 SAAJ 오브젝트로 변환할 수 있습니다.
SAAJ 인터페이스를 사용하여 작성된 메시지는 SOAP 표준을 따릅니다. SOAP 메시지는 SAAJ 모델에서 javax.xml.soap.SOAPMessage 오브젝트로 표시됩니다. 메시지의 XML 컨텐츠는 javax.xml.soap.SOAPPart 오브젝트로 표시됩니다. 각 SOAP 파트에는 SOAP 엔벨로프가 있습니다. 이 엔벨로프는 SAAJ javax.xml.SOAPEnvelope 오브젝트로 표시됩니다. SOAP 스펙은 SOAP 엔벨로프에 있는 다양한 요소를 정의합니다. SAAJ는 SOAP 엔벨로프에서 다양한 요소의 오브젝트를 정의합니다.
SOAP 메시지는 첨부 파일을 호출하는 비-XML 데이터도 포함할 수 있습니다. 이 첨부 파일은 SOAPMessage 오브젝트에서 액세스할 수 있는 SAAJ AttachmentPart 오브젝트로 표시됩니다.
- 웹 서비스는 다른 웹 서비스에 대한 콘딧일 수 있습니다. 이 경우, SOAP 메시지는 전달만 됩니다.
- 웹 서비스는 SDO(Service Data Object)와 같이 다른 데이터 모델을 사용하여 메시지를 조작할 수 있습니다. 보다 쉽게 SAAJ DOM을 다른 데이터 모델로 변환할 수 있습니다.
- 디지털 서명 유효성 검증 핸들러와 같은 핸들러는 일반적으로 메시지를 조작하려고 합니다.
SOAPElement 인터페이스가 항상 레거시 시스템에 대한 최상의 대체가 되지 않기 때문에, XML 스키마 유형을 맵핑하려면 추가 단계로 이동해야 할 수 있습니다. 이 경우 SDO와 같은 일반 프로그래밍 모델을 사용하려고 할 수 있으며, 데이터 중심 애플리케이션에 대해 보다 적절합니다.
SDO나 데이터 오브젝트를 Java 오브젝트와 쌍으로 연결하는 사용자 정의 데이터 바인딩을 포함하도록 XML 스키마를 구성할 수 있습니다. 예를 들어, 런타임은 수신 SOAP 메시지를 SOAPElement 인터페이스로 렌더링하고 고객 데이터 바인더로 전달하여 추가로 처리합니다. 수신 메시지가 SDO를 포함하면, 런타임은 데이터 오브젝트 코드를 인식하고 해당 유형 맵핑을 조회하여 사용자 정의 바인더를 찾고, SDO 코드를 표시하는 SOAPElement 인터페이스를 빌드합니다. SOAPElement는 SDOCustomBinder로 전달됩니다.
사용자 정의 데이터 바인더에 대한 정보를 참조하여 SOAPElement, SDO 및 사용자 정의 바인더를 사용한 애플리케이션 개발의 프로세스에 대해 배웁니다.

널을 리턴하는 이전 동작은 이 스펙을 준수하지 않습니다.
trns지원되는 표준 및 스펙의 전체 목록은 웹 서비스 스펙과 API 문서를 참조하십시오.