2014-12-06 3 views
1

나는 자바로 WADL과 WSDL을 만드는 일을 맡아왔다. 그래도 몇 가지 질문이 있습니다.Java에서 WADL 및 WSDL 만들기?

먼저 WSDL은 클라이언트가 SOAP 시스템에서 정보를 요청하는 방법을 설명하는 XML 문서입니다. WADL은 클라이언트가 REST 시스템에서 정보를 요청하는 방법을 설명하는 XML 문서입니다. 그 둘은 맞습니까?

그렇다면 정확히 무엇을합니까? HTTP로 SOAP와 REST가 정상적으로 작동하는 방법을 이해하고 있지만, WADL과 WSDL의 요점은 무엇인지, 그 내용은 무엇인지, 그리고 Java에서 SOAP를 만드는 방법에 대해 고민하는 중입니다.

+0

작동하도록 WADL 프로젝트 자바 무엇 내가 만든 편안한 웹 서비스를위한 WADL을 만드는 동일한 작업. 그래서 WADL을 만들 수 있었습니까? –

답변

2

코드에 메서드가 있고 호출해야하는 경우 어떻게 호출합니까? 메서드 시그니처와 javadoc을 살펴 보겠습니다. 파라미터 이름이 무엇인지, 무엇을 의미하는지, 어떤 타입인지, javadoc은 값에 몇 가지 제한 사항이 있는지, 예외를 무시하면 어떤 예외인지를 알려줍니다.

이제 고려해보십시오. 웹 서비스. 먼저 SOAP부터 시작하겠습니다. 그것은 네트워크를 통해 노출 된 작업입니다. 이 짐승을 어떻게 부르니? 볼 수있는 것은 올바른 형식의 SOAP 페이로드를 보내야하는 엔드 포인트입니다. 그게 조작 이름을 알려주지? 매개 변수 이름과 유형? 당신의 가치에 대한 제한? 아니! 그것은 절대적으로 아무것도 알려주지 않습니다. 이 서비스를 호출하는 방법을 고객에게 알리는 방법이 필요합니다.

javadoc과 마찬가지로 문서를 만들 수 있습니다. 당신은 전화를하는 방법을 배우기 위해 그것을 사용합니다. 그러나 이것은 XML이 될 것입니다. XML 또는 Java로 프로그래밍합니까? Java로 프로그래밍 할 수 있지만 객체를 XML로 정렬 한 다음 XML의 응답을 Java 객체로 역 마샬링해야합니다. 그리고 그것을하는 모든 코드를 작성해야합니다. 설명서를 잘못 이해하면 잘못된 것을 작성하게되며 처음에는 제대로 작동하지 않습니다. 문서를 다시 읽고, XML을 조정하고, 디버깅하고, 다시 시도하고, 작업 할 때까지 반복해야합니다. 이는 비생산적입니다.

XML을 사용하여 시간을 낭비하지 않고 성취해야하는 실제 비즈니스에 집중할 수 있도록 코드를 생성 할 수있는 도구가 있다면 좋지 않을까요? WSDL을 입력하십시오.

WSDL은 SOAP 웹 서비스를 설명하는 방법입니다. 서명, 매개 변수 이름 및 유형, 제한 사항 및 문서화가 모두 하나로되어 있습니다. 여기서 유용한 것은 도구에 피드를 제공하고 도구가 XML 마샬링/언 마샬링을 처리하고 메소드 및 객체를 Java 코드에 노출하는 코드를 생성하도록 할 수 있다는 것입니다.

지금 나머지은 다른 짐승입니다. RESTful 웹 서비스를 호출하려면 "말하기"가 필요합니다. 따라야 할 "프로토콜"이 없습니다. 고객은 서비스를 사용하기 위해 MIME types을 이해해야합니다. 이것은 주로 코드를 읽고 이해하고 작성해야하는 문서입니다. 이것 역시 대부분 상용구 코드이므로 SOAP WSDL에서 제공하는 기능을 사용하는 사람들은 REST와 비슷한 것을 만들기로 결정했다. 이것은 WADL입니다. WSDL은 SOAP의 경우와 같이

WADL이, REST에 대해 동일한 목적을 제공 (주는 REST는 SOAP을 할 수있는 다른 방법보다 더 비록 그래서 당신은 당신이 SOAP했던 것을, REST와 같은 일을 할 때 RESTful 웹 서비스 (which is hypermedia driven)를 WebAPI로 축소하면됩니다.또는 JAX-RSJAX-WS 프레임 워크를 사용할 수 있습니다 (즉, "이 contract-first"라고) WSDL을을 생성하고 당신이 지식이있는 경우 WADLs, 당신은 손으로 할 수있는 방법에 관해서는

, 당신에게 처음으로 서비스를 작성하고 프레임 워크를 생성해야 자동으로 WSDL을 사용자에게 제공합니다 ("contract-last"이라고 함).

+0

그런 좋은 설명에 감사드립니다. "contract-last"에 대해 언급 한 마지막 부분에 관해서는, 이미 만들어진 편안한 웹 서비스에 대해 WADL을 만드는 방법을 알려주시겠습니까? 실제로 저에게 편리한 웹 서비스를 게시하고자하는 저장소 인 WSO2가 있습니다. WADL은 게시 목적으로 설계 되었습니까? –

0

몇 점.

엄밀히 말하면 RESTful 웹 서비스는 서비스가 아닙니다. 그건 그냥 서버와의 상호 작용을 참조하십시오.

초기에는 RPC (원격 프로 시저 호출)가 있었기 때문에 원격 메소드를 이름, 매개 변수 등으로 설명했습니다. XML 스키마가 장면에 나타나면 매개 변수를 정의하는 대신 메소드 (문서 스타일)에 XML "문서"를 보내면됩니다. Java는 매개 변수를 XML 문서 (JAX-WS)에 매핑하며 이는 Java (문서/리터럴) 스타일로 WS를 수행하는 데 가장 "권장되는"방법입니다.

REST에는 서비스가 없지만 CRUD (읽기/업데이트/삭제) 될 수있는 리소스가 있습니다. 대부분의 경우 HTTP 프로토콜이 사용됩니다.

WSDL 1.1은 WS를 설명하는 "사실상"의 표준이고 하나는 Java에서 지원됩니다. WSDL 2.0이 업계 표준이지만 WSDL 2.0은 표준입니다.

http 바인딩은 http 바인딩을 통해 HTTP 서비스 (리소스가 아님)를 설명하는 데 사용될 수 있습니다. WSDL 2.0은 모든 HTTP 작업을 지원하는 반면 WSDL 1.1은 HTTP 용어 지원 (GET 및 POST 만 가능)이 제한적입니다.

WADL은 SUN Microsystems가 REST에 대해 일종의 WSDL을 제안한 것입니다. WADL은 훨씬 간단합니다.

그래서 차이점은 원격 실행 (WS/WSDL)과 리소스 (REST/WADL)입니다.

Java 관련 JAX-WS로 서비스를 프로그래밍하는 경우 일반적으로 수동으로 WSDL을 만들 필요가 없으므로 JAX-WS가 코드에서 자동으로 생성합니다.

JAX-WS는 WSDL 2.0을 지원하지 않습니다. Apache Woden을 사용하여 구문 분석하거나 tinyWSDL을 사용하여 구문 분석/생성 할 수 있습니다. 또한이 http://ws.apache.org/woden/ http://sourceforge.net/projects/tinywsdl/

내가 어떤 작업을하고, (2 개 이상의 링크를 게시 할 수 없습니다)

건배 WADL로

D.