2012-11-09 2 views
4

수십 개의 XSD가있는 WSDL이 있고 웹 서비스를 사용하기 위해 WSDL에서 클라이언트 코드를 생성해야합니다. 웹 서비스의 소유자는 JAXB를 사용하여 Java를 사용하고 WSDL/XSD를 생성합니다. JAXB는 사용자 정의 된 바인딩을위한 "바인딩 파일"을 지정하고 소유자는 WSDL과 함께 사용할 XJB 파일 (JAXB 사용자 정의 바인딩 파일)을 생성했습니다.바인딩 파일을 사용하여 JAXB WSDL에서 C# 클라이언트 코드 생성

C#에서 클라이언트 코드를 생성해야하지만 svcutil 및 Visual Studio의 서비스 참조 추가에이 사용자 지정 바인딩 파일에 대한 조항이 없습니다. 바인딩 파일을 인수로 사용하는 Java 클라이언트 코드를 생성하는 도구가 있지만 C# 생성을위한 도구는 없습니다. 나는 XJB를 지정하지 않고 svcutil을 실행하려고 시도했지만 작동하도록 할 수는 없다. 나는 운이없는 광대 한 Google 수색을했다. 이 작품을 만드는 방법에 대한 아이디어가 있습니까?

+0

@Bogdan이 제안한 바에 따르면 바인딩 파일은 빨간 청어입니다. 내 문제는 몇 가지 유형이 여러 번 선언되는 네임 스페이스의 유효성 검사에있었습니다. Java에서 오는 WSDL (코드 생성이 Java 도구에서 작동하지만 svcutil에서는 작동하지 않기 때문에)으로 인해 발생하는지는 확실하지 않지만 .Net 클라이언트 코드 생성에 바인딩 파일이 필요하지는 않습니다. – koopaking3

답변

1

바인딩 선언을 제공함으로써 You can customize WSDLs하지만 이 자바 특정이며, WSDL에서 자바 코드를 생성하는 동안에 만 사용자 지정이 적용됩니다. 바인딩은 인라인 (XSD/WSDL에 임베드 됨) 또는 별도의 파일로 선언 될 수 있습니다. WSDL과 XSD가 "깨끗합니다"라고 생각하기 때문에 별도의 파일이 있습니다.

그러나 JXB 파일은 붉은 색 청어입니다. WSDL은 기술에 무관심한 것으로 간주됩니다. Java, C# 또는 무엇이든에 상관하지 않습니다. svcutil은 Java 바인딩을 무시하기 때문에 코드를 생성 할 수 있어야합니다.

svcutil이 어떤 오류를 던집니까? WSDL에 <type> 섹션이없는 경우 메시지를 이해하는 것이 어려워졌습니다. 수십 개의 XSD 파일을 언급했는데 WSDL에서이 파일을 어떻게 가져오고 가져 오기 작업을 수행합니까? Visual Studio에서 WSDL을 열면 유효성 검사 오류가 표시됩니다.

마지막으로 모든 것이 실패하면 wsimport과 같은 Java 도구에 JXB 파일을 포함한 모든 피드를 보내고 일부 Java 파일을 가져올 수 있습니다. deploy with Endpoint.publish을 빠르게 수행 한 다음 svcutil에 배포 된 주소 + ?wsdl을 지정하고 다른 결과가 표시되는지 확인하십시오.

+0

나는 바인딩 파일이 어떻게 작동 하는지를 설명하는 비슷한 기사를 실제로 발견했으며 XSD 파일에 인라인으로 바인딩 파일에 있던 내용을 추가했다. 여전히 작동하지 않았습니다. 오류는 모두 "내보내기 중에 생성 된 스키마에 대한 유효성 검사 오류가 있습니다"라는 줄을 따라 가며 오류를 설명합니다. 다른 오류는 "wsdl : portType을 가져올 수 없습니다."다음 "요소 'xxx'가 누락되었습니다." – koopaking3

+0

WSDL은 세 개의 XSD를 임포트/인듀트하고 나머지 세 XSD는 그 세 개에서 가져 오거나 포함됩니다.이 XSD는 몇 개의 다른 XSD 등을 계속 가져옵니다. 필자는 svcutil을 웹 서버로 지정했습니다. WSDL 및 XSD 폴더 구조, 과거에는 b/c를 사용하여 XSD의 경로와 위치를 더 잘 해석하는 것처럼 보였습니다. Visual Studio에서 ReSharper가 include에 대해 불평하지 않는 것을 제외하고는 유효성 검사 오류가 없습니다. "schemaLocation 속성을 확인할 수 없습니다" – koopaking3

+0

svcutil이 모든 XSD 가져 오기를 해결할 수없는 것처럼 보이므로 불완전한 WSDL을 얻습니다.Svcutil은 Java 바인딩에 관심이 없으므로 WSDL에 포함시키지 말고 WSDL의 모든 XSD를 복사하여 붙여 넣으십시오. 그리고 모든 것을 포함하는 하나의 큰 파일을 얻으십시오 (어쩌면 파일을 제공 한 사람에게 물어보십시오 대신 하나의 WSDL 만 제공). 그런 다음 WSDL을 svcutil에 공급하기 전에 유효성을 검사합니다 (WSDL 용으로 특별히 설계된 유효성 검사기를 사용하면 온라인에서 무료로 사용할 수 있습니다). 그것은 모든 파일을 해결할 수 없으므로 컨텍스트를 하나의 파일로 제한 할 가능성이 있습니다. – Bogdan

0

WSCF.blue을 시도해보고 이것이 유용 할 수 있는지 확인하십시오. JABX에 익숙하지 않다는 점에 유의하십시오. 그러나이 도구를 currerntly 사용하여 wsdl에서 C#으로 코드를 생성하고 있습니다.

+0

나는 WSCF.blue를 성공시키지 않으려 고 노력했다. 그래도 제안을 주셔서 감사합니다. – koopaking3

관련 문제