2012-07-31 4 views
6

jdk1.6.0_31에서 실행되는 독립 실행 형 일괄 처리 프로그램이 있습니다. 이 독립 실행 형 프로그램에는 JAX-WS 클라이언트와 EJB 클라이언트가 있습니다. EJB 클라이언트에 wlfullclient.jar을 추가하기 전까지는 JAX-WS 클라이언트가 아무런 항아리도 추가하지 않고 잘 작동했습니다. 이제 클래스 패스에 wlfullclient.jar을 사용하면 예외가 발생합니다. 이 문제를 해결하는 방법을 알려주십시오. 당신의 도움을 주셔서 감사합니다.wlfullclient.jar가 추가 될 때까지 JAX-WS Dispatch 클라이언트가 정상적으로 작동했습니다.

Exception in thread "main" java.lang.NoClassDefFoundError: com/sun/xml/ws /spi/ProviderImpl 
at java.lang.ClassLoader.defineClass1(Native Method) 
at java.lang.ClassLoader.defineClassCond(ClassLoader.java:631) 
at java.lang.ClassLoader.defineClass(ClassLoader.java:615) 
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:141) 
at java.net.URLClassLoader.defineClass(URLClassLoader.java:283) 
at java.net.URLClassLoader.access$000(URLClassLoader.java:58) 
at java.net.URLClassLoader$1.run(URLClassLoader.java:197) 
at java.security.AccessController.doPrivileged(Native Method) 
at java.net.URLClassLoader.findClass(URLClassLoader.java:190) 
at java.lang.ClassLoader.loadClass(ClassLoader.java:306) 
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301) 
at java.lang.ClassLoader.loadClass(ClassLoader.java:247) 
at javax.xml.ws.spi.FactoryFinder.safeLoadClass(FactoryFinder.java:150) 
at javax.xml.ws.spi.FactoryFinder.newInstance(FactoryFinder.java:30) 
at javax.xml.ws.spi.FactoryFinder.find(FactoryFinder.java:90) 
at javax.xml.ws.spi.Provider.provider(Provider.java:83) 
at javax.xml.ws.Service.<init>(Service.java:56) 
at javax.xml.ws.Service.create(Service.java:691) 

답변

1

행운이 있었나요? JetSpeed ​​2.2.2 (Tomcat을 기반으로 한 포털 서버)에서 실행되는 똑같은 문제가 발생했습니다. wlfullclient.jar을 서버의 lib 폴더에 포함하기 전에 웹 서비스가 정상적으로 작동합니다. 포함 후에는 위에 포함 된 스택 추적과 함께 인스턴스화시 폭발적입니다. 다음과 같이

내 생각 (이 단계에서 이론)입니다 :

wlfullclient.jar 메트로 웹 서비스 스택에 이미 클래스와 동일한 이름과 패키지가있는 클래스를 가지고있다. 이 클래스는 Metro 클래스보다 먼저로드 된 다음 클래스로드에서 메트로 구현 대신 웹 로직 구현을로드하는 경로로 안내합니다. 웹 로직 구현은 존재하지 않습니다 (우리가 표준 자바를 사용하고자 할 때 포함시키지 않았던 것처럼). 이것이 NoClassDefFound를 설명합니다.

주목할만한 점은 Metro와 wlfullclient.jar에서 동일한 이름과 패키지로이 가정 된 클래스를 찾지 못했다는 점입니다. 이런 의미에서 클래스는 현재 힉스 보손과 비슷합니다. 그렇다면 그것이 존재한다고 가정하면, 그것에 대해 무엇을해야할까요?

해결책을 찾았는지 알고 싶네요.

또한 내가 추가해야합니다 : 그것은 동일한 서버에서 실행중인 다른 포틀릿에 의해 사용되는 내가 wlfullclient.jar을 포함 할 필요가

. 제거 할 수는 없지만 직접 사용하지는 않습니다.

+0

발견 한 경우 답변을 제공해주십시오. 감사. – MeIr

+0

마찬가지로 당신 :) 아직 해결책이 없습니다. 나는 다른 프로젝트에서 일해 왔지만 그 공간으로 돌아 왔을 때이 문제를 해결하기 위해 재개 할 것입니다. –

2

우리는이 문제를 연구하고 발견 한 후에 같은 문제를 안고있었습니다. 나는 직감을 따라 Weblogic Server에 대한 문서를 조사했습니다.

대체 클라이언트를 찾고있었습니다. (거대한 크기 ~ 50메가바이트)

  • wlthint3client.jar 모두를위한 하나 개의 항아리에 - - IIOP 클라이언트
  • wlfullclient.jar에 대한 -

    • wlclient.jar에 대한 :

      은 기본적으로 세 가지 클라이언트 항아리가 있습니다 매우 얇은 t3 클라이언트

    마지막 옵션은 Weblogics 독점 t3 프로토콜을 지원하는 클라이언트의 슬림화 된 버전입니다. 기능면에서 몇 가지 단점이 있지만, 서버에서 ejb와 대화하는 것만하면됩니다.

    wlfullclient.jar 형식을 wlthint3client.jar로 전환하면 모두 NoClassDefFoundError이 사라졌습니다.

    여기에 Weblogic Documentation에 대한 링크가 있습니다.

  • +0

    예, wlfullclient를 wlthint3client.jar로 바꾸면이 문제가 해결됩니다. – Doss

    관련 문제