2010-03-03 1 views
2

SOAP 서비스를 호출하는 응용 프로그램 클라이언트가 있습니다. glasssfish 배포판에서 wsimport를 사용하여 ws 클래스를 생성했으며 Glassfish v2에서는 모든 것이 잘 작동합니다. 내가 V3에서 (Webstart를)를 실행하면 응용 프로그램이 잘 실행,하지만 난 SOAP 호출을 시작할 때, 나는NoClassDefFoundError (Glassfish v3의 com/sun/istack/logging/Logger)

Exception in thread "Thread-146" java.lang.NoClassDefFoundError: com/sun/istack/logging/Logger 
    at java.lang.ClassLoader.defineClass1(Native Method) 
    at java.lang.ClassLoader.defineClass(ClassLoader.java:621) 
    at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:124) 
    at java.net.URLClassLoader.defineClass(URLClassLoader.java:260) 
    at java.net.URLClassLoader.access$000(URLClassLoader.java:56) 
    at java.net.URLClassLoader$1.run(URLClassLoader.java:195) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at java.net.URLClassLoader.findClass(URLClassLoader.java:188) 
    at com.sun.jnlp.JNLPClassLoader.findClass(JNLPClassLoader.java:257) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:307) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:252) 
    at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320) 
    at com.sun.xml.ws.policy.jaxws.WsitPolicyResolver.<clinit>(WsitPolicyResolver.java:62) 
    at com.sun.xml.ws.policy.jaxws.WsitPolicyResolverFactory.doCreate(WsitPolicyResolverFactory.java:48) 
    at com.sun.xml.ws.api.policy.PolicyResolverFactory.create(PolicyResolverFactory.java:58) 
    at com.sun.xml.ws.wsdl.parser.RuntimeWSDLParser.parse(RuntimeWSDLParser.java:131) 
    at com.sun.xml.ws.client.WSServiceDelegate.parseWSDL(WSServiceDelegate.java:267) 
    at com.sun.xml.ws.client.WSServiceDelegate.<init>(WSServiceDelegate.java:230) 
    at com.sun.xml.ws.client.WSServiceDelegate.<init>(WSServiceDelegate.java:178) 
    at com.sun.xml.ws.spi.ProviderImpl.createServiceDelegate(ProviderImpl.java:106) 
    at javax.xml.ws.Service.<init>(Service.java:56) 
    at (class generated from wsdl) 
    at (SOAP call) 

을 얻을 심지어 어디서나라는 이름의 클래스를 찾을 수 있으며, 거의있을 것 같다 그물에 그것에 대한 참조.

편집 그것은이 글래스 피쉬 제공 할 아닌가요

JAXB-osgi.jar에 있어요? 확실히 내 애플 리케이션과 함께 그것을 포함하는 경우 포즈 충돌의 위험을 소개합니까?

+0

안녕하세요.이 질문을 다시 작성하고 싶습니다. 불행히도 위키 페이지는 오라클과 자바 닷넷이 너무 크게 바뀌었기 때문에 이제는 더 이상 작동하지 않아서 세부 사항을 파악할 수 없었습니다. 상황에 따라서는 glassfish v3 서버에서 웹 서비스를 호출해야하는 Java Web Start Application이 있습니다. 100 % 재생산 가능해 보입니다. 문제는 javaws (클라이언트 jdk)는 2.1이지만 glassfish는 2.2입니다. 글래스 피쉬는 웹 시작 애플리케이션에로드 할 항아리를 결정합니다. 웹 시작 앱에서 사용하는 리소스는 다음과 같습니다. jaxb-api-os – geocode

+0

동일한 문제가 발생했습니다. 혹시 그것을 해결할 수 있었습니까? – Mizipzor

답변

3

문제에 대한 설명 및 Java SE 6 함께 제공 글래스 피쉬 V3 번들 지하철 2.0 Metro 2.0 contains JAX-WS 2.2, which clashes with the JAX-WS 2.1하지만 전혀 명확하지 않다 재현하기위한 단계 :

을 상세한 분석을 위해 정확히 이런 일 때, 이 내용은 Wiki page을 참조하십시오. 이러한 실패의 이유는 Metro 2.0에 JAX-WS 2.1이 Java SE 6에 내장 된 JAX-WS 2.1 1과 충돌하기 때문입니다. 설치 스크립트로 Metro 2.0을 설치하지 않은 경우에만 이러한 오류가 표시됩니다. metro- on-glassfish.xml/metro-on-tomcat.xml. 예를 들어 업데이트 센터를 통해 GlassFish V3 용 Metro 2.0을 설치하거나 NetBeans에 내장 된 GlassFish V3 버전을 사용하는 경우.

가장 간단한 해결책은 Metro 2.0 nightly build을 다운로드하고 설치 스크립트를 실행하는 것입니다. 이 스크립트는 JAX-WS 2.2 API가 포함 된 webservices-api.jar 파일을 <java-home>/lib/endorsed에 복사합니다. 또는 물론 수동으로 webservices-api.jar을 적절한 승인 된 디렉토리에 복사 할 수 있습니다.

그리고 com/sun/istack/logging/Loggera dependency of JAX-WS 2.2 때문에

, 당신은 언급 Wiki page에 기술 된 상황에서 가능성이 높다 :

지하철 2.0 JAX-WS 2.2을 번들. Java SE 6에는 JAX-WS 2.1 (SE 6 업그레이드 3 및 이전 버전에는 JAX-WS 2.0 포함)이 포함되어 있습니다. 이는 Java가 기본적으로 JAX-WS 2.1 API를 선택하고 구현 및 JAX-WS 2.2 기능을 사용하는 코드가 작동하지 않음을 의미합니다.

+0

관련성이있는 것처럼 들리지만 글래스 피쉬 v3가이 경우 부러진 것처럼 들립니다. glassfish v3의 wsimport를 사용하여 동일한 서버에 배포했습니다. 그런 다음 webstart (Java 6) 및 "붐"을 통해 응용 프로그램 클라이언트를 실행했습니다. 즉,이 응용 프로그램 클라이언트는 표준 j2se 설치로 실행할 수 없습니다. 웹 설치의 요점을 놓치게됩니다. 그러나 그것은 나를 해결책으로 이끌 수 있습니다. – Draemon

+0

@Draemon 문제는 GlassFish v3이 아니며 Java 6 및 JAX-WS 2.2가 문제입니다. 따라서 JWS를 사용하고 있기 때문에 클라이언트 측에 Java 6 번들로 제공되는'wsimport'를 사용하는 것이 좋습니다. –

관련 문제