이 절에서는 웹 컨테이너와 관련된 알려진 문제점과 해결 방법을 설명합니다.
Java EE SDK b33d에 포함된 JDK 1.6으로 JAX—WS 테스트를 실행할 때 문제가 발생할 수 있습니다. 테스트가 다음 메시지를 표시하며 즉시 중단되는 것입니다.
[wsimport] Exception in thread "main" java.lang.NoClassDefFoundError: \ com/sun/tools/ws/WsImport |
이 오류는 webservices-tools.jar에 com/sun/tools/ws/WsImport.class, com/sun/tools/ws/ant/WsImport.class 및 com/sun/tools/ws/ant/WsImport2.class가 포함되어 있지 않은 경우에도 발생합니다. 또한 같은 테스트 작업 공간이 1.5.0-10 JDK를 사용했을 땐 문제 없이 작동하기도 합니다.
JAX-WS 테스트를 실행하기 전에 webservices-api.jar을 $JAVA_HOME/jre/lib/endorsed로 복사합니다.
JAXR에서는 SAAJ를 사용하여 SOAP 메시지를 레지스트리에 보냅니다. IFR이 아닌 경우 SAAJ impl 클래스는 lib/webservices-rt.jar 아래에 있습니다. IFR 사례에서 SAAJ 클래스는 아직 lib/webservices-rt.jar 아래에 있습니다. 또한 saaj-impl.jar은 /usr/share/lib 디렉토리에 있습니다. 이 jar 파일은 Application Server와 webservices-rt.jar에 있는 우선적인 파일에서 선택됩니다. 이 jar 파일에는 SOAP 메시지를 웹 서비스 레지스트리에 보내는 데 필요한 보안 권한이 없습니다. /usr/share/lib 디렉토리의 jar에 권한을 부여하거나 /usr/share/lib jar에 종속되지 않으려면 패키지를 수정해야 합니다.
다음을 server.policy 파일에 추가합니다,
grant codeBase "file:/usr/share/lib/saaj-impl.jar" { permission java.security.AllPermission; }; |