2010-01-19 12 views
7

J2SE (데스크톱) 응용 프로그램에서 액세스 할 때 제대로 작동하는 웹 서비스가 있습니다. 이 서비스를 액세스하기 위해 따라야 할 :웹 서비스 용 웹 클라이언트

  1. 은 그때 생성 된 클래스를 사용하여 서비스를 생성하고 WSDL의 operations.It 중 하나를 실행 자바 wsimport의 도구
  2. 를 사용하여 WSDL 링크로 스텁 클래스를 생성은 다음과 같습니다

    MyWebServiceService webService = new MyWebServiceService();

    MyWebService port = webService.getMyWebServicePort();

    webService.run ("XYZ");

독립형 응용 프로그램에서 사용하면 슬프지만 잘 작동합니다. 내가 생성 된 스텁을 사용하여 같은 방법으로하지만, 서블릿 - 클라이언트에서 웹 서비스에 액세스하려고하면 오류 다음 얻을 하지만 ... : 나는하지만 구글 오랜 시간을 검색 한

java.lang.ClassCastException: com.sun.xml.bind.v2.runtime.JAXBContextImpl cannot be cast to com.sun.xml.bind.api.JAXBRIContext 
org.jboss.ws.metadata.umdm.EndpointMetaData.eagerInitializeAccessors(EndpointMetaData.java:686) 
org.jboss.ws.metadata.umdm.EndpointMetaData.initializeInternal(EndpointMetaData.java:567) 
org.jboss.ws.metadata.umdm.EndpointMetaData.eagerInitialize(EndpointMetaData.java:553) 
org.jboss.ws.metadata.builder.jaxws.JAXWSClientMetaDataBuilder.rebuildEndpointMetaData(JAXWSClientMetaDataBuilder.java:314) 
org.jboss.ws.core.jaxws.spi.ServiceDelegateImpl.getPortInternal(ServiceDelegateImpl.java:271) 
org.jboss.ws.core.jaxws.spi.ServiceDelegateImpl.getPort(ServiceDelegateImpl.java:202) 
javax.xml.ws.Service.getPort(Service.java:143... 

아무것도 도움이 주제를 발견 . 일부 주제는 서블릿에서 웹 서비스에 액세스하는 예를 보여,하지만 불행히도 나는이 작업을 수행 할 수 없습니다 ... (그리고 문제의 원인이 무엇인지 모르는

응용 프로그램 서버 :. 보스 4.2.3GA이

인가 어떻게하면 서블릿에서 웹 서비스에 연결할 수 있습니까? 어떻게합니까?

@WebServiceRef 주석을 사용해 보았지만 웹 컨테이너가 웹 서비스 스텁을 삽입 할 수없는 것처럼 보입니다. 스텁 클래스는 이미 wsimport 도구에서 생성되었으며이 클래스를 사용하여 웹 서비스에 액세스 할 수 있기 때문에

wsimport -keep -p com.myhost.ws http://www.myhost.com/services/MyWebService?wsdl 
+0

... –

+0

어떤 버전은 너 사용하고있어? JAX-WS RI의 버전은 무엇입니까? 당신은 전쟁에서 JAX-RI를 포장합니까? –

+0

1. jdk 1.6.0_13 2. RI가 '원격 인터페이스'인 경우 버전을 확인하는 방법을 모르겠습니다. 3. 예, RI도 패키지로 제공됩니다. –

답변

10

당신이 당신의 클래스 경로는 버전이 다른 여러 JAX-B 항아리를 포함하지 않는 확인 했 :210 개 스텁 클래스는 다음 명령을 사용하여 생성 된? 예외는 저에게 버전 충돌 같이 보입니다. 응용 프로그램 서버에는 일반적으로 웹 응용 프로그램 클래스 경로 앞에 항상 추가되는 JARS를 보유하는 일종의 "승인 된"lib 디렉토리가 있습니다. 애플리케이션 서버에 충돌하는 JAX-B 구현이있을 수 있습니까?

Maven을 사용하여 애플리케이션을 패키징하는 경우 전이 의존성이 원하지 않는 JAX-B Jar 파일을 가져 오지 않는지 확인하십시오 (이를 확인하려면 'mvn dependency : tree'를 사용하십시오).

1

확실히 JAXB와 충돌이있는 것 같습니다. 전쟁에서 가지고있는 jaxb 버전을 확인하고 Jboss가 lib 디렉토리에있을 수있는 jaxb jar와 충돌하지 않는지 확인하십시오.

+0

$ JBOSS_HOME/server/default/lib 및 $ JBOSS_HOME/lib/endorsed 디렉토리에서 jboss-jaxws.jar 라이브러리를 제거하면이 문제가 해결되었습니다. 이 링크는 도움이되었습니다 : http://www.bluefishgroup.com/library/2007/ dfs-web-services-client-programming 소개/ 많은 도움에 감사드립니다! –

1

Addytionally jbossws 네이티브 라이브러리가 제대로 설치 한 다음 패키지가 JBOSS_HOME/lib 디렉토리/endorsed 디렉토리에서 삭제해야하는 경우 :

  • JBoss에 jaxrpc.jar을
  • JBoss에 잭스 - WS-ext.jar
  • jboss-jaxws.jar
  • jboss-saaj.jar

그렇지 않으면 EJB 또는 서블릿을 통해 웹 서비스에 연결할 수 없습니다. 자바의이 https://jax-ws.dev.java.net/guide/Using_JAX_WS_2_1_with_JavaSE6.html 이, 나는 그것을 확인해 보겠습니다 문제의 루트가 될 수 있습니다 발견

관련 문제