2010-11-23 6 views
1

Groovy WSClient와 Exchange 서버 wsdl을 연결하려고했지만 빈 파일 (wsdl을 구문 분석하려고 할 때)을 받기 때문에 연결할 수 없습니다. 나는 다음과 같은 라인을 사용하고 있습니다 :WSClient가 https에 Exchange wsdl을 연결할 수 없습니다.

Map mapClient=[ 
        "https.truststore":"/path/jssecacerts", 
        "https.truststore.pass":"changeit", 
        "https.keystore":"/path/cacerts", 
        "https.keystore.pass":"changeit" 
    ] 

    def proxy=new WSClient("https://mail.exchangeserver:443/ews/services.wsdl", this.class.classLoader) 
    proxy.setSSLProperties(mapClient) 
    proxy.setBasicAuthentication("user","password") 
    proxy.initialize() 

그것은 기본적으로 인해 빈 파일에 오류를 구문 분석 XML의() proxy.initialize에 실패합니다. 그러나 브라우저를 사용하면 완전한 wsdl 파일이 있습니다.

나는 SSL 핸드 셰이크가 아니기 때문에 시간이 걸린다. 그것은 내가 가진 첫 번째 오류가 ...

나는 이것이 어떤 이유로 잘못되었다 BasicAuthentication 생각합니다. 그 이유는 다음과 같습니다. 인증 라인을 주석 처리 할 수 ​​있고 동일한 결과를 얻을 수 있습니다.

힌트가 있습니까?

+0

WSClient 및 Groovy의 어떤 버전을 사용하고 있습니까? –

답변

2

다른 포럼에서 오답을 찾았습니다. 이것은 apache CXF (Groovy WSClient의 백엔드)의 알려진 제한 사항이며 wsdl!을 가져올 때가 아니라 webservice를 사용할 때만 자격 증명을 사용합니다! 해결 방법은 로컬 WSDL을로드하고 사용 WSClient을 구축하는 것입니다 : 교환 웹 서비스를 사용하는 사람들을 위해

new WSClient(this.class.classLoader.getResource("services.wsdl").toExternalForm(), 
      this.class.classLoader) 

, 그것은 완료되지 않습니다! 당신은뿐만 아니라 일부 오류를 수정해야합니다

  • 선을 대체 types.xsd를 해결

    • 다운로드 messages.xsd을하고 services.wsdl과 함께 types.xsd

      <xs:import namespace="http://www.w3.org/XML/1998/namespace"/> 
      
    마지막으로

    <xs:import namespace="http://www.w3.org/XML/1998/namespace" schemaLocation="http://www.w3.org/2001/xml.xsd"/> 
    

    및 의한

    는 부가 services.wsdl 해결 a wsdl : 서비스 태그

    <wsdl:service name="ExchangeWebService"> 
        <wsdl:port name="ExchangeWebPort" binding="tns:ExchangeServiceBinding"> 
         <soap:address location="https://myserver/EWS/exchange.asmx" /> 
        </wsdl:port> 
        </wsdl:service> 
    

    이제 정상적으로 초기화되어야합니다.

  • 관련 문제