이 파일에는 웹 서비스에 영구적, 임시적으로 적용되는 포괄적인 제한사항 목록이 포함되어 있습니다.
웹 서비스 작업 중에 고려해야 할 제한사항은 다음과 같은 절로 분류됩니다.
보안된
WebSphere Application
Server 사용 시 발생하는 문제점
SSLSocketFactory error message: java.net.SocketException:
java.lang.ClassNotFoundException: Cannot find the specified class
com.ibm.websphere.ssl.protocol.SSLSocketFactory라는 오류 메시지가
표시될 수 있습니다.
웹 서비스 탐색기를 사용하고 샘플 JSP를 생성하며,
HTTPS WSDL 파일에서 웹 서비스 또는 클라이언트를 작성하거나 Axis 웹 서비스를 배치하기 전에
워크벤치에서 SSL(Secure Sockets Layer)을 사용하여 서버와 통신하도록 구성해야 합니다. 이 태스크에 대한 정보는
SSL 연결을 사용하여 보안 서버에서 작업하는 데 문제점을 참조하십시오.
Error opening socket: javax.net.ssl.SSLHandshakeException:
unknown certifcate라는 오류 메시지가 표시될 수 있습니다.
웹 서비스 마법사를 사용하여 HTTPS WSDL을 검색하려는 경우 또는
보안된 WebSphere® Application Server에 대해 웹 서비스 탐색기를 사용하려는 경우,
보안된 WebSphere Application Server를 위해
IBM® JRE 구성의 단계를 완료해야 합니다.
웹 서비스 마법사 사용 시 발생하는 문제점
- 웹 서비스 마법사가 진행되는 동안 일부 단계에서
취소를 클릭할 경우, 마법사에서 생성된 파일과 웹 서비스 항목이 작업공간과 배치 디스크립터에
각각 남겨집니다. 이러한 파일은 마법사를 종료한 후에
수동으로 삭제해야 합니다.
- 웹 서비스 마법사가 EAR을 공개하지 못합니다.
문제점: 스텁 런타임을 사용하여
원격 서버를 작성하면 EAR이 공개되지 않습니다.
원인: 웹 서비스 마법사가 서버의 시작 가능 여부를 알 수 있는
방법이 없습니다.
솔루션: 서버 보기가 제공되는 퍼스펙티브에서
원격 서버를 마우스 오른쪽 단추로 클릭하고 프로젝트
추가 및 제거를 선택하십시오. 프로젝트를 선택하여 서버에
추가하십시오.
- 웹 서비스 마법사가 선택된 프로젝트 유형을 이용할 수 없습니다.
문제점: 서버에 서비스 설치 옵션이 선택되어 있거나
EJB 프로젝트에 EJB가 포함되지 않은 경우 J2EE 애플리케이션이 포함된 EAR에서 웹 서비스 마법사를 실행하려고 하면,
마법사에서 웹 서비스를 생성하도록 허용되지 않습니다.
원인: 웹 서비스 마법사는 마법사 3페이지에서 선택된
프로젝트 유형을 이용할 수 있는지 확인하기 위해 검사를 수행합니다. 프로젝트 유형을 이용할 수 없는 경우 마법사가
진행되지 않습니다.
솔루션: 마법사를 종료한 후
서버에 서비스 설치를 선택 취소하고
다시 실행하거나, EJB를 EJB 프로젝트에 추가하면 마법사를
진행할 수 있습니다.
- 작업공간에서
WSIL 파일을 선택한 후 웹 서비스 마법사를 실행하면, 마법사에서 잘못된 항목을
선택했다는 메시지가 표시됩니다.
이는 WSIL 파일의 WSDL 파일을 선택해야 하기 때문입니다.
이 문제를 해결하려면, 웹 서비스 마법사에서 찾아보기를 클릭하여
특정 WSDL 파일을 선택하십시오.
- 대상 웹 프로젝트 이름에
latin-1 문자가 아닌 다른 문자가 포함될 경우, 웹 서비스 마법사에서 웹 서비스를
작성하는 중에 오류가 발생할 수 있습니다. 웹 서비스 코드 생성기는 프로젝트 이름을 기반으로 HTTP URL을 계산하는데,
latin-1 문자가 아닌 다른 문자는 HTTP URL에서 허용되지 않기 때문에 이 문제가 발생합니다. 이를 해결하려면 latin-1 문자만 포함된 프로젝트 이름을
사용하십시오.
- 작업공간에 EAR 프로젝트가 여러 개 있을 때
EJB 프로젝트에서 엔터프라이즈 Java™ Bean을 선택하고
웹 서비스 마법사를 실행할 경우, 선택한 엔터프라이즈 Bean이 마법사를 실행한 후에 선택되지 않을 수 있습니다. 서비스 구현
선택 대화 상자에서 선택된 EAR 프로젝트는 작업공간에서 알파벳 순서로
첫 번째 EAR이지만, Bean이 포함된 EJB 프로젝트와 연관된 EAR은
아닙니다. 이를 해결하려면
서비스 구현 선택 대화 상자에서 원하는 EAR 프로젝트를
직접 선택하십시오.
- 웹 서비스 마법사 1페이지에서 웹 서비스 트래픽을 모니터하도록
선택하면, 경우에 따라 TCP/IP 모니터 보기가 자동으로 표시되지 않습니다. 를 선택하면 보기를 수동으로 열 수 있습니다.
이 보기에 웹 서비스의 요청과 응답이 표시됩니다.
- JAX-RPC 상향식(BU)
웹 서비스 생성 마법사는 같은 대상 JEE1.3/Web2.3 웹 프로젝트에서
Java Bean에 사용될 때 NullPointerException을 생성합니다.
문제점:
대상 JEE1.3/Web2.3 웹 프로젝트에 Java Bean상의
RAD/WAS에서 JAX-RPC 상향식(BU) 웹 서비스 생성 마법사를
사용하면 NullPointerException이 발생합니다.
원인:
서비스 엔드포인트 인터페이스 선택사항에서 WSDL 1.1 MIME 첨부 파일만 사용 옵션이
선택되지 않았습니다.
J2EE 1.3 웹 서비스 및 클라이언트의 경우, RAD는 WAS v5.1.1 이미터를
com.ibm.websphere.webservice.rt.v5.1.1 플러그인으로 유지합니다.
서비스 엔드포인트 인터페이스 선택사항에서
WSDL 1.1 MIME 첨부 파일만 사용 옵션을
선택하지 않은 경우, 해당 MIME 스타일은
swaRef으로 설정됩니다. 이 설정이 정확하더라도 emailSend()이 애플리케이션이나
PDF 파일을 전송하므로 J2EE 1.3 웹 서비스 및 클라이언트용 RAD가 유지한 WAS v5.1.1 이미터는
swaRef를 지원하지 않습니다. swaRef는 더 이상
WAS v5.x에서 지원되지 않습니다.
솔루션: NullPointerException을 방지하려면
서비스 엔드포인트 인터페이스 선택사항에서 WSDL 1.1 MIME 첨부 파일만 사용 옵션을 반드시 선택하십시오.
WebSphere JAX-WS 런타임
환경 및 JAXB 사용 시 발생하는 문제점
WebSphere JAX-RPC 런타임
환경 사용 시 발생하는 문제점
- 작성한 WSDL 문서를 웹 서비스 마법사 또는 WSDL2Java 도구로
Java로 재생성할 경우 해당 WSDL 문서에서 컴파일되지 않는 출력이
작성될 수 있습니다. 이는 Java에서
WSDL로의 JAX-RPC 맵핑이 반전되지 않기 때문입니다.
이 문제가 발생할 경우 WSDL 파일을 검사하여 원하는 결과가 나오도록
파일을 수정하거나 네임스페이스에서 패키지로의 맵핑을
사용자 정의하십시오.
- IBM WebSphere JAX-RPC 런타임 환경은
기본 Java 패키지를 사용하는
Java Bean을 처리하지 못합니다. 이로 인해 서버 시동 중에 예외가 발생하며
런타임에 웹 서비스가 작동하지 않습니다.
- WebSphere JAX-RPC 런타임 환경을 사용하여
웹 서비스 클라이언트를 작성할 경우, 유니버셜 테스트 클라이언트에서 클라이언트의 배치 디스크립터를
사용할 수 없습니다. 따라서 유니버셜 테스트 클라이언트에서는 클라이언트 프록시의
JNDI 검색이 작동하지 않습니다. UTC를 사용하려면 Locator 클래스를
생성해서 사용하거나, 내부적으로 Locator를 생성하여 사용하도록 useJNDI를
false로 설정하여 생성된 프록시 클래스를 사용해야 합니다. 클라이언트측
배치 디스크립터가 처리되지 않을 경우 WS-Security 및 핸들러와 같은
특정한 메타데이터를 사용할 수 없습니다. 이러한 클라이언트 구성의 예로는 보안을 들 수 있습니다. 유니버셜
테스트 클라이언트 대신에 샘플 JSP를 사용하여 프록시를 테스트하십시오.
- WSDL 가져오기: WSDL
import 문은 절대 URL 또는 동일한 디렉토리의 상대 URL만 가질 수
있습니다. 예를 들어 <import namespace="http://someNamespace/"
location="../someFile.wsdl"/>과 같은 양식의 상대적 가져오기는
지원되지 않습니다.
Apache Axis 런타임 환경 사용 시 발생하는 문제점
웹 서비스 클라이언트 작성 시 제한사항
웹 서비스 클라이언트를 EJB 프로젝트에 배치하면, 이 웹 서비스 클라이언트의 범위로 지정할
EJB를 선택할 수 있는 콤보 상자가 프록시 구성 페이지에 표시됩니다. 이는 JSR-109에 의해
정의된 요구사항으로, component-scoped-refs 요소의 component-name이
모듈에 포함된 EJB의 ejb-name과 일치할 것을 요구합니다.
프로젝트에
하나 이상의 EJB가 있을 경우 오류가 발생하지 않습니다. 그러나
프로젝트에 EJB가 없을 경우에는 프록시 구성 페이지의 콤보 상자가
편집 가능 상태로 표시되고 이름이 "EJB"로 끝나는 WSDL의 서비스 이름과
일치하는 기본값을 갖습니다. 또한 클라이언트 마법사에서 웹 서비스 클라이언트의 범위가
기존의 EJB로 지정되지 않아 배치가 완료되지 않았다는 경고 대화 상자가 표시됩니다.
사용자는 webservicesclient.xml에서 사용되는
component-name과 동일한 이름의 EJB를 작성하여 이 문제를 해결할 수 있습니다.
그러나
취소를 선택하여 마법사를 종료하고 클라이언트 작성 작업을 중단할 경우
불완전한 component-scoped-refs가 webservicesclient.xml에서 제거되지 않습니다.
이 경우, 재배치를 수행하기 전에 불완전한 component-scoped-refs를
수동으로 제거해야 합니다.
웹 서비스 샘플 JSP 제한사항
- 웹 서비스 샘플 JSP에서는 배열 또는 콜렉션을
매개변수로 취하는 메소드가 지원되지 않으므로, 이러한 메소드는 샘플 JSP의 메소드 패널에서
생략됩니다.
사설 UDDI 레지스트리 문제점
- 사설 UDDI 레지스트리의
공개자 어설션이 레지스트리 내의 모든 비즈니스에 공개될 수
있습니다. 비즈니스는 자신과 연관된 공개자 어설션을 볼 수 있습니다. 예를 들어 비즈니스의 키는
키 또는 공개자 어설션의 키에서 오지 않습니다.
-
Cloudscape 데이터베이스 백엔드에 단위 테스트 UDDI 레지스트리를 구성하면 UDDI 이름으로 검색 메소드가
대소문자를 구분(기본값)하여 검색을 수행합니다. 이는 UDDI 스펙을 준수하지 않는 제한사항에 해당됩니다.
웹 서비스 명령행 사용 시 발생하는 문제점
- 공백이
포함된 디렉토리: 디렉토리 이름에 공백이 포함된 디렉토리에서는
WSDL2WebService를 실행하지 마십시오. 이를 어길 경우
생성되는 compile.bat(Linux의 경우 compile.sh) 파일이
컴파일되지 않습니다.
- EJB2WebService를 실행하여 EJB 웹 서비스를 작성한 후
splitWsdl 옵션을 사용할 경우, 생성되는 EAR이 단위 테스트 환경 또는 원격 서버에서 실행되지
않습니다. 해결 방법은 EJB 프로젝트의 META-INF 아래에 있는
WSDL 디렉토리 전체를 라우터 웹 프로젝트의 WEB-INF로 복사하는 것입니다.
- WSDL2WebService를 실행하여 로컬 가져오기가 포함된
WSDL을 사용하는 EJB 웹 서비스를 작성할 경우, 생성되는 EAR이 단위 테스트 환경 또는 원격 서버에서 실행되지
않습니다. 해결 방법은 EJB 프로젝트의 META-INF 아래에 있는
WSDL 디렉토리 전체를 라우터 웹 프로젝트의 WEB-INF로 복사하는 것입니다.
- J2EE 1.4를 사용하는
명령행 도구에서 생성한 EJB 클라이언트가 포함된 EAR을 작업공간으로 가져오면
컴파일 오류가 표시됩니다. 오류를 해결하려면 EJB 프로젝트를 마우스 오른쪽 단추로
클릭한 후 특성을 선택하십시오.
Java 빌드 경로로 이동하여 라이브러리 탭을 선택하십시오.
EJBClientProject/imported_classes(class folder) 항목을 제거하십시오.
EJBServiceClient/imported_classes/Meta-inf/classess 클래스 폴더를 추가하십시오.
확인을 클릭하십시오.
- J2EE 1.4를 사용하는
명령행 도구에서 생성한 EJB 클라이언트가 포함된 EAR을 작업공간으로 가져오면
해당 클라이언트를 실행할 때 ClassNotFoundException 오류가
표시됩니다. 오류를 해결하려면 애플리케이션 클라이언트 프로젝트를
마우스 오른쪽 단추로 클릭한 후 특성을 선택하십시오.
Java 빌드 경로로 이동하여 라이브러리 탭을
선택하십시오. ApplicationClientProject/imported_classes(class
folder) 항목을 제거하십시오.
ApplicationClientProject/imported_classes/Meta-Inf/classess 클래스 폴더를 추가하십시오.
확인을 클릭하십시오.
- 대상이 Axis 런타임인 웹 서비스 Ant 태스크는
웹 서비스 생성 작업을 처리하지만, 배치 작업은 처리하지 않습니다. 따라서 Apache Axis 기본 "AdminClient" 유틸리티를 사용하여
서비스를 수동으로 배치하지 않을 경우, 실행 중인 서버에서 Ant 태스크를 사용하여 작성한
Axis 웹 서비스에 도달할 수 없습니다. Axis AdminClient 도구를
사용하여 생성된 deploy.wsdd(웹 프로젝트의
WebContent/WEB-INF 디렉토리의 서브디렉토리에 위치)를
Axis로 수동으로 배치하십시오. 자세한 내용은 Axis 1.3 사용자 안내서의
"AdminClient 사용" 절을 참조하십시오.