WS-I Basic Profile 1.0에서는 유니버셜 변환 형식(UTF)-16 인코딩이 지원되어야 합니다.
WebSphere® Application
Server는 WS-I Basic Profile 1.1을 준수합니다. UTF-16은 범용 문자 세트(UCS) 문자를 저장하기 위해
16비트 값을 사용하는 유니코드 인코딩 스키마의 일종입니다. UTF-8은 인터넷 상에서 사용되는 가장 공통된 인코딩이고
UTF-16 인코딩은 일반적으로 Java™ 및
Windows
제품 애플리케이션에 대해 사용됩니다. SOAP 메시지에서 인코딩을 UTF-8에서 UTF-16으로 변경할 수 있습니다.
시작하기 전에
UTF-16을 포함하여 WS-I(Web
Services-Interoperability
Basic Profile)의 요구사항에 대해 자세히 알아보려면 WS-I(Web
Services-Interoperability
Basic Profile)의 정보를 참조하십시오.
이 태스크 정보
WS-I Basic
Profile에는 UTF-16 인코딩을 위한 지원이 필수입니다. 애플리케이션 서버는 SOAP 메시지의 UTF-8 및 UTF-16 인코딩만을 지원합니다.
두 가지 방법 중 하나로 문자 인코딩을 변경할 수 있습니다.
프로시저
- 설정할 사용자에 대해 스텁의 특성을 사용하십시오.
이 선택사항은 클라이언트에만 적용됩니다.
클라이언트의 경우 인코딩이 SOAP 요청에 지정됩니다.
SOAP 엔진은 요청을 직렬화하고 이를 웹 서비스 엔진으로 보냅니다.
웹 서비스 엔진은 요청을 수신하고 메시지를 Java
오브젝트로 직렬화 해제하고, 이는 응답으로 사용자에게 돌아갑니다.
서버에서 웹 서비스 엔진이 직렬화된 요청을 수신하면
입력 스트림의 양식으로 된 원본 메시지가 BOM(Byte Order Mark)을 이해하는 구문 분석기에 전달됩니다.
BOM은 UTF-16 인코딩에 필수이고 이는 UTF-8에서 사용할 수 있습니다. 메시지는
Java 오브젝트로 직렬화 해제되고
서비스 호출이 작성됩니다.
양방향 호출의 경우 엔진은 특정 인코딩을 사용하여 직렬화하고 이를 다시 호출자로 전송해야 합니다.
다음 예는 스텁에서 문자 세트를 변경하기 위해 특성을 사용하는 방법을 보여줍니다. javax.xml.rpc.Stub stub=service.getPort("MyPortType");
((javax.xml.rpc.Stub)stub).setProperty(com.ibm.wsspi.webservices.Constants.MESSAGE_CHARACTER_SET_ENCODING,"UTF-16");
stub.invokeMethod();
이 코드 예에서
com.ibm.wsspi.webservices.Constants.MESSAGE_CHARACTER_SET_ENCODING = "com.ibm.wsspi.webservices.xmlcharset";
- 핸들러를 사용하여 SAAJ(SOAP
with Attachments API for Java)를 통해 문자 세트를 변경하십시오.
핸들러를 사용 중인 경우 SOAP 메시지는 입력 스트림과 같은, 다른 가능한 양식으로부터 SAAJ 형식으로 변형됩니다.
클라이언트 측의 handleRequest 메소드 및 서버측의 handleResponse 메소드와 같은 경우,
웹 서비스 엔진은 SAAJ 형식에서 적합한 문자 인코딩이 있는 스트림으로 다시 변경됩니다.
이 변환 또는 변경을 라운드트립 변환이라고 합니다.
다음은 핸들러를 사용하여 SAAJ를 통해 문자 인코딩을 지정하는 방법의 예입니다.handleResponse(MessageContext mc) {
SOAPMessageContext smc = (SOAPMessageContext) context;
javax.xml.soap.SOAPMessage msg = smc.getMessage();
msg.setProperty (javax.xml.soap.SOAPMessage.CHARACTER_SET_ENCODING, "UTF-16");
}
}
결과
웹 서비스 SOAP 메시지에서 UTF-8에서부터 UTF-16까지 문자 인코딩을 수정했습니다.